# gutenberg/trunk/build/scripts/editor/index.js

Gutenberg, version trunk. 126,794 lines.

- Page: https://pluginprobe.com/plugins/gutenberg/trunk/code/build/scripts/editor/index.js
- Raw: https://pluginprobe.com/plugins/gutenberg/trunk/raw/build/scripts/editor/index.js
- Modified: 2026-09-30T09:29:30+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/gutenberg/trunk/code/build/scripts/editor/index.js#L10-L20`.

```javascript
(function() {
"use strict";
var wp;
(wp ||= {}).editor = (() => {
  var __create = Object.create;
  var __defProp = Object.defineProperty;
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  var __getOwnPropNames = Object.getOwnPropertyNames;
  var __getProtoOf = Object.getPrototypeOf;
  var __hasOwnProp = Object.prototype.hasOwnProperty;
  var __require = /* @__PURE__ */ ((x2) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x2, {
    get: (a2, b2) => (typeof require !== "undefined" ? require : a2)[b2]
  }) : x2)(function(x2) {
    if (typeof require !== "undefined") return require.apply(this, arguments);
    throw Error('Dynamic require of "' + x2 + '" is not supported');
  });
  var __commonJS = (cb, mod) => function __require4() {
    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
  };
  var __export = (target, all) => {
    for (var name2 in all)
      __defProp(target, name2, { get: all[name2], enumerable: true });
  };
  var __copyProps = (to2, from, except, desc) => {
    if (from && typeof from === "object" || typeof from === "function") {
      for (let key of __getOwnPropNames(from))
        if (!__hasOwnProp.call(to2, key) && key !== except)
          __defProp(to2, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
    }
    return to2;
  };
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
    // If the importer is in node compatibility mode or this is not an ESM
    // file that has been converted to a CommonJS file using a Babel-
    // compatible transform (i.e. "__esModule" has not been set), then set
    // "default" to the CommonJS "module.exports" for node compatibility.
    isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
    mod
  ));
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);

  // package-external:@wordpress/data
  var require_data = __commonJS({
    "package-external:@wordpress/data"(exports, module) {
      module.exports = window.wp.data;
    }
  });

  // package-external:@wordpress/core-data
  var require_core_data = __commonJS({
    "package-external:@wordpress/core-data"(exports, module) {
      module.exports = window.wp.coreData;
    }
  });

  // package-external:@wordpress/element
  var require_element = __commonJS({
    "package-external:@wordpress/element"(exports, module) {
      module.exports = window.wp.element;
    }
  });

  // package-external:@wordpress/compose
  var require_compose = __commonJS({
    "package-external:@wordpress/compose"(exports, module) {
      module.exports = window.wp.compose;
    }
  });

  // package-external:@wordpress/hooks
  var require_hooks = __commonJS({
    "package-external:@wordpress/hooks"(exports, module) {
      module.exports = window.wp.hooks;
    }
  });

  // package-external:@wordpress/block-editor
  var require_block_editor = __commonJS({
    "package-external:@wordpress/block-editor"(exports, module) {
      module.exports = window.wp.blockEditor;
    }
  });

  // package-external:@wordpress/blocks
  var require_blocks = __commonJS({
    "package-external:@wordpress/blocks"(exports, module) {
      module.exports = window.wp.blocks;
    }
  });

  // package-external:@wordpress/date
  var require_date = __commonJS({
    "package-external:@wordpress/date"(exports, module) {
      module.exports = window.wp.date;
    }
  });

  // package-external:@wordpress/url
  var require_url = __commonJS({
    "package-external:@wordpress/url"(exports, module) {
      module.exports = window.wp.url;
    }
  });

  // package-external:@wordpress/deprecated
  var require_deprecated = __commonJS({
    "package-external:@wordpress/deprecated"(exports, module) {
      module.exports = window.wp.deprecated;
    }
  });

  // package-external:@wordpress/preferences
  var require_preferences = __commonJS({
    "package-external:@wordpress/preferences"(exports, module) {
      module.exports = window.wp.preferences;
    }
  });

  // package-external:@wordpress/private-apis
  var require_private_apis = __commonJS({
    "package-external:@wordpress/private-apis"(exports, module) {
      module.exports = window.wp.privateApis;
    }
  });

  // package-external:@wordpress/style-engine
  var require_style_engine = __commonJS({
    "package-external:@wordpress/style-engine"(exports, module) {
      module.exports = window.wp.styleEngine;
    }
  });

  // package-external:@wordpress/i18n
  var require_i18n = __commonJS({
    "package-external:@wordpress/i18n"(exports, module) {
      module.exports = window.wp.i18n;
    }
  });

  // node_modules/fast-deep-equal/es6/index.js
  var require_es6 = __commonJS({
    "node_modules/fast-deep-equal/es6/index.js"(exports, module) {
      "use strict";
      module.exports = function equal(a2, b2) {
        if (a2 === b2) return true;
        if (a2 && b2 && typeof a2 == "object" && typeof b2 == "object") {
          if (a2.constructor !== b2.constructor) return false;
          var length2, i2, keys;
          if (Array.isArray(a2)) {
            length2 = a2.length;
            if (length2 != b2.length) return false;
            for (i2 = length2; i2-- !== 0; )
              if (!equal(a2[i2], b2[i2])) return false;
            return true;
          }
          if (a2 instanceof Map && b2 instanceof Map) {
            if (a2.size !== b2.size) return false;
            for (i2 of a2.entries())
              if (!b2.has(i2[0])) return false;
            for (i2 of a2.entries())
              if (!equal(i2[1], b2.get(i2[0]))) return false;
            return true;
          }
          if (a2 instanceof Set && b2 instanceof Set) {
            if (a2.size !== b2.size) return false;
            for (i2 of a2.entries())
              if (!b2.has(i2[0])) return false;
            return true;
          }
          if (ArrayBuffer.isView(a2) && ArrayBuffer.isView(b2)) {
            length2 = a2.length;
            if (length2 != b2.length) return false;
            for (i2 = length2; i2-- !== 0; )
              if (a2[i2] !== b2[i2]) return false;
            return true;
          }
          if (a2.constructor === RegExp) return a2.source === b2.source && a2.flags === b2.flags;
          if (a2.valueOf !== Object.prototype.valueOf) return a2.valueOf() === b2.valueOf();
          if (a2.toString !== Object.prototype.toString) return a2.toString() === b2.toString();
          keys = Object.keys(a2);
          length2 = keys.length;
          if (length2 !== Object.keys(b2).length) return false;
          for (i2 = length2; i2-- !== 0; )
            if (!Object.prototype.hasOwnProperty.call(b2, keys[i2])) return false;
          for (i2 = length2; i2-- !== 0; ) {
            var key = keys[i2];
            if (!equal(a2[key], b2[key])) return false;
          }
          return true;
        }
        return a2 !== a2 && b2 !== b2;
      };
    }
  });

  // node_modules/deepmerge/dist/cjs.js
  var require_cjs = __commonJS({
    "node_modules/deepmerge/dist/cjs.js"(exports, module) {
      "use strict";
      var isMergeableObject = function isMergeableObject2(value) {
        return isNonNullObject(value) && !isSpecial(value);
      };
      function isNonNullObject(value) {
        return !!value && typeof value === "object";
      }
      function isSpecial(value) {
        var stringValue = Object.prototype.toString.call(value);
        return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value);
      }
      var canUseSymbol = typeof Symbol === "function" && Symbol.for;
      var REACT_ELEMENT_TYPE = canUseSymbol ? /* @__PURE__ */ Symbol.for("react.element") : 60103;
      function isReactElement(value) {
        return value.$$typeof === REACT_ELEMENT_TYPE;
      }
      function emptyTarget(val) {
        return Array.isArray(val) ? [] : {};
      }
      function cloneUnlessOtherwiseSpecified(value, options) {
        return options.clone !== false && options.isMergeableObject(value) ? deepmerge2(emptyTarget(value), value, options) : value;
      }
      function defaultArrayMerge(target, source, options) {
        return target.concat(source).map(function(element) {
          return cloneUnlessOtherwiseSpecified(element, options);
        });
      }
      function getMergeFunction(key, options) {
        if (!options.customMerge) {
          return deepmerge2;
        }
        var customMerge = options.customMerge(key);
        return typeof customMerge === "function" ? customMerge : deepmerge2;
      }
      function getEnumerableOwnPropertySymbols(target) {
        return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol3) {
          return Object.propertyIsEnumerable.call(target, symbol3);
        }) : [];
      }
      function getKeys2(target) {
        return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));
      }
      function propertyIsOnObject(object, property) {
        try {
          return property in object;
        } catch (_) {
          return false;
        }
      }
      function propertyIsUnsafe(target, key) {
        return propertyIsOnObject(target, key) && !(Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key));
      }
      function mergeObject(target, source, options) {
        var destination = {};
        if (options.isMergeableObject(target)) {
          getKeys2(target).forEach(function(key) {
            destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
          });
        }
        getKeys2(source).forEach(function(key) {
          if (propertyIsUnsafe(target, key)) {
            return;
          }
          if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {
            destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
          } else {
            destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
          }
        });
        return destination;
      }
      function deepmerge2(target, source, options) {
        options = options || {};
        options.arrayMerge = options.arrayMerge || defaultArrayMerge;
        options.isMergeableObject = options.isMergeableObject || isMergeableObject;
        options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;
        var sourceIsArray = Array.isArray(source);
        var targetIsArray = Array.isArray(target);
        var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
        if (!sourceAndTargetTypesMatch) {
          return cloneUnlessOtherwiseSpecified(source, options);
        } else if (sourceIsArray) {
          return options.arrayMerge(target, source, options);
        } else {
          return mergeObject(target, source, options);
        }
      }
      deepmerge2.all = function deepmergeAll(array, options) {
        if (!Array.isArray(array)) {
          throw new Error("first argument should be an array");
        }
        return array.reduce(function(prev, next) {
          return deepmerge2(prev, next, options);
        }, {});
      };
      var deepmerge_1 = deepmerge2;
      module.exports = deepmerge_1;
    }
  });

  // package-external:@wordpress/a11y
  var require_a11y = __commonJS({
    "package-external:@wordpress/a11y"(exports, module) {
      module.exports = window.wp.a11y;
    }
  });

  // package-external:@wordpress/api-fetch
  var require_api_fetch = __commonJS({
    "package-external:@wordpress/api-fetch"(exports, module) {
      module.exports = window.wp.apiFetch;
    }
  });

  // package-external:@wordpress/escape-html
  var require_escape_html = __commonJS({
    "package-external:@wordpress/escape-html"(exports, module) {
      module.exports = window.wp.escapeHtml;
    }
  });

  // package-external:@wordpress/warning
  var require_warning = __commonJS({
    "package-external:@wordpress/warning"(exports, module) {
      module.exports = window.wp.warning;
    }
  });

  // package-external:@wordpress/notices
  var require_notices = __commonJS({
    "package-external:@wordpress/notices"(exports, module) {
      module.exports = window.wp.notices;
    }
  });

  // package-external:@wordpress/html-entities
  var require_html_entities = __commonJS({
    "package-external:@wordpress/html-entities"(exports, module) {
      module.exports = window.wp.htmlEntities;
    }
  });

  // package-external:@wordpress/primitives
  var require_primitives = __commonJS({
    "package-external:@wordpress/primitives"(exports, module) {
      module.exports = window.wp.primitives;
    }
  });

  // vendor-external:react/jsx-runtime
  var require_jsx_runtime = __commonJS({
    "vendor-external:react/jsx-runtime"(exports, module) {
      module.exports = window.ReactJSXRuntime;
    }
  });

  // package-external:@wordpress/components
  var require_components = __commonJS({
    "package-external:@wordpress/components"(exports, module) {
      module.exports = window.wp.components;
    }
  });

  // vendor-external:react
  var require_react = __commonJS({
    "vendor-external:react"(exports, module) {
      module.exports = window.React;
    }
  });

  // vendor-external:react-dom
  var require_react_dom = __commonJS({
    "vendor-external:react-dom"(exports, module) {
      module.exports = window.ReactDOM;
    }
  });

  // node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js
  var require_use_sync_external_store_shim_development = __commonJS({
    "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) {
      "use strict";
      (function() {
        function is2(x2, y3) {
          return x2 === y3 && (0 !== x2 || 1 / x2 === 1 / y3) || x2 !== x2 && y3 !== y3;
        }
        function useSyncExternalStore$2(subscribe5, getSnapshot2) {
          didWarnOld18Alpha || void 0 === React208.startTransition || (didWarnOld18Alpha = true, console.error(
            "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."
          ));
          var value = getSnapshot2();
          if (!didWarnUncachedGetSnapshot) {
            var cachedValue = getSnapshot2();
            objectIs(value, cachedValue) || (console.error(
              "The result of getSnapshot should be cached to avoid an infinite loop"
            ), didWarnUncachedGetSnapshot = true);
          }
          cachedValue = useState178({
            inst: { value, getSnapshot: getSnapshot2 }
          });
          var inst = cachedValue[0].inst, forceUpdate = cachedValue[1];
          useLayoutEffect21(
            function() {
              inst.value = value;
              inst.getSnapshot = getSnapshot2;
              checkIfSnapshotChanged(inst) && forceUpdate({ inst });
            },
            [subscribe5, value, getSnapshot2]
          );
          useEffect138(
            function() {
              checkIfSnapshotChanged(inst) && forceUpdate({ inst });
              return subscribe5(function() {
                checkIfSnapshotChanged(inst) && forceUpdate({ inst });
              });
            },
            [subscribe5]
          );
          useDebugValue2(value);
          return value;
        }
        function checkIfSnapshotChanged(inst) {
          var latestGetSnapshot = inst.getSnapshot;
          inst = inst.value;
          try {
            var nextValue = latestGetSnapshot();
            return !objectIs(inst, nextValue);
          } catch (error2) {
            return true;
          }
        }
        function useSyncExternalStore$1(subscribe5, getSnapshot2) {
          return getSnapshot2();
        }
        "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
        var React208 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is2, useState178 = React208.useState, useEffect138 = React208.useEffect, useLayoutEffect21 = React208.useLayoutEffect, useDebugValue2 = React208.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2;
        exports.useSyncExternalStore = void 0 !== React208.useSyncExternalStore ? React208.useSyncExternalStore : shim;
        "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
      })();
    }
  });

  // node_modules/use-sync-external-store/shim/index.js
  var require_shim = __commonJS({
    "node_modules/use-sync-external-store/shim/index.js"(exports, module) {
      "use strict";
      if (false) {
        module.exports = null;
      } else {
        module.exports = require_use_sync_external_store_shim_development();
      }
    }
  });

  // node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js
  var require_with_selector_development = __commonJS({
    "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"(exports) {
      "use strict";
      (function() {
        function is2(x2, y3) {
          return x2 === y3 && (0 !== x2 || 1 / x2 === 1 / y3) || x2 !== x2 && y3 !== y3;
        }
        "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
        var React208 = require_react(), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is2, useSyncExternalStore7 = shim.useSyncExternalStore, useRef167 = React208.useRef, useEffect138 = React208.useEffect, useMemo192 = React208.useMemo, useDebugValue2 = React208.useDebugValue;
        exports.useSyncExternalStoreWithSelector = function(subscribe5, getSnapshot2, getServerSnapshot2, selector2, isEqual2) {
          var instRef = useRef167(null);
          if (null === instRef.current) {
            var inst = { hasValue: false, value: null };
            instRef.current = inst;
          } else inst = instRef.current;
          instRef = useMemo192(
            function() {
              function memoizedSelector(nextSnapshot) {
                if (!hasMemo) {
                  hasMemo = true;
                  memoizedSnapshot = nextSnapshot;
                  nextSnapshot = selector2(nextSnapshot);
                  if (void 0 !== isEqual2 && inst.hasValue) {
                    var currentSelection = inst.value;
                    if (isEqual2(currentSelection, nextSnapshot))
                      return memoizedSelection = currentSelection;
                  }
                  return memoizedSelection = nextSnapshot;
                }
                currentSelection = memoizedSelection;
                if (objectIs(memoizedSnapshot, nextSnapshot))
                  return currentSelection;
                var nextSelection = selector2(nextSnapshot);
                if (void 0 !== isEqual2 && isEqual2(currentSelection, nextSelection))
                  return memoizedSnapshot = nextSnapshot, currentSelection;
                memoizedSnapshot = nextSnapshot;
                return memoizedSelection = nextSelection;
              }
              var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot2 ? null : getServerSnapshot2;
              return [
                function() {
                  return memoizedSelector(getSnapshot2());
                },
                null === maybeGetServerSnapshot ? void 0 : function() {
                  return memoizedSelector(maybeGetServerSnapshot());
                }
              ];
            },
            [getSnapshot2, getServerSnapshot2, selector2, isEqual2]
          );
          var value = useSyncExternalStore7(subscribe5, instRef[0], instRef[1]);
          useEffect138(
            function() {
              inst.hasValue = true;
              inst.value = value;
            },
            [value]
          );
          useDebugValue2(value);
          return value;
        };
        "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
      })();
    }
  });

  // node_modules/use-sync-external-store/shim/with-selector.js
  var require_with_selector = __commonJS({
    "node_modules/use-sync-external-store/shim/with-selector.js"(exports, module) {
      "use strict";
      if (false) {
        module.exports = null;
      } else {
        module.exports = require_with_selector_development();
      }
    }
  });

  // package-external:@wordpress/theme
  var require_theme = __commonJS({
    "package-external:@wordpress/theme"(exports, module) {
      module.exports = window.wp.theme;
    }
  });

  // package-external:@wordpress/patterns
  var require_patterns = __commonJS({
    "package-external:@wordpress/patterns"(exports, module) {
      module.exports = window.wp.patterns;
    }
  });

  // package-external:@wordpress/blob
  var require_blob = __commonJS({
    "package-external:@wordpress/blob"(exports, module) {
      module.exports = window.wp.blob;
    }
  });

  // package-external:@wordpress/media-utils
  var require_media_utils = __commonJS({
    "package-external:@wordpress/media-utils"(exports, module) {
      module.exports = window.wp.mediaUtils;
    }
  });

  // node_modules/remove-accents/index.js
  var require_remove_accents = __commonJS({
    "node_modules/remove-accents/index.js"(exports, module) {
      var characterMap = {
        "\xC0": "A",
        "\xC1": "A",
        "\xC2": "A",
        "\xC3": "A",
        "\xC4": "A",
        "\xC5": "A",
        "\u1EA4": "A",
        "\u1EAE": "A",
        "\u1EB2": "A",
        "\u1EB4": "A",
        "\u1EB6": "A",
        "\xC6": "AE",
        "\u1EA6": "A",
        "\u1EB0": "A",
        "\u0202": "A",
        "\u1EA2": "A",
        "\u1EA0": "A",
        "\u1EA8": "A",
        "\u1EAA": "A",
        "\u1EAC": "A",
        "\xC7": "C",
        "\u1E08": "C",
        "\xC8": "E",
        "\xC9": "E",
        "\xCA": "E",
        "\xCB": "E",
        "\u1EBE": "E",
        "\u1E16": "E",
        "\u1EC0": "E",
        "\u1E14": "E",
        "\u1E1C": "E",
        "\u0206": "E",
        "\u1EBA": "E",
        "\u1EBC": "E",
        "\u1EB8": "E",
        "\u1EC2": "E",
        "\u1EC4": "E",
        "\u1EC6": "E",
        "\xCC": "I",
        "\xCD": "I",
        "\xCE": "I",
        "\xCF": "I",
        "\u1E2E": "I",
        "\u020A": "I",
        "\u1EC8": "I",
        "\u1ECA": "I",
        "\xD0": "D",
        "\xD1": "N",
        "\xD2": "O",
        "\xD3": "O",
        "\xD4": "O",
        "\xD5": "O",
        "\xD6": "O",
        "\xD8": "O",
        "\u1ED0": "O",
        "\u1E4C": "O",
        "\u1E52": "O",
        "\u020E": "O",
        "\u1ECE": "O",
        "\u1ECC": "O",
        "\u1ED4": "O",
        "\u1ED6": "O",
        "\u1ED8": "O",
        "\u1EDC": "O",
        "\u1EDE": "O",
        "\u1EE0": "O",
        "\u1EDA": "O",
        "\u1EE2": "O",
        "\xD9": "U",
        "\xDA": "U",
        "\xDB": "U",
        "\xDC": "U",
        "\u1EE6": "U",
        "\u1EE4": "U",
        "\u1EEC": "U",
        "\u1EEE": "U",
        "\u1EF0": "U",
        "\xDD": "Y",
        "\xE0": "a",
        "\xE1": "a",
        "\xE2": "a",
        "\xE3": "a",
        "\xE4": "a",
        "\xE5": "a",
        "\u1EA5": "a",
        "\u1EAF": "a",
        "\u1EB3": "a",
        "\u1EB5": "a",
        "\u1EB7": "a",
        "\xE6": "ae",
        "\u1EA7": "a",
        "\u1EB1": "a",
        "\u0203": "a",
        "\u1EA3": "a",
        "\u1EA1": "a",
        "\u1EA9": "a",
        "\u1EAB": "a",
        "\u1EAD": "a",
        "\xE7": "c",
        "\u1E09": "c",
        "\xE8": "e",
        "\xE9": "e",
        "\xEA": "e",
        "\xEB": "e",
        "\u1EBF": "e",
        "\u1E17": "e",
        "\u1EC1": "e",
        "\u1E15": "e",
        "\u1E1D": "e",
        "\u0207": "e",
        "\u1EBB": "e",
        "\u1EBD": "e",
        "\u1EB9": "e",
        "\u1EC3": "e",
        "\u1EC5": "e",
        "\u1EC7": "e",
        "\xEC": "i",
        "\xED": "i",
        "\xEE": "i",
        "\xEF": "i",
        "\u1E2F": "i",
        "\u020B": "i",
        "\u1EC9": "i",
        "\u1ECB": "i",
        "\xF0": "d",
        "\xF1": "n",
        "\xF2": "o",
        "\xF3": "o",
        "\xF4": "o",
        "\xF5": "o",
        "\xF6": "o",
        "\xF8": "o",
        "\u1ED1": "o",
        "\u1E4D": "o",
        "\u1E53": "o",
        "\u020F": "o",
        "\u1ECF": "o",
        "\u1ECD": "o",
        "\u1ED5": "o",
        "\u1ED7": "o",
        "\u1ED9": "o",
        "\u1EDD": "o",
        "\u1EDF": "o",
        "\u1EE1": "o",
        "\u1EDB": "o",
        "\u1EE3": "o",
        "\xF9": "u",
        "\xFA": "u",
        "\xFB": "u",
        "\xFC": "u",
        "\u1EE7": "u",
        "\u1EE5": "u",
        "\u1EED": "u",
        "\u1EEF": "u",
        "\u1EF1": "u",
        "\xFD": "y",
        "\xFF": "y",
        "\u0100": "A",
        "\u0101": "a",
        "\u0102": "A",
        "\u0103": "a",
        "\u0104": "A",
        "\u0105": "a",
        "\u0106": "C",
        "\u0107": "c",
        "\u0108": "C",
        "\u0109": "c",
        "\u010A": "C",
        "\u010B": "c",
        "\u010C": "C",
        "\u010D": "c",
        "C\u0306": "C",
        "c\u0306": "c",
        "\u010E": "D",
        "\u010F": "d",
        "\u0110": "D",
        "\u0111": "d",
        "\u0112": "E",
        "\u0113": "e",
        "\u0114": "E",
        "\u0115": "e",
        "\u0116": "E",
        "\u0117": "e",
        "\u0118": "E",
        "\u0119": "e",
        "\u011A": "E",
        "\u011B": "e",
        "\u011C": "G",
        "\u01F4": "G",
        "\u011D": "g",
        "\u01F5": "g",
        "\u011E": "G",
        "\u011F": "g",
        "\u0120": "G",
        "\u0121": "g",
        "\u0122": "G",
        "\u0123": "g",
        "\u0124": "H",
        "\u0125": "h",
        "\u0126": "H",
        "\u0127": "h",
        "\u1E2A": "H",
        "\u1E2B": "h",
        "\u0128": "I",
        "\u0129": "i",
        "\u012A": "I",
        "\u012B": "i",
        "\u012C": "I",
        "\u012D": "i",
        "\u012E": "I",
        "\u012F": "i",
        "\u0130": "I",
        "\u0131": "i",
        "\u0132": "IJ",
        "\u0133": "ij",
        "\u0134": "J",
        "\u0135": "j",
        "\u0136": "K",
        "\u0137": "k",
        "\u1E30": "K",
        "\u1E31": "k",
        "K\u0306": "K",
        "k\u0306": "k",
        "\u0139": "L",
        "\u013A": "l",
        "\u013B": "L",
        "\u013C": "l",
        "\u013D": "L",
        "\u013E": "l",
        "\u013F": "L",
        "\u0140": "l",
        "\u0141": "l",
        "\u0142": "l",
        "\u1E3E": "M",
        "\u1E3F": "m",
        "M\u0306": "M",
        "m\u0306": "m",
        "\u0143": "N",
        "\u0144": "n",
        "\u0145": "N",
        "\u0146": "n",
        "\u0147": "N",
        "\u0148": "n",
        "\u0149": "n",
        "N\u0306": "N",
        "n\u0306": "n",
        "\u014C": "O",
        "\u014D": "o",
        "\u014E": "O",
        "\u014F": "o",
        "\u0150": "O",
        "\u0151": "o",
        "\u0152": "OE",
        "\u0153": "oe",
        "P\u0306": "P",
        "p\u0306": "p",
        "\u0154": "R",
        "\u0155": "r",
        "\u0156": "R",
        "\u0157": "r",
        "\u0158": "R",
        "\u0159": "r",
        "R\u0306": "R",
        "r\u0306": "r",
        "\u0212": "R",
        "\u0213": "r",
        "\u015A": "S",
        "\u015B": "s",
        "\u015C": "S",
        "\u015D": "s",
        "\u015E": "S",
        "\u0218": "S",
        "\u0219": "s",
        "\u015F": "s",
        "\u0160": "S",
        "\u0161": "s",
        "\u0162": "T",
        "\u0163": "t",
        "\u021B": "t",
        "\u021A": "T",
        "\u0164": "T",
        "\u0165": "t",
        "\u0166": "T",
        "\u0167": "t",
        "T\u0306": "T",
        "t\u0306": "t",
        "\u0168": "U",
        "\u0169": "u",
        "\u016A": "U",
        "\u016B": "u",
        "\u016C": "U",
        "\u016D": "u",
        "\u016E": "U",
        "\u016F": "u",
        "\u0170": "U",
        "\u0171": "u",
        "\u0172": "U",
        "\u0173": "u",
        "\u0216": "U",
        "\u0217": "u",
        "V\u0306": "V",
        "v\u0306": "v",
        "\u0174": "W",
        "\u0175": "w",
        "\u1E82": "W",
        "\u1E83": "w",
        "X\u0306": "X",
        "x\u0306": "x",
        "\u0176": "Y",
        "\u0177": "y",
        "\u0178": "Y",
        "Y\u0306": "Y",
        "y\u0306": "y",
        "\u0179": "Z",
        "\u017A": "z",
        "\u017B": "Z",
        "\u017C": "z",
        "\u017D": "Z",
        "\u017E": "z",
        "\u017F": "s",
        "\u0192": "f",
        "\u01A0": "O",
        "\u01A1": "o",
        "\u01AF": "U",
        "\u01B0": "u",
        "\u01CD": "A",
        "\u01CE": "a",
        "\u01CF": "I",
        "\u01D0": "i",
        "\u01D1": "O",
        "\u01D2": "o",
        "\u01D3": "U",
        "\u01D4": "u",
        "\u01D5": "U",
        "\u01D6": "u",
        "\u01D7": "U",
        "\u01D8": "u",
        "\u01D9": "U",
        "\u01DA": "u",
        "\u01DB": "U",
        "\u01DC": "u",
        "\u1EE8": "U",
        "\u1EE9": "u",
        "\u1E78": "U",
        "\u1E79": "u",
        "\u01FA": "A",
        "\u01FB": "a",
        "\u01FC": "AE",
        "\u01FD": "ae",
        "\u01FE": "O",
        "\u01FF": "o",
        "\xDE": "TH",
        "\xFE": "th",
        "\u1E54": "P",
        "\u1E55": "p",
        "\u1E64": "S",
        "\u1E65": "s",
        "X\u0301": "X",
        "x\u0301": "x",
        "\u0403": "\u0413",
        "\u0453": "\u0433",
        "\u040C": "\u041A",
        "\u045C": "\u043A",
        "A\u030B": "A",
        "a\u030B": "a",
        "E\u030B": "E",
        "e\u030B": "e",
        "I\u030B": "I",
        "i\u030B": "i",
        "\u01F8": "N",
        "\u01F9": "n",
        "\u1ED2": "O",
        "\u1ED3": "o",
        "\u1E50": "O",
        "\u1E51": "o",
        "\u1EEA": "U",
        "\u1EEB": "u",
        "\u1E80": "W",
        "\u1E81": "w",
        "\u1EF2": "Y",
        "\u1EF3": "y",
        "\u0200": "A",
        "\u0201": "a",
        "\u0204": "E",
        "\u0205": "e",
        "\u0208": "I",
        "\u0209": "i",
        "\u020C": "O",
        "\u020D": "o",
        "\u0210": "R",
        "\u0211": "r",
        "\u0214": "U",
        "\u0215": "u",
        "B\u030C": "B",
        "b\u030C": "b",
        "\u010C\u0323": "C",
        "\u010D\u0323": "c",
        "\xCA\u030C": "E",
        "\xEA\u030C": "e",
        "F\u030C": "F",
        "f\u030C": "f",
        "\u01E6": "G",
        "\u01E7": "g",
        "\u021E": "H",
        "\u021F": "h",
        "J\u030C": "J",
        "\u01F0": "j",
        "\u01E8": "K",
        "\u01E9": "k",
        "M\u030C": "M",
        "m\u030C": "m",
        "P\u030C": "P",
        "p\u030C": "p",
        "Q\u030C": "Q",
        "q\u030C": "q",
        "\u0158\u0329": "R",
        "\u0159\u0329": "r",
        "\u1E66": "S",
        "\u1E67": "s",
        "V\u030C": "V",
        "v\u030C": "v",
        "W\u030C": "W",
        "w\u030C": "w",
        "X\u030C": "X",
        "x\u030C": "x",
        "Y\u030C": "Y",
        "y\u030C": "y",
        "A\u0327": "A",
        "a\u0327": "a",
        "B\u0327": "B",
        "b\u0327": "b",
        "\u1E10": "D",
        "\u1E11": "d",
        "\u0228": "E",
        "\u0229": "e",
        "\u0190\u0327": "E",
        "\u025B\u0327": "e",
        "\u1E28": "H",
        "\u1E29": "h",
        "I\u0327": "I",
        "i\u0327": "i",
        "\u0197\u0327": "I",
        "\u0268\u0327": "i",
        "M\u0327": "M",
        "m\u0327": "m",
        "O\u0327": "O",
        "o\u0327": "o",
        "Q\u0327": "Q",
        "q\u0327": "q",
        "U\u0327": "U",
        "u\u0327": "u",
        "X\u0327": "X",
        "x\u0327": "x",
        "Z\u0327": "Z",
        "z\u0327": "z",
        "\u0439": "\u0438",
        "\u0419": "\u0418",
        "\u0451": "\u0435",
        "\u0401": "\u0415"
      };
      var chars = Object.keys(characterMap).join("|");
      var allAccents = new RegExp(chars, "g");
      var firstAccent = new RegExp(chars, "");
      function matcher(match3) {
        return characterMap[match3];
      }
      var removeAccents7 = function(string) {
        return string.replace(allAccents, matcher);
      };
      var hasAccents = function(string) {
        return !!string.match(firstAccent);
      };
      module.exports = removeAccents7;
      module.exports.has = hasAccents;
      module.exports.remove = removeAccents7;
    }
  });

  // package-external:@wordpress/wordcount
  var require_wordcount = __commonJS({
    "package-external:@wordpress/wordcount"(exports, module) {
      module.exports = window.wp.wordcount;
    }
  });

  // package-external:@wordpress/keycodes
  var require_keycodes = __commonJS({
    "package-external:@wordpress/keycodes"(exports, module) {
      module.exports = window.wp.keycodes;
    }
  });

  // package-external:@wordpress/keyboard-shortcuts
  var require_keyboard_shortcuts = __commonJS({
    "package-external:@wordpress/keyboard-shortcuts"(exports, module) {
      module.exports = window.wp.keyboardShortcuts;
    }
  });

  // package-external:@wordpress/block-serialization-default-parser
  var require_block_serialization_default_parser = __commonJS({
    "package-external:@wordpress/block-serialization-default-parser"(exports, module) {
      module.exports = window.wp.blockSerializationDefaultParser;
    }
  });

  // package-external:@wordpress/rich-text
  var require_rich_text = __commonJS({
    "package-external:@wordpress/rich-text"(exports, module) {
      module.exports = window.wp.richText;
    }
  });

  // package-external:@wordpress/commands
  var require_commands = __commonJS({
    "package-external:@wordpress/commands"(exports, module) {
      module.exports = window.wp.commands;
    }
  });

  // package-external:@wordpress/viewport
  var require_viewport = __commonJS({
    "package-external:@wordpress/viewport"(exports, module) {
      module.exports = window.wp.viewport;
    }
  });

  // package-external:@wordpress/plugins
  var require_plugins = __commonJS({
    "package-external:@wordpress/plugins"(exports, module) {
      module.exports = window.wp.plugins;
    }
  });

  // package-external:@wordpress/upload-media
  var require_upload_media = __commonJS({
    "package-external:@wordpress/upload-media"(exports, module) {
      module.exports = window.wp.uploadMedia;
    }
  });

  // package-external:@wordpress/dom
  var require_dom = __commonJS({
    "package-external:@wordpress/dom"(exports, module) {
      module.exports = window.wp.dom;
    }
  });

  // package-external:@wordpress/server-side-render
  var require_server_side_render = __commonJS({
    "package-external:@wordpress/server-side-render"(exports, module) {
      module.exports = window.wp.serverSideRender;
    }
  });

  // packages/editor/build-module/index.mjs
  var index_exports = {};
  __export(index_exports, {
    AlignmentToolbar: () => AlignmentToolbar,
    Autocomplete: () => Autocomplete,
    AutosaveMonitor: () => AutosaveMonitor,
    BlockAlignmentToolbar: () => BlockAlignmentToolbar,
    BlockControls: () => BlockControls,
    BlockEdit: () => BlockEdit,
    BlockEditorKeyboardShortcuts: () => BlockEditorKeyboardShortcuts2,
    BlockFormatControls: () => BlockFormatControls,
    BlockIcon: () => BlockIcon3,
    BlockInspector: () => BlockInspector,
    BlockList: () => BlockList4,
    BlockMover: () => BlockMover,
    BlockNavigationDropdown: () => BlockNavigationDropdown,
    BlockSelectionClearer: () => BlockSelectionClearer,
    BlockSettingsMenu: () => BlockSettingsMenu,
    BlockTitle: () => BlockTitle,
    BlockToolbar: () => BlockToolbar,
    CharacterCount: () => CharacterCount,
    ColorPalette: () => ColorPalette3,
    ContrastChecker: () => ContrastChecker,
    CopyHandler: () => CopyHandler,
    DefaultBlockAppender: () => DefaultBlockAppender,
    DocumentBar: () => DocumentBar,
    DocumentOutline: () => DocumentOutline,
    DocumentOutlineCheck: () => DocumentOutlineCheck,
    EditorHistoryRedo: () => redo_default2,
    EditorHistoryUndo: () => undo_default2,
    EditorKeyboardShortcuts: () => EditorKeyboardShortcuts,
    EditorKeyboardShortcutsRegister: () => register_shortcuts_default,
    EditorNotices: () => editor_notices_default,
    EditorProvider: () => provider_default,
    EditorSnackbars: () => EditorSnackbars,
    EntitiesSavedStates: () => EntitiesSavedStates,
    ErrorBoundary: () => error_boundary_default,
    FontSizePicker: () => FontSizePicker,
    InnerBlocks: () => InnerBlocks,
    Inserter: () => Inserter,
    InspectorAdvancedControls: () => InspectorAdvancedControls,
    InspectorControls: () => InspectorControls,
    LocalAutosaveMonitor: () => local_autosave_monitor_default,
    MediaPlaceholder: () => MediaPlaceholder,
    MediaUpload: () => MediaUpload3,
    MediaUploadCheck: () => MediaUploadCheck2,
    MultiSelectScrollIntoView: () => MultiSelectScrollIntoView,
    NavigableToolbar: () => NavigableToolbar,
    ObserveTyping: () => ObserveTyping,
    PageAttributesCheck: () => check_default2,
    PageAttributesOrder: () => PageAttributesOrderWithChecks,
    PageAttributesPanel: () => PageAttributesPanel,
    PageAttributesParent: () => parent_default2,
    PageTemplate: () => classic_theme_default,
    PanelColorSettings: () => PanelColorSettings,
    PlainText: () => PlainText,
    PluginBlockSettingsMenuItem: () => plugin_block_settings_menu_item_default,
    PluginDocumentSettingPanel: () => plugin_document_setting_panel_default,
    PluginMoreMenuItem: () => PluginMoreMenuItem,
    PluginPostPublishPanel: () => plugin_post_publish_panel_default,
    PluginPostStatusInfo: () => plugin_post_status_info_default,
    PluginPrePublishPanel: () => plugin_pre_publish_panel_default,
    PluginPreviewMenuItem: () => PluginPreviewMenuItem,
    PluginSidebar: () => PluginSidebar,
    PluginSidebarMoreMenuItem: () => PluginSidebarMoreMenuItem,
    PostAuthor: () => post_author_default,
    PostAuthorCheck: () => PostAuthorCheck,
    PostAuthorPanel: () => panel_default,
    PostComments: () => post_comments_default,
    PostDiscussionPanel: () => PostDiscussionPanel,
    PostExcerpt: () => PostExcerpt,
    PostExcerptCheck: () => check_default3,
    PostExcerptPanel: () => PostExcerptPanel,
    PostFeaturedImage: () => post_featured_image_default,
    PostFeaturedImageCheck: () => check_default4,
    PostFeaturedImagePanel: () => PostFeaturedImagePanel,
    PostFormat: () => PostFormat,
    PostFormatCheck: () => PostFormatCheck,
    PostLastRevision: () => post_last_revision_default,
    PostLastRevisionCheck: () => check_default5,
    PostLastRevisionPanel: () => panel_default2,
    PostLockedModal: () => post_locked_modal_default,
    PostPendingStatus: () => post_pending_status_default,
    PostPendingStatusCheck: () => check_default6,
    PostPingbacks: () => post_pingbacks_default,
    PostPreviewButton: () => PostPreviewButton,
    PostPublishButton: () => post_publish_button_default,
    PostPublishButtonLabel: () => PublishButtonLabel,
    PostPublishPanel: () => PostPublishPanel,
    PostSavedState: () => PostSavedState,
    PostSchedule: () => PostSchedule,
    PostScheduleCheck: () => PostScheduleCheck,
    PostScheduleLabel: () => PostScheduleLabel,
    PostSchedulePanel: () => PostSchedulePanel,
    PostSticky: () => PostSticky,
    PostStickyCheck: () => PostStickyCheck,
    PostSwitchToDraftButton: () => PostSwitchToDraftButton,
    PostSyncStatus: () => PostSyncStatus,
    PostTaxonomies: () => post_taxonomies_default,
    PostTaxonomiesCheck: () => PostTaxonomiesCheck,
    PostTaxonomiesFlatTermSelector: () => FlatTermSelector,
    PostTaxonomiesHierarchicalTermSelector: () => HierarchicalTermSelector,
    PostTaxonomiesPanel: () => PostTaxonomies2,
    PostTemplatePanel: () => PostTemplatePanel,
    PostTextEditor: () => PostTextEditor,
    PostTitle: () => post_title_default,
    PostTitleRaw: () => post_title_raw_default,
    PostTrash: () => PostTrash,
    PostTrashCheck: () => PostTrashCheck,
    PostTypeSupportCheck: () => post_type_support_check_default,
    PostURL: () => PostURL,
    PostURLCheck: () => PostURLCheck,
    PostURLLabel: () => PostURLLabel,
    PostURLPanel: () => PostURLPanel,
    PostVisibility: () => PostVisibility,
    PostVisibilityCheck: () => PostVisibilityCheck,
    PostVisibilityLabel: () => PostVisibilityLabel,
    RichText: () => RichText,
    RichTextShortcut: () => RichTextShortcut,
    RichTextToolbarButton: () => RichTextToolbarButton,
    ServerSideRender: () => import_server_side_render.default,
    SkipToSelectedBlock: () => SkipToSelectedBlock,
    TableOfContents: () => table_of_contents_default,
    TextEditorGlobalKeyboardShortcuts: () => TextEditorGlobalKeyboardShortcuts,
    ThemeSupportCheck: () => ThemeSupportCheck,
    TimeToRead: () => TimeToRead,
    URLInput: () => URLInput,
    URLInputButton: () => URLInputButton,
    URLPopover: () => URLPopover,
    UnsavedChangesWarning: () => UnsavedChangesWarning,
    VisualEditorGlobalKeyboardShortcuts: () => VisualEditorGlobalKeyboardShortcuts,
    Warning: () => Warning,
    WordCount: () => WordCount,
    WritingFlow: () => WritingFlow,
    __unstableRichTextInputEvent: () => __unstableRichTextInputEvent,
    cleanForSlug: () => cleanForSlug3,
    createCustomColorsHOC: () => createCustomColorsHOC,
    getColorClassName: () => getColorClassName2,
    getColorObjectByAttributeValues: () => getColorObjectByAttributeValues,
    getColorObjectByColorValue: () => getColorObjectByColorValue,
    getFontSize: () => getFontSize,
    getFontSizeClass: () => getFontSizeClass,
    linkAutocompleter: () => link_default2,
    mediaUpload: () => mediaUpload,
    privateApis: () => privateApis9,
    registerEntityAction: () => registerEntityAction2,
    registerEntityField: () => registerEntityField2,
    store: () => store,
    storeConfig: () => storeConfig,
    transformStyles: () => import_block_editor115.transformStyles,
    unregisterEntityAction: () => unregisterEntityAction2,
    unregisterEntityField: () => unregisterEntityField2,
    useEntitiesSavedStatesIsDirty: () => useEntitiesSavedStatesIsDirty,
    usePostScheduleLabel: () => usePostScheduleLabel,
    usePostURLLabel: () => usePostURLLabel,
    usePostVisibilityLabel: () => usePostVisibilityLabel,
    userAutocompleter: () => user_default,
    withColorContext: () => withColorContext,
    withColors: () => withColors,
    withFontSizes: () => withFontSizes
  });

  // packages/editor/build-module/hooks/custom-sources-backwards-compatibility.mjs
  var import_data93 = __toESM(require_data(), 1);
  var import_core_data64 = __toESM(require_core_data(), 1);
  var import_element309 = __toESM(require_element(), 1);
  var import_compose51 = __toESM(require_compose(), 1);
  var import_hooks43 = __toESM(require_hooks(), 1);

  // packages/editor/build-module/store/index.mjs
  var import_data92 = __toESM(require_data(), 1);

  // packages/editor/build-module/store/reducer.mjs
  var import_data2 = __toESM(require_data(), 1);

  // packages/editor/build-module/store/defaults.mjs
  var import_block_editor = __toESM(require_block_editor(), 1);
  var EDITOR_SETTINGS_DEFAULTS = {
    ...import_block_editor.SETTINGS_DEFAULTS,
    richEditingEnabled: true,
    codeEditingEnabled: true,
    responsiveEditingEnabled: true,
    blockStatesEditingEnabled: true,
    fontLibraryEnabled: true,
    enableCustomFields: void 0,
    defaultRenderingMode: "post-only",
    autoAttachMediaEnabled: true
  };

  // packages/editor/build-module/dataviews/store/reducer.mjs
  var import_data = __toESM(require_data(), 1);
  function isReady(state2 = {}, action) {
    switch (action.type) {
      case "SET_IS_READY":
        return {
          ...state2,
          [action.kind]: {
            ...state2[action.kind],
            [action.name]: true
          }
        };
    }
    return state2;
  }
  function actions(state2 = {}, action) {
    switch (action.type) {
      case "REGISTER_ENTITY_ACTION":
        return {
          ...state2,
          [action.kind]: {
            ...state2[action.kind],
            [action.name]: [
              ...(state2[action.kind]?.[action.name] ?? []).filter(
                (_action) => _action.id !== action.config.id
              ),
              action.config
            ]
          }
        };
      case "UNREGISTER_ENTITY_ACTION": {
        return {
          ...state2,
          [action.kind]: {
            ...state2[action.kind],
            [action.name]: (state2[action.kind]?.[action.name] ?? []).filter((_action) => _action.id !== action.actionId)
          }
        };
      }
    }
    return state2;
  }
  function fields(state2 = {}, action) {
    switch (action.type) {
      case "REGISTER_ENTITY_FIELD":
        return {
          ...state2,
          [action.kind]: {
            ...state2[action.kind],
            [action.name]: [
              ...(state2[action.kind]?.[action.name] ?? []).filter(
                (_field) => _field.id !== action.config.id
              ),
              action.config
            ]
          }
        };
      case "UNREGISTER_ENTITY_FIELD":
        return {
          ...state2,
          [action.kind]: {
            ...state2[action.kind],
            [action.name]: (state2[action.kind]?.[action.name] ?? []).filter((_field) => _field.id !== action.fieldId)
          }
        };
    }
    return state2;
  }
  var reducer_default = (0, import_data.combineReducers)({
    actions,
    fields,
    isReady
  });

  // packages/editor/build-module/store/reducer.mjs
  function getPostRawValue(value) {
    if (value && "object" === typeof value && "raw" in value) {
      return value.raw;
    }
    return value;
  }
  function postId(state2 = null, action) {
    switch (action.type) {
      case "SET_EDITED_POST":
        return action.postId;
    }
    return state2;
  }
  function templateId(state2 = null, action) {
    switch (action.type) {
      case "SET_CURRENT_TEMPLATE_ID":
        return action.id;
    }
    return state2;
  }
  function postType(state2 = null, action) {
    switch (action.type) {
      case "SET_EDITED_POST":
        return action.postType;
    }
    return state2;
  }
  function template(state2 = { isValid: true }, action) {
    switch (action.type) {
      case "SET_TEMPLATE_VALIDITY":
        return {
          ...state2,
          isValid: action.isValid
        };
    }
    return state2;
  }
  function saving(state2 = {}, action) {
    switch (action.type) {
      case "REQUEST_POST_UPDATE_START":
      case "REQUEST_POST_UPDATE_FINISH":
        return {
          pending: action.type === "REQUEST_POST_UPDATE_START",
          options: action.options || {}
        };
    }
    return state2;
  }
  function deleting(state2 = {}, action) {
    switch (action.type) {
      case "REQUEST_POST_DELETE_START":
      case "REQUEST_POST_DELETE_FINISH":
        return {
          pending: action.type === "REQUEST_POST_DELETE_START"
        };
    }
    return state2;
  }
  function postLock(state2 = { isLocked: false }, action) {
    switch (action.type) {
      case "UPDATE_POST_LOCK":
        return action.lock;
    }
    return state2;
  }
  function postSavingLock(state2 = {}, action) {
    switch (action.type) {
      case "LOCK_POST_SAVING":
        return { ...state2, [action.lockName]: true };
      case "UNLOCK_POST_SAVING": {
        const { [action.lockName]: removedLockName, ...restState } = state2;
        return restState;
      }
    }
    return state2;
  }
  function postAutosavingLock(state2 = {}, action) {
    switch (action.type) {
      case "LOCK_POST_AUTOSAVING":
        return { ...state2, [action.lockName]: true };
      case "UNLOCK_POST_AUTOSAVING": {
        const { [action.lockName]: removedLockName, ...restState } = state2;
        return restState;
      }
    }
    return state2;
  }
  function editorSettings(state2 = EDITOR_SETTINGS_DEFAULTS, action) {
    switch (action.type) {
      case "UPDATE_EDITOR_SETTINGS":
        return {
          ...state2,
          ...action.settings
        };
    }
    return state2;
  }
  function renderingMode(state2 = "post-only", action) {
    switch (action.type) {
      case "SET_RENDERING_MODE":
        return action.mode;
    }
    return state2;
  }
  function canvasWidth(state2 = void 0, action) {
    switch (action.type) {
      case "SET_CANVAS_WIDTH":
        return action.width;
    }
    return state2;
  }
  function removedPanels(state2 = [], action) {
    switch (action.type) {
      case "REMOVE_PANEL":
        if (!state2.includes(action.panelName)) {
          return [...state2, action.panelName];
        }
    }
    return state2;
  }
  function blockInserterPanel(state2 = false, action) {
    switch (action.type) {
      case "SET_IS_LIST_VIEW_OPENED":
        return action.isOpen ? false : state2;
      case "SET_IS_INSERTER_OPENED":
        return action.value;
    }
    return state2;
  }
  function listViewPanel(state2 = false, action) {
    switch (action.type) {
      case "SET_IS_INSERTER_OPENED":
        return action.value ? false : state2;
      case "SET_IS_LIST_VIEW_OPENED":
        return action.isOpen;
    }
    return state2;
  }
  function listViewToggleRef(state2 = { current: null }) {
    return state2;
  }
  function inserterSidebarToggleRef(state2 = { current: null }) {
    return state2;
  }
  function publishSidebarActive(state2 = false, action) {
    switch (action.type) {
      case "OPEN_PUBLISH_SIDEBAR":
        return true;
      case "CLOSE_PUBLISH_SIDEBAR":
        return false;
      case "TOGGLE_PUBLISH_SIDEBAR":
        return !state2;
    }
    return state2;
  }
  function stylesPath(state2 = "/", action) {
    switch (action.type) {
      case "SET_STYLES_PATH":
        return action.path;
      case "RESET_STYLES_NAVIGATION":
        return "/";
    }
    return state2;
  }
  function showStylebook(state2 = false, action) {
    switch (action.type) {
      case "SET_SHOW_STYLEBOOK":
        return action.show;
      case "RESET_STYLES_NAVIGATION":
        return false;
    }
    return state2;
  }
  function revisionId(state2 = null, action) {
    switch (action.type) {
      case "SET_CURRENT_REVISION_ID":
        return action.revisionId;
    }
    return state2;
  }
  function revisionPage(state2 = 1, action) {
    switch (action.type) {
      case "SET_REVISION_PAGE":
        return action.page;
      case "SET_CURRENT_REVISION_ID":
        if (!action.revisionId) {
          return 1;
        }
        return state2;
    }
    return state2;
  }
  function showRevisionDiff(state2 = true, action) {
    switch (action.type) {
      case "SET_SHOW_REVISION_DIFF":
        return action.showDiff;
      case "SET_CURRENT_REVISION_ID":
        return !action.revisionId ? true : state2;
    }
    return state2;
  }
  function selectedNote(state2 = {}, action) {
    switch (action.type) {
      case "SELECT_NOTE":
        return { noteId: action.noteId, options: action.options };
    }
    return state2;
  }
  var reducer_default2 = (0, import_data2.combineReducers)({
    postId,
    postType,
    templateId,
    saving,
    deleting,
    postLock,
    template,
    postSavingLock,
    editorSettings,
    postAutosavingLock,
    renderingMode,
    canvasWidth,
    removedPanels,
    blockInserterPanel,
    inserterSidebarToggleRef,
    listViewPanel,
    listViewToggleRef,
    publishSidebarActive,
    stylesPath,
    showStylebook,
    revisionId,
    revisionPage,
    showRevisionDiff,
    selectedNote,
    dataviews: reducer_default
  });

  // packages/editor/build-module/store/selectors.mjs
  var selectors_exports = {};
  __export(selectors_exports, {
    __experimentalGetDefaultTemplatePartAreas: () => __experimentalGetDefaultTemplatePartAreas,
    __experimentalGetDefaultTemplateType: () => __experimentalGetDefaultTemplateType,
    __experimentalGetDefaultTemplateTypes: () => __experimentalGetDefaultTemplateTypes,
    __experimentalGetTemplateInfo: () => __experimentalGetTemplateInfo,
    __unstableIsEditorReady: () => __unstableIsEditorReady,
    canInsertBlockType: () => canInsertBlockType,
    canUserUseUnfilteredHTML: () => canUserUseUnfilteredHTML,
    didPostSaveRequestFail: () => didPostSaveRequestFail,
    didPostSaveRequestSucceed: () => didPostSaveRequestSucceed,
    getActivePostLock: () => getActivePostLock,
    getAdjacentBlockClientId: () => getAdjacentBlockClientId,
    getAutosaveAttribute: () => getAutosaveAttribute,
    getBlock: () => getBlock,
    getBlockAttributes: () => getBlockAttributes,
    getBlockCount: () => getBlockCount,
    getBlockHierarchyRootClientId: () => getBlockHierarchyRootClientId,
    getBlockIndex: () => getBlockIndex,
    getBlockInsertionPoint: () => getBlockInsertionPoint,
    getBlockListSettings: () => getBlockListSettings,
    getBlockMode: () => getBlockMode,
    getBlockName: () => getBlockName,
    getBlockOrder: () => getBlockOrder,
    getBlockRootClientId: () => getBlockRootClientId,
    getBlockSelectionEnd: () => getBlockSelectionEnd,
    getBlockSelectionStart: () => getBlockSelectionStart,
    getBlocks: () => getBlocks,
    getBlocksByClientId: () => getBlocksByClientId,
    getClientIdsOfDescendants: () => getClientIdsOfDescendants,
    getClientIdsWithDescendants: () => getClientIdsWithDescendants,
    getCurrentPost: () => getCurrentPost,
    getCurrentPostAttribute: () => getCurrentPostAttribute,
    getCurrentPostId: () => getCurrentPostId,
    getCurrentPostLastRevisionId: () => getCurrentPostLastRevisionId,
    getCurrentPostRevisionsCount: () => getCurrentPostRevisionsCount,
    getCurrentPostType: () => getCurrentPostType,
    getCurrentTemplateId: () => getCurrentTemplateId,
    getDeviceType: () => getDeviceType,
    getEditedPostAttribute: () => getEditedPostAttribute,
    getEditedPostContent: () => getEditedPostContent,
    getEditedPostPreviewLink: () => getEditedPostPreviewLink,
    getEditedPostSlug: () => getEditedPostSlug,
    getEditedPostVisibility: () => getEditedPostVisibility,
    getEditorBlocks: () => getEditorBlocks,
    getEditorMode: () => getEditorMode,
    getEditorSelection: () => getEditorSelection,
    getEditorSelectionEnd: () => getEditorSelectionEnd,
    getEditorSelectionStart: () => getEditorSelectionStart,
    getEditorSettings: () => getEditorSettings,
    getFirstMultiSelectedBlockClientId: () => getFirstMultiSelectedBlockClientId,
    getGlobalBlockCount: () => getGlobalBlockCount,
    getInserterItems: () => getInserterItems,
    getLastMultiSelectedBlockClientId: () => getLastMultiSelectedBlockClientId,
    getMultiSelectedBlockClientIds: () => getMultiSelectedBlockClientIds,
    getMultiSelectedBlocks: () => getMultiSelectedBlocks,
    getMultiSelectedBlocksEndClientId: () => getMultiSelectedBlocksEndClientId,
    getMultiSelectedBlocksStartClientId: () => getMultiSelectedBlocksStartClientId,
    getNextBlockClientId: () => getNextBlockClientId,
    getPermalink: () => getPermalink,
    getPermalinkParts: () => getPermalinkParts,
    getPostEdits: () => getPostEdits,
    getPostLockUser: () => getPostLockUser,
    getPostTypeLabel: () => getPostTypeLabel,
    getPreviousBlockClientId: () => getPreviousBlockClientId,
    getRenderingMode: () => getRenderingMode,
    getSelectedBlock: () => getSelectedBlock,
    getSelectedBlockClientId: () => getSelectedBlockClientId,
    getSelectedBlockCount: () => getSelectedBlockCount,
    getSelectedBlocksInitialCaretPosition: () => getSelectedBlocksInitialCaretPosition,
    getStateBeforeOptimisticTransaction: () => getStateBeforeOptimisticTransaction,
    getSuggestedPostFormat: () => getSuggestedPostFormat,
    getTemplate: () => getTemplate,
    getTemplateLock: () => getTemplateLock,
    hasChangedContent: () => hasChangedContent,
    hasEditorRedo: () => hasEditorRedo,
    hasEditorUndo: () => hasEditorUndo,
    hasInserterItems: () => hasInserterItems,
    hasMultiSelection: () => hasMultiSelection,
    hasNonPostEntityChanges: () => hasNonPostEntityChanges,
    hasSelectedBlock: () => hasSelectedBlock,
    hasSelectedInnerBlock: () => hasSelectedInnerBlock,
    inSomeHistory: () => inSomeHistory,
    isAncestorMultiSelected: () => isAncestorMultiSelected,
    isAutosavingPost: () => isAutosavingPost,
    isBlockInsertionPointVisible: () => isBlockInsertionPointVisible,
    isBlockMultiSelected: () => isBlockMultiSelected,
    isBlockSelected: () => isBlockSelected,
    isBlockValid: () => isBlockValid,
    isBlockWithinSelection: () => isBlockWithinSelection,
    isCaretWithinFormattedText: () => isCaretWithinFormattedText,
    isCleanNewPost: () => isCleanNewPost,
    isCurrentPostPending: () => isCurrentPostPending,
    isCurrentPostPublished: () => isCurrentPostPublished,
    isCurrentPostScheduled: () => isCurrentPostScheduled,
    isDeletingPost: () => isDeletingPost,
    isEditedPostAutosaveable: () => isEditedPostAutosaveable,
    isEditedPostBeingScheduled: () => isEditedPostBeingScheduled,
    isEditedPostDateFloating: () => isEditedPostDateFloating,
    isEditedPostDirty: () => isEditedPostDirty,
    isEditedPostEmpty: () => isEditedPostEmpty,
    isEditedPostNew: () => isEditedPostNew,
    isEditedPostPublishable: () => isEditedPostPublishable,
    isEditedPostSaveable: () => isEditedPostSaveable,
    isEditorPanelEnabled: () => isEditorPanelEnabled,
    isEditorPanelOpened: () => isEditorPanelOpened,
    isEditorPanelRemoved: () => isEditorPanelRemoved,
    isFirstMultiSelectedBlock: () => isFirstMultiSelectedBlock,
    isInserterOpened: () => isInserterOpened,
    isListViewOpened: () => isListViewOpened,
    isMultiSelecting: () => isMultiSelecting,
    isPermalinkEditable: () => isPermalinkEditable,
    isPostAutosavingLocked: () => isPostAutosavingLocked,
    isPostLockTakeover: () => isPostLockTakeover,
    isPostLocked: () => isPostLocked,
    isPostSavingLocked: () => isPostSavingLocked,
    isPreviewingPost: () => isPreviewingPost,
    isPublishSidebarEnabled: () => isPublishSidebarEnabled,
    isPublishSidebarOpened: () => isPublishSidebarOpened,
    isPublishingPost: () => isPublishingPost,
    isSavingNonPostEntityChanges: () => isSavingNonPostEntityChanges,
    isSavingPost: () => isSavingPost,
    isSelectionEnabled: () => isSelectionEnabled,
    isTyping: () => isTyping,
    isValidTemplate: () => isValidTemplate
  });
  var import_blocks3 = __toESM(require_blocks(), 1);
  var import_date = __toESM(require_date(), 1);
  var import_url = __toESM(require_url(), 1);
  var import_data4 = __toESM(require_data(), 1);
  var import_deprecated = __toESM(require_deprecated(), 1);
  var import_block_editor2 = __toESM(require_block_editor(), 1);
  var import_core_data = __toESM(require_core_data(), 1);
  var import_preferences = __toESM(require_preferences(), 1);

  // packages/editor/build-module/store/constants.mjs
  var EDIT_MERGE_PROPERTIES = /* @__PURE__ */ new Set(["meta"]);
  var STORE_NAME = "core/editor";
  var PERMALINK_POSTNAME_REGEX = /%(?:postname|pagename)%/;
  var ONE_MINUTE_IN_MS = 60 * 1e3;
  var AUTOSAVE_PROPERTIES = ["title", "excerpt", "content"];
  var TEMPLATE_POST_TYPE = "wp_template";
  var TEMPLATE_PART_POST_TYPE = "wp_template_part";
  var PATTERN_POST_TYPE = "wp_block";
  var NAVIGATION_POST_TYPE = "wp_navigation";
  var ATTACHMENT_POST_TYPE = "attachment";
  var TEMPLATE_ORIGINS = {
    custom: "custom",
    theme: "theme",
    plugin: "plugin"
  };
  var TEMPLATE_POST_TYPES = ["wp_template", "wp_template_part"];
  var GLOBAL_POST_TYPES = [
    ...TEMPLATE_POST_TYPES,
    "wp_block",
    "wp_navigation"
  ];
  var DESIGN_POST_TYPES = [
    TEMPLATE_POST_TYPE,
    TEMPLATE_PART_POST_TYPE,
    PATTERN_POST_TYPE,
    NAVIGATION_POST_TYPE
  ];

  // packages/editor/build-module/lock-unlock.mjs
  var import_private_apis = __toESM(require_private_apis(), 1);
  var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
    "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
    "@wordpress/editor"
  );

  // packages/global-styles-engine/build-module/utils/object.mjs
  function setImmutably(object, path, value) {
    path = Array.isArray(path) ? [...path] : [path];
    object = Array.isArray(object) ? [...object] : { ...object };
    const leaf = path.pop();
    let prev = object;
    for (const key of path) {
      const lvl = prev[key];
      prev = prev[key] = Array.isArray(lvl) ? [...lvl] : { ...lvl };
    }
    prev[leaf] = value;
    return object;
  }
  var getValueFromObjectPath = (object, path, defaultValue2) => {
    const arrayPath = Array.isArray(path) ? path : path.split(".");
    let value = object;
    arrayPath.forEach((fieldName) => {
      value = value?.[fieldName];
    });
    return value ?? defaultValue2;
  };

  // packages/global-styles-engine/build-module/settings/get-setting.mjs
  var VALID_SETTINGS = [
    "appearanceTools",
    "useRootPaddingAwareAlignments",
    "background.backgroundImage",
    "background.backgroundRepeat",
    "background.backgroundSize",
    "background.backgroundPosition",
    "background.gradient",
    "border.color",
    "border.radius",
    "border.radiusSizes",
    "border.style",
    "border.width",
    "shadow.presets",
    "shadow.defaultPresets",
    "color.background",
    "color.button",
    "color.caption",
    "color.custom",
    "color.customDuotone",
    "color.customGradient",
    "color.defaultDuotone",
    "color.defaultGradients",
    "color.defaultPalette",
    "color.duotone",
    "color.gradients",
    "color.heading",
    "color.link",
    "color.palette",
    "color.text",
    "custom",
    "dimensions.aspectRatio",
    "dimensions.height",
    "dimensions.minHeight",
    "dimensions.minWidth",
    "dimensions.width",
    "dimensions.dimensionSizes",
    "layout.contentSize",
    "layout.definitions",
    "layout.wideSize",
    "lightbox.enabled",
    "lightbox.allowEditing",
    "position.fixed",
    "position.sticky",
    "spacing.customSpacingSize",
    "spacing.defaultSpacingSizes",
    "spacing.spacingSizes",
    "spacing.spacingScale",
    "spacing.blockGap",
    "spacing.margin",
    "spacing.padding",
    "spacing.units",
    "typography.fluid",
    "typography.customFontSize",
    "typography.defaultFontSizes",
    "typography.dropCap",
    "typography.fontFamilies",
    "typography.fontSizes",
    "typography.fontStyle",
    "typography.fontWeight",
    "typography.letterSpacing",
    "typography.lineHeight",
    "typography.textAlign",
    "typography.textColumns",
    "typography.textDecoration",
    "typography.textIndent",
    "typography.textShadow",
    "typography.defaultTextShadowPresets",
    "typography.textShadowPresets",
    "typography.textTransform",
    "typography.writingMode",
    "viewport.mobile",
    "viewport.tablet"
  ];
  function getSetting(globalStyles, path, blockName) {
    const appendedBlockPath = blockName ? ".blocks." + blockName : "";
    const appendedPropertyPath = path ? "." + path : "";
    const contextualPath = `settings${appendedBlockPath}${appendedPropertyPath}`;
    const globalPath = `settings${appendedPropertyPath}`;
    if (path) {
      return getValueFromObjectPath(globalStyles, contextualPath) ?? getValueFromObjectPath(globalStyles, globalPath);
    }
    let result = {};
    VALID_SETTINGS.forEach((setting) => {
      const value = getValueFromObjectPath(
        globalStyles,
        `settings${appendedBlockPath}.${setting}`
      ) ?? getValueFromObjectPath(globalStyles, `settings.${setting}`);
      if (value !== void 0) {
        result = setImmutably(result, setting.split("."), value);
      }
    });
    return result;
  }

  // packages/global-styles-engine/build-module/settings/set-setting.mjs
  function setSetting(globalStyles, path, newValue, blockName) {
    const appendedBlockPath = blockName ? ".blocks." + blockName : "";
    const appendedPropertyPath = path ? "." + path : "";
    const finalPath = `settings${appendedBlockPath}${appendedPropertyPath}`;
    return setImmutably(
      globalStyles,
      finalPath.split("."),
      newValue
    );
  }

  // packages/global-styles-engine/build-module/utils/common.mjs
  var import_style_engine = __toESM(require_style_engine(), 1);

  // packages/global-styles-engine/build-module/utils/fluid.mjs
  var DEFAULT_MAXIMUM_VIEWPORT_WIDTH = "1600px";
  var DEFAULT_MINIMUM_VIEWPORT_WIDTH = "320px";
  var DEFAULT_SCALE_FACTOR = 1;
  var DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN = 0.25;
  var DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX = 0.75;
  var DEFAULT_MINIMUM_FONT_SIZE_LIMIT = "14px";
  function getComputedFluidTypographyValue({
    minimumFontSize,
    maximumFontSize,
    fontSize,
    minimumViewportWidth = DEFAULT_MINIMUM_VIEWPORT_WIDTH,
    maximumViewportWidth = DEFAULT_MAXIMUM_VIEWPORT_WIDTH,
    scaleFactor = DEFAULT_SCALE_FACTOR,
    minimumFontSizeLimit
  }) {
    minimumFontSizeLimit = !!getTypographyValueAndUnit(minimumFontSizeLimit) ? minimumFontSizeLimit : DEFAULT_MINIMUM_FONT_SIZE_LIMIT;
    if (fontSize) {
      const fontSizeParsed = getTypographyValueAndUnit(fontSize);
      if (!fontSizeParsed?.unit || !fontSizeParsed?.value) {
        return null;
      }
      const minimumFontSizeLimitParsed = getTypographyValueAndUnit(
        minimumFontSizeLimit,
        {
          coerceTo: fontSizeParsed.unit
        }
      );
      if (!!minimumFontSizeLimitParsed?.value && !minimumFontSize && !maximumFontSize) {
        if (fontSizeParsed?.value <= minimumFontSizeLimitParsed?.value) {
          return null;
        }
      }
      if (!maximumFontSize) {
        maximumFontSize = `${fontSizeParsed.value}${fontSizeParsed.unit}`;
      }
      if (!minimumFontSize) {
        const fontSizeValueInPx = fontSizeParsed.unit === "px" ? fontSizeParsed.value : fontSizeParsed.value * 16;
        const minimumFontSizeFactor = Math.min(
          Math.max(
            1 - 0.075 * Math.log2(fontSizeValueInPx),
            DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN
          ),
          DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX
        );
        const calculatedMinimumFontSize = roundToPrecision(
          fontSizeParsed.value * minimumFontSizeFactor,
          3
        );
        if (!!minimumFontSizeLimitParsed?.value && calculatedMinimumFontSize < minimumFontSizeLimitParsed?.value) {
          minimumFontSize = `${minimumFontSizeLimitParsed.value}${minimumFontSizeLimitParsed.unit}`;
        } else {
          minimumFontSize = `${calculatedMinimumFontSize}${fontSizeParsed.unit}`;
        }
      }
    }
    const minimumFontSizeParsed = getTypographyValueAndUnit(minimumFontSize);
    const fontSizeUnit = minimumFontSizeParsed?.unit || "rem";
    const maximumFontSizeParsed = getTypographyValueAndUnit(maximumFontSize, {
      coerceTo: fontSizeUnit
    });
    if (!minimumFontSizeParsed || !maximumFontSizeParsed) {
      return null;
    }
    const minimumFontSizeRem = getTypographyValueAndUnit(minimumFontSize, {
      coerceTo: "rem"
    });
    const maximumViewportWidthParsed = getTypographyValueAndUnit(
      maximumViewportWidth,
      { coerceTo: fontSizeUnit }
    );
    const minimumViewportWidthParsed = getTypographyValueAndUnit(
      minimumViewportWidth,
      { coerceTo: fontSizeUnit }
    );
    if (!maximumViewportWidthParsed || !minimumViewportWidthParsed || !minimumFontSizeRem) {
      return null;
    }
    const linearDenominator = maximumViewportWidthParsed.value - minimumViewportWidthParsed.value;
    if (!linearDenominator) {
      return null;
    }
    const minViewportWidthOffsetValue = roundToPrecision(
      minimumViewportWidthParsed.value / 100,
      3
    );
    const viewportWidthOffset = roundToPrecision(minViewportWidthOffsetValue, 3) + fontSizeUnit;
    const linearFactor = 100 * ((maximumFontSizeParsed.value - minimumFontSizeParsed.value) / linearDenominator);
    const linearFactorScaled = roundToPrecision(
      (linearFactor || 1) * scaleFactor,
      3
    );
    const fluidTargetFontSize = `${minimumFontSizeRem.value}${minimumFontSizeRem.unit} + ((1vw - ${viewportWidthOffset}) * ${linearFactorScaled})`;
    return `clamp(${minimumFontSize}, ${fluidTargetFontSize}, ${maximumFontSize})`;
  }
  function getTypographyValueAndUnit(rawValue, options = {}) {
    if (typeof rawValue !== "string" && typeof rawValue !== "number") {
      return null;
    }
    if (isFinite(rawValue)) {
      rawValue = `${rawValue}px`;
    }
    const { coerceTo, rootSizeValue, acceptableUnits } = {
      coerceTo: "",
      // Default browser font size. Later we could inject some JS to compute this `getComputedStyle( document.querySelector( "html" ) ).fontSize`.
      rootSizeValue: 16,
      acceptableUnits: ["rem", "px", "em"],
      ...options
    };
    const acceptableUnitsGroup = acceptableUnits?.join("|");
    const regexUnits = new RegExp(
      `^(\\d*\\.?\\d+)(${acceptableUnitsGroup}){1,1}$`
    );
    const matches = rawValue.toString().match(regexUnits);
    if (!matches || matches.length < 3) {
      return null;
    }
    let [, value, unit] = matches;
    let returnValue = parseFloat(value);
    if ("px" === coerceTo && ("em" === unit || "rem" === unit)) {
      returnValue = returnValue * rootSizeValue;
      unit = coerceTo;
    }
    if ("px" === unit && ("em" === coerceTo || "rem" === coerceTo)) {
      returnValue = returnValue / rootSizeValue;
      unit = coerceTo;
    }
    if (("em" === coerceTo || "rem" === coerceTo) && ("em" === unit || "rem" === unit)) {
      unit = coerceTo;
    }
    if (!unit) {
      return null;
    }
    return {
      value: roundToPrecision(returnValue, 3),
      unit
    };
  }
  function roundToPrecision(value, digits = 3) {
    const base = Math.pow(10, digits);
    return Math.round(value * base) / base;
  }

  // packages/global-styles-engine/build-module/utils/typography.mjs
  function isFluidTypographyEnabled(typographySettings) {
    const fluidSettings = typographySettings?.fluid;
    return true === fluidSettings || fluidSettings && typeof fluidSettings === "object" && Object.keys(fluidSettings).length > 0;
  }
  function getFluidTypographyOptionsFromSettings(settings) {
    const typographySettings = settings?.typography ?? {};
    const layoutSettings = settings?.layout;
    const defaultMaxViewportWidth = getTypographyValueAndUnit(
      layoutSettings?.wideSize
    ) ? layoutSettings?.wideSize : null;
    return isFluidTypographyEnabled(typographySettings) && defaultMaxViewportWidth ? {
      fluid: {
        maxViewportWidth: defaultMaxViewportWidth,
        ...typeof typographySettings.fluid === "object" ? typographySettings.fluid : {}
      }
    } : {
      fluid: typographySettings?.fluid
    };
  }
  function getTypographyFontSizeValue(preset, settings) {
    const { size: defaultSize } = preset;
    if (!defaultSize || "0" === defaultSize || false === preset?.fluid) {
      return defaultSize;
    }
    if (!isFluidTypographyEnabled(settings?.typography) && !isFluidTypographyEnabled(preset)) {
      return defaultSize;
    }
    const fluidTypographySettings = getFluidTypographyOptionsFromSettings(settings)?.fluid ?? {};
    const fluidFontSizeValue = getComputedFluidTypographyValue({
      minimumFontSize: typeof preset?.fluid === "boolean" ? void 0 : preset?.fluid?.min,
      maximumFontSize: typeof preset?.fluid === "boolean" ? void 0 : preset?.fluid?.max,
      fontSize: defaultSize,
      minimumFontSizeLimit: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.minFontSize : void 0,
      maximumViewportWidth: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.maxViewportWidth : void 0,
      minimumViewportWidth: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.minViewportWidth : void 0
    });
    if (!!fluidFontSizeValue) {
      return fluidFontSizeValue;
    }
    return defaultSize;
  }

  // packages/global-styles-engine/build-module/utils/common.mjs
  var ROOT_BLOCK_SELECTOR = "body";
  var ROOT_CSS_PROPERTIES_SELECTOR = ":root";
  function splitSelectorList(selector2) {
    if (!selector2.includes(",")) {
      return [selector2];
    }
    const selectors5 = [];
    let currentSelector = "";
    let parenthesesDepth = 0;
    for (const char of selector2) {
      if (char === "(") {
        parenthesesDepth++;
      } else if (char === ")" && parenthesesDepth > 0) {
        parenthesesDepth--;
      } else if (char === "," && parenthesesDepth === 0) {
        selectors5.push(currentSelector);
        currentSelector = "";
        continue;
      }
      currentSelector += char;
    }
    selectors5.push(currentSelector);
    return selectors5;
  }
  var PRESET_METADATA = [
    {
      path: ["color", "palette"],
      valueKey: "color",
      cssVarInfix: "color",
      classes: [
        { classSuffix: "color", propertyName: "color" },
        {
          classSuffix: "background-color",
          propertyName: "background-color"
        },
        {
          classSuffix: "border-color",
          propertyName: "border-color"
        }
      ]
    },
    {
      path: ["color", "gradients"],
      valueKey: "gradient",
      cssVarInfix: "gradient",
      classes: [
        {
          classSuffix: "gradient-background",
          propertyName: "background"
        }
      ]
    },
    {
      path: ["color", "duotone"],
      valueKey: "colors",
      cssVarInfix: "duotone",
      valueFunc: ({ slug }) => `url( '#wp-duotone-${slug}' )`,
      classes: []
    },
    {
      path: ["shadow", "presets"],
      valueKey: "shadow",
      cssVarInfix: "shadow",
      classes: []
    },
    {
      path: ["typography", "fontSizes"],
      valueFunc: (preset, settings) => getTypographyFontSizeValue(preset, settings),
      valueKey: "size",
      cssVarInfix: "font-size",
      classes: [{ classSuffix: "font-size", propertyName: "font-size" }]
    },
    {
      path: ["typography", "fontFamilies"],
      valueKey: "fontFamily",
      cssVarInfix: "font-family",
      classes: [
        { classSuffix: "font-family", propertyName: "font-family" }
      ]
    },
    {
      path: ["typography", "textShadowPresets"],
      valueKey: "textShadow",
      cssVarInfix: "text-shadow",
      classes: [
        { classSuffix: "text-shadow", propertyName: "text-shadow" }
      ]
    },
    {
      path: ["spacing", "spacingSizes"],
      valueKey: "size",
      cssVarInfix: "spacing",
      valueFunc: ({ size: size4 }) => size4,
      classes: []
    },
    {
      path: ["border", "radiusSizes"],
      valueKey: "size",
      cssVarInfix: "border-radius",
      classes: []
    },
    {
      path: ["dimensions", "dimensionSizes"],
      valueKey: "size",
      cssVarInfix: "dimension",
      classes: []
    }
  ];
  function scopeSelector(scope, selector2) {
    if (!scope || !selector2) {
      return selector2;
    }
    const scopes = splitSelectorList(scope);
    const selectors5 = splitSelectorList(selector2);
    const selectorsScoped = [];
    scopes.forEach((outer) => {
      selectors5.forEach((inner) => {
        selectorsScoped.push(`${outer.trim()} ${inner.trim()}`);
      });
    });
    return selectorsScoped.join(", ");
  }
  function scopeFeatureSelectors(scope, selectors5) {
    if (!scope || !selectors5) {
      return;
    }
    const featureSelectors = {};
    Object.entries(selectors5).forEach(([feature, selector2]) => {
      if (typeof selector2 === "string") {
        featureSelectors[feature] = scopeSelector(scope, selector2);
      }
      if (typeof selector2 === "object") {
        featureSelectors[feature] = {};
        Object.entries(selector2).forEach(
          ([subfeature, subfeatureSelector]) => {
            featureSelectors[feature][subfeature] = scopeSelector(
              scope,
              subfeatureSelector
            );
          }
        );
      }
    });
    return featureSelectors;
  }
  function appendToSelector(selector2, toAppend) {
    if (!selector2.includes(",")) {
      return selector2 + toAppend;
    }
    const selectors5 = splitSelectorList(selector2);
    const newSelectors = selectors5.map((sel) => sel + toAppend);
    return newSelectors.join(",");
  }
  function getBlockStyleVariationSelector(variation, blockSelector) {
    const variationClass = `.is-style-${variation}`;
    if (!blockSelector) {
      return variationClass;
    }
    const ancestorRegex = /[^\s:]+/;
    const addVariationClass = (match3) => match3 + variationClass;
    const result = splitSelectorList(blockSelector).map(
      (part) => part.replace(ancestorRegex, addVariationClass)
    );
    return result.join(",");
  }
  function getBlockStyleVariationFeatureSelector(variation, featureSelector) {
    const variationClass = `.is-style-${variation}`;
    const selectorParts = splitSelectorList(featureSelector).map(
      (selector2) => {
        const trimmedSelector = selector2.trim();
        const prefix2 = `${variationClass} `;
        if (trimmedSelector.startsWith(prefix2)) {
          return trimmedSelector.slice(prefix2.length);
        }
        return trimmedSelector;
      }
    );
    return getBlockStyleVariationSelector(
      variation,
      selectorParts.join(",")
    );
  }
  function getResolvedRefValue(ruleValue, tree) {
    if (!ruleValue || !tree) {
      return ruleValue;
    }
    if (typeof ruleValue === "object" && "ref" in ruleValue && ruleValue?.ref) {
      const resolvedRuleValue = (0, import_style_engine.getCSSValueFromRawStyle)(
        getValueFromObjectPath(tree, ruleValue.ref)
      );
      if (typeof resolvedRuleValue === "object" && resolvedRuleValue !== null && "ref" in resolvedRuleValue && resolvedRuleValue?.ref) {
        return void 0;
      }
      if (resolvedRuleValue === void 0) {
        return ruleValue;
      }
      return resolvedRuleValue;
    }
    return ruleValue;
  }
  function getResolvedThemeFilePath(file, themeFileURIs) {
    if (!file || !themeFileURIs || !Array.isArray(themeFileURIs)) {
      return file;
    }
    const uri = themeFileURIs.find(
      (themeFileUri) => themeFileUri?.name === file
    );
    if (!uri?.href) {
      return file;
    }
    return uri?.href;
  }
  function getResolvedValue(ruleValue, tree) {
    if (!ruleValue || !tree) {
      return ruleValue;
    }
    const resolvedValue = getResolvedRefValue(ruleValue, tree);
    if (typeof resolvedValue === "object" && resolvedValue !== null && "url" in resolvedValue && resolvedValue?.url) {
      return {
        ...resolvedValue,
        url: getResolvedThemeFilePath(
          resolvedValue.url,
          tree?._links?.["wp:theme-file"]
        )
      };
    }
    return resolvedValue;
  }
  function findInPresetsBy(settings, blockName, presetPath = [], presetProperty = "slug", presetValueValue) {
    const orderedPresetsByOrigin = [
      blockName ? getValueFromObjectPath(settings, [
        "blocks",
        blockName,
        ...presetPath
      ]) : void 0,
      getValueFromObjectPath(settings, presetPath)
    ].filter(Boolean);
    for (const presetByOrigin of orderedPresetsByOrigin) {
      if (presetByOrigin) {
        const origins = ["custom", "theme", "default"];
        for (const origin of origins) {
          const presets = presetByOrigin[origin];
          if (presets) {
            const presetObject = presets.find(
              (preset) => preset[presetProperty] === presetValueValue
            );
            if (presetObject) {
              if (presetProperty === "slug") {
                return presetObject;
              }
              const highestPresetObjectWithSameSlug = findInPresetsBy(
                settings,
                blockName,
                presetPath,
                "slug",
                presetObject.slug
              );
              if (highestPresetObjectWithSameSlug[presetProperty] === presetObject[presetProperty]) {
                return presetObject;
              }
              return void 0;
            }
          }
        }
      }
    }
  }
  function getValueFromPresetVariable(features, blockName, variable, [presetType, slug] = []) {
    const metadata = PRESET_METADATA.find(
      (data) => data.cssVarInfix === presetType
    );
    if (!metadata || !features.settings) {
      return variable;
    }
    const presetObject = findInPresetsBy(
      features.settings,
      blockName,
      metadata.path,
      "slug",
      slug
    );
    if (presetObject) {
      const { valueKey } = metadata;
      const result = presetObject[valueKey];
      return getValueFromVariable(features, blockName, result);
    }
    return variable;
  }
  function getValueFromCustomVariable(features, blockName, variable, path = []) {
    const result = (blockName ? getValueFromObjectPath(features?.settings ?? {}, [
      "blocks",
      blockName,
      "custom",
      ...path
    ]) : void 0) ?? getValueFromObjectPath(features?.settings ?? {}, [
      "custom",
      ...path
    ]);
    if (!result) {
      return variable;
    }
    return getValueFromVariable(features, blockName, result);
  }
  function getValueFromVariable(features, blockName, variable) {
    if (!variable || typeof variable !== "string") {
      if (typeof variable === "object" && variable !== null && "ref" in variable && typeof variable.ref === "string") {
        const resolvedVariable = getValueFromObjectPath(
          features,
          variable.ref
        );
        if (!resolvedVariable || typeof resolvedVariable === "object" && "ref" in resolvedVariable) {
          return resolvedVariable;
        }
        variable = resolvedVariable;
      } else {
        return variable;
      }
    }
    const USER_VALUE_PREFIX = "var:";
    const THEME_VALUE_PREFIX = "var(--wp--";
    const THEME_VALUE_SUFFIX = ")";
    let parsedVar;
    if (variable.startsWith(USER_VALUE_PREFIX)) {
      parsedVar = variable.slice(USER_VALUE_PREFIX.length).split("|");
    } else if (variable.startsWith(THEME_VALUE_PREFIX) && variable.endsWith(THEME_VALUE_SUFFIX)) {
      parsedVar = variable.slice(THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length).split("--");
    } else {
      return variable;
    }
    const [type, ...path] = parsedVar;
    if (type === "preset") {
      return getValueFromPresetVariable(
        features,
        blockName,
        variable,
        path
      );
    }
    if (type === "custom") {
      return getValueFromCustomVariable(
        features,
        blockName,
        variable,
        path
      );
    }
    return variable;
  }

  // packages/global-styles-engine/build-module/style-state-back-compat.mjs
  var LEGACY_STYLE_STATE_ALIASES = {
    "@mobile": "mobile",
    "@tablet": "tablet",
    "-current": "@current"
  };
  function isObjectRecord(value) {
    return !!value && typeof value === "object" && !Array.isArray(value);
  }
  function normalizeStyleStateNode(node) {
    if (!isObjectRecord(node)) {
      return node;
    }
    let normalized = node;
    Object.entries(LEGACY_STYLE_STATE_ALIASES).forEach(
      ([state2, legacyState]) => {
        if (Object.hasOwn(node, legacyState)) {
          if (normalized === node) {
            normalized = { ...node };
          }
          if (!Object.hasOwn(node, state2)) {
            normalized[state2] = node[legacyState];
          }
          delete normalized[legacyState];
        }
      }
    );
    Object.entries(normalized).forEach(([key, value]) => {
      if (!isObjectRecord(value)) {
        return;
      }
      const normalizedValue = normalizeStyleStateNode(value);
      if (normalizedValue !== value) {
        if (normalized === node) {
          normalized = { ...node };
        }
        normalized[key] = normalizedValue;
      }
    });
    return normalized;
  }
  function normalizeStyleStateAliases(globalStyles) {
    if (false) {
      return globalStyles;
    }
    if (!globalStyles?.styles) {
      return globalStyles;
    }
    const styles = normalizeStyleStateNode(globalStyles.styles);
    return styles === globalStyles.styles ? globalStyles : { ...globalStyles, styles };
  }
  function getLegacyStyleStatePath(path) {
    if (false) {
      return void 0;
    }
    const pathParts = path.split(".");
    const legacyPathParts = pathParts.map(
      (part) => LEGACY_STYLE_STATE_ALIASES[part] ?? part
    );
    return legacyPathParts.some(
      (part, index3) => part !== pathParts[index3]
    ) ? legacyPathParts.join(".") : void 0;
  }

  // packages/global-styles-engine/build-module/settings/get-style.mjs
  function getStyle(globalStyles, path, blockName, shouldDecodeEncode = true) {
    const appendedPath = path ? "." + path : "";
    const finalPath = !blockName ? `styles${appendedPath}` : `styles.blocks.${blockName}${appendedPath}`;
    if (!globalStyles) {
      return void 0;
    }
    let rawResult = getValueFromObjectPath(globalStyles, finalPath);
    const legacyPath = getLegacyStyleStatePath(finalPath);
    if (rawResult === void 0 && legacyPath) {
      let hasCanonicalPath = true;
      let currentValue = globalStyles;
      for (const pathPart of finalPath.split(".")) {
        if (!currentValue || typeof currentValue !== "object" || !Object.hasOwn(currentValue, pathPart)) {
          hasCanonicalPath = false;
          break;
        }
        currentValue = currentValue[pathPart];
      }
      if (!hasCanonicalPath) {
        rawResult = getValueFromObjectPath(globalStyles, legacyPath);
      }
    }
    const result = shouldDecodeEncode ? getValueFromVariable(globalStyles, blockName, rawResult) : rawResult;
    return result;
  }

  // packages/global-styles-engine/build-module/settings/set-style.mjs
  function setStyle(globalStyles, path, newValue, blockName) {
    const appendedPath = path ? "." + path : "";
    const finalPath = !blockName ? `styles${appendedPath}` : `styles.blocks.${blockName}${appendedPath}`;
    return setImmutably(
      normalizeStyleStateAliases(globalStyles),
      finalPath.split("."),
      newValue
    );
  }

  // packages/global-styles-engine/build-module/core/equal.mjs
  var import_es6 = __toESM(require_es6(), 1);
  function areGlobalStylesEqual(original, variation) {
    if (typeof original !== "object" || typeof variation !== "object") {
      return original === variation;
    }
    return (0, import_es6.default)(original?.styles, variation?.styles) && (0, import_es6.default)(original?.settings, variation?.settings);
  }

  // packages/global-styles-engine/build-module/core/merge.mjs
  var import_deepmerge = __toESM(require_cjs(), 1);

  // node_modules/is-plain-object/dist/is-plain-object.mjs
  function isObject(o3) {
    return Object.prototype.toString.call(o3) === "[object Object]";
  }
  function isPlainObject(o3) {
    var ctor, prot;
    if (isObject(o3) === false) return false;
    ctor = o3.constructor;
    if (ctor === void 0) return true;
    prot = ctor.prototype;
    if (isObject(prot) === false) return false;
    if (prot.hasOwnProperty("isPrototypeOf") === false) {
      return false;
    }
    return true;
  }

  // packages/global-styles-engine/build-module/core/merge.mjs
  function mergeGlobalStyles(base, user) {
    return (0, import_deepmerge.default)(
      normalizeStyleStateAliases(base),
      normalizeStyleStateAliases(user),
      {
        /*
         * We only pass as arrays the presets,
         * in which case we want the new array of values
         * to override the old array (no merging).
         */
        isMergeableObject: isPlainObject,
        /*
         * Exceptions to the above rule.
         * Background images should be replaced, not merged,
         * as they themselves are specific object definitions for the style.
         */
        customMerge: (key) => {
          if (key === "backgroundImage") {
            return (baseConfig, userConfig) => userConfig ?? baseConfig;
          }
          return void 0;
        }
      }
    );
  }

  // node_modules/memize/dist/index.js
  function memize(fn, options) {
    var size4 = 0;
    var head2;
    var tail;
    options = options || {};
    function memoized() {
      var node = head2, len2 = arguments.length, args, i2;
      searchCache: while (node) {
        if (node.args.length !== arguments.length) {
          node = node.next;
          continue;
        }
        for (i2 = 0; i2 < len2; i2++) {
          if (node.args[i2] !== arguments[i2]) {
            node = node.next;
            continue searchCache;
          }
        }
        if (node !== head2) {
          if (node === tail) {
            tail = node.prev;
          }
          node.prev.next = node.next;
          if (node.next) {
            node.next.prev = node.prev;
          }
          node.next = head2;
          node.prev = null;
          head2.prev = node;
          head2 = node;
        }
        return node.val;
      }
      args = new Array(len2);
      for (i2 = 0; i2 < len2; i2++) {
        args[i2] = arguments[i2];
      }
      node = {
        args,
        // Generate the result from original function
        val: fn.apply(null, args)
      };
      if (head2) {
        head2.prev = node;
        node.next = head2;
      } else {
        tail = node;
      }
      if (size4 === /** @type {MemizeOptions} */
      options.maxSize) {
        tail = /** @type {MemizeCacheNode} */
        tail.prev;
        tail.next = null;
      } else {
        size4++;
      }
      head2 = node;
      return node.val;
    }
    memoized.clear = function() {
      head2 = null;
      tail = null;
      size4 = 0;
    };
    return memoized;
  }

  // packages/global-styles-engine/build-module/utils/get-global-styles-changes.mjs
  var import_i18n = __toESM(require_i18n(), 1);
  var import_blocks = __toESM(require_blocks(), 1);
  var globalStylesChangesCache = /* @__PURE__ */ new Map();
  var EMPTY_ARRAY = [];
  var translationMap = {
    caption: (0, import_i18n.__)("Caption"),
    link: (0, import_i18n.__)("Link"),
    button: (0, import_i18n.__)("Button"),
    heading: (0, import_i18n.__)("Heading"),
    h1: (0, import_i18n.__)("H1"),
    h2: (0, import_i18n.__)("H2"),
    h3: (0, import_i18n.__)("H3"),
    h4: (0, import_i18n.__)("H4"),
    h5: (0, import_i18n.__)("H5"),
    h6: (0, import_i18n.__)("H6"),
    "settings.color": (0, import_i18n.__)("Color"),
    "settings.typography": (0, import_i18n.__)("Typography"),
    "settings.shadow": (0, import_i18n.__)("Shadow"),
    "settings.layout": (0, import_i18n.__)("Layout"),
    "styles.color": (0, import_i18n.__)("Colors"),
    "styles.spacing": (0, import_i18n.__)("Spacing"),
    "styles.background": (0, import_i18n.__)("Background"),
    "styles.typography": (0, import_i18n.__)("Typography"),
    "styles.border": (0, import_i18n.__)("Border"),
    "styles.shadow": (0, import_i18n.__)("Shadow"),
    "styles.outline": (0, import_i18n.__)("Outline"),
    "styles.filter": (0, import_i18n.__)("Filter"),
    "styles.dimensions": (0, import_i18n.__)("Dimensions")
  };
  var getBlockNames = memize(
    () => (0, import_blocks.getBlockTypes)().reduce(
      (accumulator, {
        name: name2,
        title
      }) => {
        accumulator[name2] = title;
        return accumulator;
      },
      {}
    )
  );
  var isObject2 = (obj) => obj !== null && typeof obj === "object";
  function getTranslation(key) {
    if (translationMap[key]) {
      return translationMap[key];
    }
    const keyArray = key.split(".");
    if (keyArray?.[0] === "blocks") {
      const blockName = getBlockNames()?.[keyArray[1]];
      return blockName || keyArray[1];
    }
    if (keyArray?.[0] === "elements") {
      return translationMap[keyArray[1]] || keyArray[1];
    }
    return void 0;
  }
  function deepCompare(changedObject, originalObject, parentPath = "") {
    if (!isObject2(changedObject) && !isObject2(originalObject)) {
      return changedObject !== originalObject ? parentPath.split(".").slice(0, 2).join(".") : void 0;
    }
    changedObject = isObject2(changedObject) ? changedObject : {};
    originalObject = isObject2(originalObject) ? originalObject : {};
    const allKeys = /* @__PURE__ */ new Set([
      ...Object.keys(changedObject),
      ...Object.keys(originalObject)
    ]);
    let diffs = [];
    for (const key of allKeys) {
      const path = parentPath ? parentPath + "." + key : key;
      const changedPath = deepCompare(
        changedObject[key],
        originalObject[key],
        path
      );
      if (changedPath) {
        diffs = diffs.concat(changedPath);
      }
    }
    return diffs;
  }
  var COMPARED_STYLE_KEYS = [
    "background",
    "color",
    "typography",
    "spacing",
    "border",
    "shadow",
    "outline",
    "filter",
    "dimensions"
  ];
  function pickComparedStyles(config2) {
    return Object.fromEntries(
      COMPARED_STYLE_KEYS.map((key) => [key, config2?.styles?.[key]])
    );
  }
  function getGlobalStylesChangelist(next, previous) {
    const cacheKey2 = JSON.stringify({ next, previous });
    if (globalStylesChangesCache.has(cacheKey2)) {
      return globalStylesChangesCache.get(cacheKey2);
    }
    const changedValueTree = deepCompare(
      {
        styles: pickComparedStyles(next),
        blocks: next?.styles?.blocks,
        elements: next?.styles?.elements,
        settings: next?.settings
      },
      {
        styles: pickComparedStyles(previous),
        blocks: previous?.styles?.blocks,
        elements: previous?.styles?.elements,
        settings: previous?.settings
      }
    );
    if (!changedValueTree || Array.isArray(changedValueTree) && !changedValueTree.length) {
      globalStylesChangesCache.set(cacheKey2, []);
      return [];
    }
    const changedValueArray = Array.isArray(changedValueTree) ? changedValueTree : [changedValueTree];
    const result = [...new Set(changedValueArray)].reduce((acc, curr) => {
      const translation = getTranslation(curr);
      if (translation) {
        acc.push([curr.split(".")[0], translation]);
      }
      return acc;
    }, []);
    globalStylesChangesCache.set(cacheKey2, result);
    return result;
  }
  function getGlobalStylesChanges(next, previous, options = {}) {
    let changeList = getGlobalStylesChangelist(next, previous);
    const changesLength = changeList.length;
    const { maxResults } = options;
    if (changesLength) {
      if (!!maxResults && changesLength > maxResults) {
        changeList = changeList.slice(0, maxResults);
      }
      return Object.entries(
        changeList.reduce((acc, curr) => {
          const group = acc[curr[0]] || [];
          if (!group.includes(curr[1])) {
            acc[curr[0]] = [...group, curr[1]];
          }
          return acc;
        }, {})
      ).map(([key, changeValues]) => {
        const changeValuesLength = changeValues.length;
        const joinedChangesValue = changeValues.join(
          /* translators: Used between list items, there is a space after the comma. */
          (0, import_i18n.__)(", ")
          // eslint-disable-line @wordpress/i18n-no-flanking-whitespace
        );
        switch (key) {
          case "blocks": {
            return (0, import_i18n.sprintf)(
              // translators: %s: a list of block names separated by a comma.
              (0, import_i18n._n)("%s block.", "%s blocks.", changeValuesLength),
              joinedChangesValue
            );
          }
          case "elements": {
            return (0, import_i18n.sprintf)(
              // translators: %s: a list of element names separated by a comma.
              (0, import_i18n._n)("%s element.", "%s elements.", changeValuesLength),
              joinedChangesValue
            );
          }
          case "settings": {
            return (0, import_i18n.sprintf)(
              // translators: %s: a list of theme.json setting labels separated by a comma.
              (0, import_i18n.__)("%s settings."),
              joinedChangesValue
            );
          }
          case "styles": {
            return (0, import_i18n.sprintf)(
              // translators: %s: a list of theme.json top-level styles labels separated by a comma.
              (0, import_i18n.__)("%s styles."),
              joinedChangesValue
            );
          }
          default: {
            return (0, import_i18n.sprintf)(
              // translators: %s: a list of global styles changes separated by a comma.
              (0, import_i18n.__)("%s."),
              joinedChangesValue
            );
          }
        }
      });
    }
    return EMPTY_ARRAY;
  }

  // packages/global-styles-engine/build-module/core/render.mjs
  var import_blocks2 = __toESM(require_blocks(), 1);
  var import_style_engine2 = __toESM(require_style_engine(), 1);
  var import_data3 = __toESM(require_data(), 1);

  // packages/global-styles-engine/build-module/core/selectors.mjs
  function getBlockSelector(blockType, target = "root", options = {}) {
    if (!target) {
      return null;
    }
    const { fallback = false } = options;
    const { name: name2, selectors: selectors5, supports } = blockType;
    const hasSelectors = selectors5 && Object.keys(selectors5).length > 0;
    const path = Array.isArray(target) ? target.join(".") : target;
    let rootSelector = null;
    if (hasSelectors && selectors5.root) {
      rootSelector = selectors5?.root;
    } else if (supports?.__experimentalSelector) {
      rootSelector = supports.__experimentalSelector;
    } else {
      rootSelector = ".wp-block-" + name2.replace("core/", "").replace("/", "-");
    }
    if (path === "root") {
      return rootSelector;
    }
    const pathArray = Array.isArray(target) ? target : target.split(".");
    if (pathArray.length === 1) {
      const fallbackSelector = fallback ? rootSelector : null;
      if (hasSelectors) {
        const featureSelector2 = getValueFromObjectPath(
          selectors5,
          `${path}.root`,
          null
        ) || getValueFromObjectPath(selectors5, path, null);
        return featureSelector2 || fallbackSelector;
      }
      const featureSelector = supports ? getValueFromObjectPath(
        supports,
        `${path}.__experimentalSelector`,
        null
      ) : void 0;
      if (!featureSelector) {
        return fallbackSelector;
      }
      return scopeSelector(rootSelector, featureSelector);
    }
    let subfeatureSelector;
    if (hasSelectors) {
      subfeatureSelector = getValueFromObjectPath(selectors5, path, null);
    }
    if (subfeatureSelector) {
      return subfeatureSelector;
    }
    if (fallback) {
      return getBlockSelector(blockType, pathArray[0], options);
    }
    return null;
  }

  // node_modules/colord/index.mjs
  for (r4 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }, t3 = function(r5) {
    return "string" == typeof r5 ? r5.length > 0 : "number" == typeof r5;
  }, n2 = function(r5, t4, n3) {
    return void 0 === t4 && (t4 = 0), void 0 === n3 && (n3 = Math.pow(10, t4)), Math.round(n3 * r5) / n3 + 0;
  }, u2 = function(r5, t4, n3) {
    return void 0 === t4 && (t4 = 0), void 0 === n3 && (n3 = 1), r5 > n3 ? n3 : r5 > t4 ? r5 : t4;
  }, e2 = function(r5) {
    return (r5 = isFinite(r5) ? r5 % 360 : 0) < 0 ? r5 + 360 : r5;
  }, o3 = function(r5, t4) {
    return void 0 === t4 && (t4 = 0), n2(r5, t4) % 360;
  }, a2 = function(r5) {
    return { r: u2(r5.r, 0, 255), g: u2(r5.g, 0, 255), b: u2(r5.b, 0, 255), a: u2(r5.a) };
  }, i2 = function(r5) {
    return { r: n2(r5.r), g: n2(r5.g), b: n2(r5.b), a: n2(r5.a, 3) };
  }, s2 = /^#([0-9a-f]{3,8})$/i, d2 = function(r5, t4) {
    var n3 = r5.charCodeAt(t4);
    return (15 & n3) + 9 * (n3 >> 6);
  }, h2 = function(r5, t4) {
    return d2(r5, t4) << 4 | d2(r5, t4 + 1);
  }, b2 = [], f2 = 0; f2 < 256; f2++) b2.push((f2 < 16 ? "0" : "") + f2.toString(16));
  var r4;
  var t3;
  var n2;
  var u2;
  var e2;
  var o3;
  var a2;
  var i2;
  var s2;
  var d2;
  var h2;
  var b2;
  var f2;
  var g = function(r4) {
    return b2[u2(r4, 0, 255)];
  };
  var c = function(r4) {
    var t3 = r4.r, n2 = r4.g, u2 = r4.b, e2 = r4.a, o3 = Math.max(t3, n2, u2), a2 = o3 - Math.min(t3, n2, u2), i2 = a2 ? o3 === t3 ? (n2 - u2) / a2 : o3 === n2 ? 2 + (u2 - t3) / a2 : 4 + (t3 - n2) / a2 : 0;
    return { h: 60 * (i2 < 0 ? i2 + 6 : i2), s: o3 ? a2 / o3 * 100 : 0, v: o3 / 255 * 100, a: e2 };
  };
  var v = function(r4) {
    var t3 = r4.h, n2 = r4.s, u2 = r4.v, e2 = r4.a;
    t3 = t3 / 360 * 6, n2 /= 100, u2 /= 100;
    var o3 = Math.floor(t3), a2 = u2 * (1 - n2), i2 = u2 * (1 - (t3 - o3) * n2), s2 = u2 * (1 - (1 - t3 + o3) * n2), d2 = o3 % 6;
    return { r: 255 * [u2, i2, a2, a2, s2, u2][d2], g: 255 * [s2, u2, u2, i2, a2, a2][d2], b: 255 * [a2, a2, s2, u2, u2, i2][d2], a: e2 };
  };
  var l = function(r4) {
    return { h: e2(r4.h), s: u2(r4.s, 0, 100), l: u2(r4.l, 0, 100), a: u2(r4.a) };
  };
  var p2 = function(r4) {
    return { h: o3(r4.h), s: n2(r4.s), l: n2(r4.l), a: n2(r4.a, 3) };
  };
  var m = function(r4) {
    return v((n2 = (t3 = r4).s, { h: t3.h, s: (n2 *= ((u2 = t3.l) < 50 ? u2 : 100 - u2) / 100) > 0 ? 2 * n2 / (u2 + n2) * 100 : 0, v: u2 + n2, a: t3.a }));
    var t3, n2, u2;
  };
  var y = function(r4) {
    return { h: (t3 = c(r4)).h, s: (e2 = (200 - (n2 = t3.s)) * (u2 = t3.v) / 100) > 0 && e2 < 200 ? n2 * u2 / 100 / (e2 <= 100 ? e2 : 200 - e2) * 100 : 0, l: e2 / 2, a: t3.a };
    var t3, n2, u2, e2;
  };
  var N = /^hsla?\(\s*([+-]?(?:\d*\.\d+|\d+))(deg|rad|grad|turn)?\s*,\s*([+-]?(?:\d*\.\d+|\d+))%\s*,\s*([+-]?(?:\d*\.\d+|\d+))%\s*(?:,\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*)?\)$/i;
  var x = /^hsla?\(\s*([+-]?(?:\d*\.\d+|\d+))(deg|rad|grad|turn)?\s+([+-]?(?:\d*\.\d+|\d+))%\s+([+-]?(?:\d*\.\d+|\d+))%\s*(?:\/\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*)?\)$/i;
  var M = /^rgba?\(\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*,\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*,\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*(?:,\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*)?\)$/i;
  var H = /^rgba?\(\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s+([+-]?(?:\d*\.\d+|\d+))(%)?\s+([+-]?(?:\d*\.\d+|\d+))(%)?\s*(?:\/\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*)?\)$/i;
  var $ = { string: [[function(r4) {
    if (!s2.test(r4)) return null;
    var t3 = r4.length;
    return t3 <= 5 ? { r: 17 * d2(r4, 1), g: 17 * d2(r4, 2), b: 17 * d2(r4, 3), a: 5 === t3 ? n2(17 * d2(r4, 4) / 255, 2) : 1 } : 7 === t3 || 9 === t3 ? { r: h2(r4, 1), g: h2(r4, 3), b: h2(r4, 5), a: 9 === t3 ? n2(h2(r4, 7) / 255, 2) : 1 } : null;
  }, "hex"], [function(r4) {
    var t3 = M.exec(r4) || H.exec(r4);
    return t3 ? t3[2] !== t3[4] || t3[4] !== t3[6] ? null : a2({ 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;
  }, "rgb"], [function(t3) {
    var n2 = N.exec(t3) || x.exec(t3);
    if (!n2) return null;
    var u2, e2, o3 = l({ h: (u2 = n2[1], e2 = n2[2], void 0 === e2 && (e2 = "deg"), Number(u2) * (r4[e2] || 1)), s: Number(n2[3]), l: Number(n2[4]), a: void 0 === n2[5] ? 1 : Number(n2[5]) / (n2[6] ? 100 : 1) });
    return m(o3);
  }, "hsl"]], object: [[function(r4) {
    var n2 = r4.r, u2 = r4.g, e2 = r4.b, o3 = r4.a, i2 = void 0 === o3 ? 1 : o3;
    return t3(n2) && t3(u2) && t3(e2) ? a2({ r: Number(n2), g: Number(u2), b: Number(e2), a: Number(i2) }) : null;
  }, "rgb"], [function(r4) {
    var n2 = r4.h, u2 = r4.s, e2 = r4.l, o3 = r4.a, a2 = void 0 === o3 ? 1 : o3;
    if (!t3(n2) || !t3(u2) || !t3(e2)) return null;
    var i2 = l({ h: Number(n2), s: Number(u2), l: Number(e2), a: Number(a2) });
    return m(i2);
  }, "hsl"], [function(r4) {
    var n2 = r4.h, o3 = r4.s, a2 = r4.v, i2 = r4.a, s2 = void 0 === i2 ? 1 : i2;
    if (!t3(n2) || !t3(o3) || !t3(a2)) return null;
    var d2 = (function(r5) {
      return { h: e2(r5.h), s: u2(r5.s, 0, 100), v: u2(r5.v, 0, 100), a: u2(r5.a) };
    })({ h: Number(n2), s: Number(o3), v: Number(a2), a: Number(s2) });
    return v(d2);
  }, "hsv"]] };
  var j = function(r4, t3) {
    for (var n2 = 0; n2 < t3.length; n2++) {
      var u2 = t3[n2][0](r4);
      if (u2) return [u2, t3[n2][1]];
    }
    return [null, void 0];
  };
  var w = function(r4) {
    return "string" == typeof r4 ? j(r4.trim(), $.string) : "object" == typeof r4 && null !== r4 ? j(r4, $.object) : [null, void 0];
  };
  var k = function(r4, t3) {
    var n2 = y(r4);
    return { h: n2.h, s: u2(n2.s + 100 * t3, 0, 100), l: n2.l, a: n2.a };
  };
  var E = function(r4) {
    return (299 * r4.r + 587 * r4.g + 114 * r4.b) / 1e3 / 255;
  };
  var R = function(r4, t3) {
    var n2 = y(r4);
    return { h: n2.h, s: n2.s, l: u2(n2.l + 100 * t3, 0, 100), a: n2.a };
  };
  var q = (function() {
    function r4(r5) {
      this.parsed = w(r5)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 };
    }
    return r4.prototype.isValid = function() {
      return null !== this.parsed;
    }, r4.prototype.brightness = function() {
      return n2(E(this.rgba), 2);
    }, r4.prototype.isDark = function() {
      return E(this.rgba) < 0.5;
    }, r4.prototype.isLight = function() {
      return E(this.rgba) >= 0.5;
    }, r4.prototype.toHex = function() {
      return r5 = i2(this.rgba), t3 = r5.r, u2 = r5.g, e2 = r5.b, a2 = (o3 = r5.a) < 1 ? g(n2(255 * o3)) : "", "#" + g(t3) + g(u2) + g(e2) + a2;
      var r5, t3, u2, e2, o3, a2;
    }, r4.prototype.toRgb = function() {
      return i2(this.rgba);
    }, r4.prototype.toRgbString = function() {
      return r5 = i2(this.rgba), t3 = r5.r, n2 = r5.g, u2 = r5.b, (e2 = r5.a) < 1 ? "rgba(" + t3 + ", " + n2 + ", " + u2 + ", " + e2 + ")" : "rgb(" + t3 + ", " + n2 + ", " + u2 + ")";
      var r5, t3, n2, u2, e2;
    }, r4.prototype.toHsl = function() {
      return p2(y(this.rgba));
    }, r4.prototype.toHslString = function() {
      return r5 = p2(y(this.rgba)), t3 = r5.h, n2 = r5.s, u2 = r5.l, (e2 = r5.a) < 1 ? "hsla(" + t3 + ", " + n2 + "%, " + u2 + "%, " + e2 + ")" : "hsl(" + t3 + ", " + n2 + "%, " + u2 + "%)";
      var r5, t3, n2, u2, e2;
    }, r4.prototype.toHsv = function() {
      return r5 = c(this.rgba), { h: o3(r5.h), s: n2(r5.s), v: n2(r5.v), a: n2(r5.a, 3) };
      var r5;
    }, r4.prototype.invert = function() {
      return A({ r: 255 - (r5 = this.rgba).r, g: 255 - r5.g, b: 255 - r5.b, a: r5.a });
      var r5;
    }, r4.prototype.saturate = function(r5) {
      return void 0 === r5 && (r5 = 0.1), A(k(this.rgba, r5));
    }, r4.prototype.desaturate = function(r5) {
      return void 0 === r5 && (r5 = 0.1), A(k(this.rgba, -r5));
    }, r4.prototype.grayscale = function() {
      return A(k(this.rgba, -1));
    }, r4.prototype.lighten = function(r5) {
      return void 0 === r5 && (r5 = 0.1), A(R(this.rgba, r5));
    }, r4.prototype.darken = function(r5) {
      return void 0 === r5 && (r5 = 0.1), A(R(this.rgba, -r5));
    }, r4.prototype.rotate = function(r5) {
      return void 0 === r5 && (r5 = 15), this.hue(y(this.rgba).h + r5);
    }, r4.prototype.alpha = function(r5) {
      return "number" == typeof r5 ? A({ r: (t3 = this.rgba).r, g: t3.g, b: t3.b, a: r5 }) : n2(this.rgba.a, 3);
      var t3;
    }, r4.prototype.hue = function(r5) {
      var t3 = y(this.rgba);
      return "number" == typeof r5 ? A({ h: r5, s: t3.s, l: t3.l, a: t3.a }) : o3(t3.h);
    }, r4.prototype.isEqual = function(r5) {
      return this.toHex() === A(r5).toHex();
    }, r4;
  })();
  var A = function(r4) {
    return r4 instanceof q ? r4 : new q(r4);
  };
  var C = [];
  var D = function(r4) {
    r4.forEach(function(r5) {
      C.indexOf(r5) < 0 && (r5(q, $), C.push(r5));
    });
  };

  // packages/global-styles-engine/build-module/utils/duotone.mjs
  function getValuesFromColors(colors2 = []) {
    const values = {
      r: [],
      g: [],
      b: [],
      a: []
    };
    colors2.forEach((color) => {
      const rgbColor = A(color).toRgb();
      values.r.push(rgbColor.r / 255);
      values.g.push(rgbColor.g / 255);
      values.b.push(rgbColor.b / 255);
      values.a.push(rgbColor.a);
    });
    return values;
  }
  function getDuotoneUnsetStylesheet(selector2) {
    return `${selector2}{filter:none}`;
  }
  function getDuotoneStylesheet(selector2, id) {
    return `${selector2}{filter:url(#${id})}`;
  }
  function getDuotoneFilter(id, colors2) {
    const values = getValuesFromColors(colors2);
    return `
<svg
	xmlns:xlink="http://www.w3.org/1999/xlink"
	viewBox="0 0 0 0"
	width="0"
	height="0"
	focusable="false"
	role="none"
	aria-hidden="true"
	style="visibility: hidden; position: absolute; left: -9999px; overflow: hidden;"
>
	<defs>
		<filter id="${id}">
			<!--
				Use sRGB instead of linearRGB so transparency looks correct.
				Use perceptual brightness to convert to grayscale.
			-->
			<feColorMatrix color-interpolation-filters="sRGB" type="matrix" values=" .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 "></feColorMatrix>
			<!-- Use sRGB instead of linearRGB to be consistent with how CSS gradients work. -->
			<feComponentTransfer color-interpolation-filters="sRGB">
				<feFuncR type="table" tableValues="${values.r.join(" ")}"></feFuncR>
				<feFuncG type="table" tableValues="${values.g.join(" ")}"></feFuncG>
				<feFuncB type="table" tableValues="${values.b.join(" ")}"></feFuncB>
				<feFuncA type="table" tableValues="${values.a.join(" ")}"></feFuncA>
			</feComponentTransfer>
			<!-- Re-mask the image with the original transparency since the feColorMatrix above loses that information. -->
			<feComposite in2="SourceGraphic" operator="in"></feComposite>
		</filter>
	</defs>
</svg>`;
  }

  // packages/global-styles-engine/build-module/utils/string.mjs
  function kebabCase(str3) {
    return str3.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/([0-9])([a-zA-Z])/g, "$1-$2").replace(/([a-zA-Z])([0-9])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
  }

  // packages/global-styles-engine/build-module/utils/spacing.mjs
  function getSpacingPresetCssVar(value) {
    if (!value) {
      return;
    }
    const slug = value.match(/var:preset\|spacing\|(.+)/);
    if (!slug) {
      return value;
    }
    return `var(--wp--preset--spacing--${slug[1]})`;
  }

  // packages/global-styles-engine/build-module/utils/gap.mjs
  function getGapBoxControlValueFromStyle(blockGapValue) {
    if (!blockGapValue) {
      return null;
    }
    const isValueString = typeof blockGapValue === "string";
    return {
      top: isValueString ? blockGapValue : blockGapValue?.top,
      left: isValueString ? blockGapValue : blockGapValue?.left
    };
  }
  function getGapCSSValue(blockGapValue, defaultValue2 = "0") {
    const blockGapBoxControlValue = getGapBoxControlValueFromStyle(blockGapValue);
    if (!blockGapBoxControlValue) {
      return null;
    }
    const row = getSpacingPresetCssVar(blockGapBoxControlValue?.top) || defaultValue2;
    const column = getSpacingPresetCssVar(blockGapBoxControlValue?.left) || defaultValue2;
    return row === column ? row : `${row} ${column}`;
  }

  // packages/global-styles-engine/build-module/utils/background.mjs
  var BACKGROUND_BLOCK_DEFAULT_VALUES = {
    backgroundSize: "cover",
    backgroundPosition: "50% 50%"
    // used only when backgroundSize is 'contain'.
  };
  function hasImageUrl(backgroundImage) {
    return typeof backgroundImage === "object" && backgroundImage !== null && "url" in backgroundImage && !!backgroundImage.url;
  }
  function setBackgroundStyleDefaults(backgroundStyle) {
    if (!backgroundStyle || !hasImageUrl(backgroundStyle.backgroundImage)) {
      return;
    }
    let backgroundStylesWithDefaults;
    if (!backgroundStyle?.backgroundSize) {
      backgroundStylesWithDefaults = {
        backgroundSize: BACKGROUND_BLOCK_DEFAULT_VALUES.backgroundSize
      };
    }
    if ("contain" === backgroundStyle?.backgroundSize && !backgroundStyle?.backgroundPosition) {
      backgroundStylesWithDefaults = {
        backgroundPosition: BACKGROUND_BLOCK_DEFAULT_VALUES.backgroundPosition
      };
    }
    return backgroundStylesWithDefaults;
  }

  // packages/global-styles-engine/build-module/utils/layout.mjs
  var LAYOUT_DEFINITIONS = {
    default: {
      name: "default",
      slug: "flow",
      className: "is-layout-flow",
      baseStyles: [
        {
          selector: " > .alignleft",
          rules: {
            float: "left",
            "margin-inline-start": "0",
            "margin-inline-end": "2em"
          }
        },
        {
          selector: " > .alignright",
          rules: {
            float: "right",
            "margin-inline-start": "2em",
            "margin-inline-end": "0"
          }
        },
        {
          selector: " > .aligncenter",
          rules: {
            "margin-left": "auto !important",
            "margin-right": "auto !important"
          }
        }
      ],
      spacingStyles: [
        {
          selector: " > :first-child",
          rules: {
            "margin-block-start": "0"
          }
        },
        {
          selector: " > :last-child",
          rules: {
            "margin-block-end": "0"
          }
        },
        {
          selector: " > *",
          rules: {
            "margin-block-start": null,
            "margin-block-end": "0"
          }
        }
      ]
    },
    constrained: {
      name: "constrained",
      slug: "constrained",
      className: "is-layout-constrained",
      baseStyles: [
        {
          selector: " > .alignleft",
          rules: {
            float: "left",
            "margin-inline-start": "0",
            "margin-inline-end": "2em"
          }
        },
        {
          selector: " > .alignright",
          rules: {
            float: "right",
            "margin-inline-start": "2em",
            "margin-inline-end": "0"
          }
        },
        {
          selector: " > .aligncenter",
          rules: {
            "margin-left": "auto !important",
            "margin-right": "auto !important"
          }
        },
        {
          selector: " > :where(:not(.alignleft):not(.alignright):not(.alignfull))",
          rules: {
            "max-width": "var(--wp--style--global--content-size)",
            "margin-left": "auto !important",
            "margin-right": "auto !important"
          }
        },
        {
          selector: " > .alignwide",
          rules: {
            "max-width": "var(--wp--style--global--wide-size)"
          }
        }
      ],
      spacingStyles: [
        {
          selector: " > :first-child",
          rules: {
            "margin-block-start": "0"
          }
        },
        {
          selector: " > :last-child",
          rules: {
            "margin-block-end": "0"
          }
        },
        {
          selector: " > *",
          rules: {
            "margin-block-start": null,
            "margin-block-end": "0"
          }
        }
      ]
    },
    flex: {
      name: "flex",
      slug: "flex",
      className: "is-layout-flex",
      displayMode: "flex",
      baseStyles: [
        {
          selector: "",
          rules: {
            "flex-wrap": "wrap",
            "align-items": "center"
          }
        },
        {
          selector: " > :is(*, div)",
          // :is(*, div) instead of just * increases the specificity by 001.
          rules: {
            margin: "0"
          }
        }
      ],
      spacingStyles: [
        {
          selector: "",
          rules: {
            gap: null
          }
        }
      ]
    },
    grid: {
      name: "grid",
      slug: "grid",
      className: "is-layout-grid",
      displayMode: "grid",
      baseStyles: [
        {
          selector: " > :is(*, div)",
          // :is(*, div) instead of just * increases the specificity by 001.
          rules: {
            margin: "0"
          }
        }
      ],
      spacingStyles: [
        {
          selector: "",
          rules: {
            gap: null
          }
        }
      ]
    }
  };

  // packages/global-styles-engine/build-module/utils/viewport.mjs
  var DEFAULT_VIEWPORT_BREAKPOINTS = {
    mobile: "480px",
    tablet: "782px"
  };
  var VIEWPORT_SIZE_REGEXP = /^(\d+|\d*\.\d+)(px|em|rem)$/;
  var DEFAULT_FONT_SIZE = 16;
  function isViewportSettings(configOrSettings) {
    return "mobile" in configOrSettings || "tablet" in configOrSettings;
  }
  function getViewportSettings(configOrSettings) {
    if (!configOrSettings || typeof configOrSettings !== "object") {
      return {};
    }
    if (isViewportSettings(configOrSettings)) {
      return configOrSettings;
    }
    return configOrSettings.settings?.viewport ?? {};
  }
  function isValidViewportSize(value) {
    return typeof value === "string" && VIEWPORT_SIZE_REGEXP.test(value.trim());
  }
  function getViewportBreakpointValueInPixels(value) {
    if (typeof value === "number") {
      return value;
    }
    if (typeof value !== "string") {
      return void 0;
    }
    const match3 = value.trim().match(VIEWPORT_SIZE_REGEXP);
    if (!match3) {
      return void 0;
    }
    const numericValue = Number.parseFloat(match3[1]);
    const unit = match3[2];
    return unit === "px" ? numericValue : numericValue * DEFAULT_FONT_SIZE;
  }
  function getViewportBreakpoints(configOrSettings) {
    const viewportSettings = getViewportSettings(configOrSettings);
    const breakpoints = {};
    const breakpointValuesInPixels = {};
    Object.keys(DEFAULT_VIEWPORT_BREAKPOINTS).forEach((breakpoint) => {
      const key = breakpoint;
      const value = viewportSettings[key];
      const px = getViewportBreakpointValueInPixels(value);
      if (px !== void 0 && isValidViewportSize(value)) {
        breakpoints[key] = value.trim();
        breakpointValuesInPixels[key] = px;
      }
    });
    const breakpointNames = Object.keys(breakpoints);
    if (!breakpointNames.length) {
      return { ...DEFAULT_VIEWPORT_BREAKPOINTS };
    }
    if (1 === breakpointNames.length) {
      return breakpoints;
    }
    const mobile = breakpoints.mobile;
    const tablet = breakpoints.tablet;
    if (breakpointValuesInPixels.mobile >= breakpointValuesInPixels.tablet) {
      return { mobile };
    }
    return { mobile, tablet };
  }
  function getResponsiveMediaQueries(configOrSettings) {
    const breakpoints = getViewportBreakpoints(configOrSettings);
    const mediaQueries = {};
    if (breakpoints.mobile) {
      mediaQueries["@mobile"] = `@media (width <= ${breakpoints.mobile})`;
    }
    if (breakpoints.tablet) {
      mediaQueries["@tablet"] = breakpoints.mobile ? `@media (${breakpoints.mobile} < width <= ${breakpoints.tablet})` : `@media (width <= ${breakpoints.tablet})`;
    }
    return mediaQueries;
  }

  // packages/global-styles-engine/build-module/core/render.mjs
  var ELEMENT_CLASS_NAMES = {
    button: "wp-element-button",
    caption: "wp-element-caption"
  };
  var BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS = {
    __experimentalBorder: "border",
    color: "color",
    dimensions: "dimensions",
    spacing: "spacing",
    typography: "typography"
  };
  var VALID_BLOCK_PSEUDO_SELECTORS = {
    "core/button": [":hover", ":focus", ":focus-visible", ":active"],
    "core/navigation-link": [":hover", ":focus", ":focus-visible", ":active"]
  };
  var VALID_ELEMENT_PSEUDO_SELECTORS = {
    link: [
      ":link",
      ":any-link",
      ":visited",
      ":hover",
      ":focus",
      ":focus-visible",
      ":active"
    ],
    button: [
      ":link",
      ":any-link",
      ":visited",
      ":hover",
      ":focus",
      ":focus-visible",
      ":active"
    ]
  };
  function getPresetsClasses(blockSelector = "*", blockPresets = {}) {
    return PRESET_METADATA.reduce(
      (declarations, { path, cssVarInfix, classes }) => {
        if (!classes) {
          return declarations;
        }
        const presetByOrigin = getValueFromObjectPath(
          blockPresets,
          path,
          []
        );
        ["default", "theme", "custom"].forEach((origin) => {
          if (presetByOrigin[origin]) {
            presetByOrigin[origin].forEach(
              ({ slug }) => {
                classes.forEach(
                  ({
                    classSuffix,
                    propertyName
                  }) => {
                    const classSelectorToUse = `.has-${kebabCase(
                      slug
                    )}-${classSuffix}`;
                    const selectorToUse = blockSelector ? `:where(${blockSelector})${classSelectorToUse}` : classSelectorToUse;
                    const value = `var(--wp--preset--${cssVarInfix}--${kebabCase(
                      slug
                    )})`;
                    declarations += `${selectorToUse}{${propertyName}: ${value} !important;}`;
                  }
                );
              }
            );
          }
        });
        return declarations;
      },
      ""
    );
  }
  function getPresetsSvgFilters(blockPresets = {}) {
    return PRESET_METADATA.filter(
      // Duotone are the only type of filters for now.
      (metadata) => metadata.path.at(-1) === "duotone"
    ).flatMap((metadata) => {
      const presetByOrigin = getValueFromObjectPath(
        blockPresets,
        metadata.path,
        {}
      );
      return ["default", "theme", "custom"].filter((origin) => presetByOrigin[origin]).flatMap(
        (origin) => presetByOrigin[origin].map(
          (preset) => getDuotoneFilter(
            `wp-duotone-${preset.slug}`,
            preset.colors
          )
        )
      ).join("");
    });
  }
  function flattenTree(input = {}, prefix2, token) {
    let result = [];
    Object.keys(input).forEach((key) => {
      const newKey = prefix2 + kebabCase(key.replace("/", "-"));
      const newLeaf = input[key];
      if (newLeaf instanceof Object) {
        const newPrefix = newKey + token;
        result = [...result, ...flattenTree(newLeaf, newPrefix, token)];
      } else {
        result.push(`${newKey}: ${newLeaf}`);
      }
    });
    return result;
  }
  var updateParagraphTextIndentSelector = (featureDeclarations, settings, blockName) => {
    if (blockName !== "core/paragraph") {
      return featureDeclarations;
    }
    const blockSettings = settings?.blocks?.["core/paragraph"];
    const textIndentSetting = blockSettings?.typography?.textIndent ?? settings?.typography?.textIndent ?? "subsequent";
    if (textIndentSetting !== "all") {
      return featureDeclarations;
    }
    const oldSelector = ".wp-block-paragraph + .wp-block-paragraph";
    const newSelector = ".wp-block-paragraph";
    if (oldSelector in featureDeclarations) {
      const declarations = featureDeclarations[oldSelector];
      const updated = { ...featureDeclarations };
      delete updated[oldSelector];
      updated[newSelector] = declarations;
      return updated;
    }
    return featureDeclarations;
  };
  var updateButtonWidthDeclarations = (featureDeclarations, settings) => {
    const buttonSelector = ".wp-block-button";
    if (!(buttonSelector in featureDeclarations)) {
      return featureDeclarations;
    }
    const updated = { ...featureDeclarations };
    updated[buttonSelector] = updated[buttonSelector].map(
      (declaration) => {
        const match3 = declaration.match(/^width:\s*(.+)$/);
        if (!match3) {
          return declaration;
        }
        const value = match3[1];
        let percentage = null;
        if (value.endsWith("%")) {
          percentage = parseFloat(value);
        }
        const presetPrefix = "var(--wp--preset--dimension--";
        if (percentage === null && value.startsWith(presetPrefix) && value.endsWith(")")) {
          const slug = value.slice(presetPrefix.length, -1);
          const dimensionSizes = {
            ...settings?.dimensions?.dimensionSizes ?? {},
            ...settings?.blocks?.["core/button"]?.dimensions?.dimensionSizes ?? {}
          };
          for (const origin of Object.values(dimensionSizes)) {
            if (!Array.isArray(origin)) {
              continue;
            }
            for (const preset of origin) {
              if (preset.slug === slug && typeof preset.size === "string" && preset.size.endsWith("%")) {
                percentage = parseFloat(preset.size);
                break;
              }
            }
            if (percentage !== null) {
              break;
            }
          }
        }
        if (percentage === null || isNaN(percentage)) {
          return declaration;
        }
        return `width: calc(${percentage} * 1% - (var(--wp--style--block-gap, 0.5em) * (1 - ${percentage} / 100)))`;
      }
    );
    return updated;
  };
  var getFeatureDeclarations = (selectors5, styles) => {
    const declarations = {};
    Object.entries(selectors5).forEach(([feature, selector2]) => {
      if (feature === "root" || !styles?.[feature]) {
        return;
      }
      const isShorthand = typeof selector2 === "string";
      if (!isShorthand && typeof selector2 === "object" && selector2 !== null) {
        Object.entries(selector2).forEach(
          ([subfeature, subfeatureSelector]) => {
            if (subfeature === "root" || !styles?.[feature][subfeature]) {
              return;
            }
            const subfeatureStyles = {
              [feature]: {
                [subfeature]: styles[feature][subfeature]
              }
            };
            const newDeclarations = getStylesDeclarations(subfeatureStyles);
            declarations[subfeatureSelector] = [
              ...declarations[subfeatureSelector] || [],
              ...newDeclarations
            ];
            delete styles[feature][subfeature];
          }
        );
      }
      if (isShorthand || typeof selector2 === "object" && selector2 !== null && "root" in selector2) {
        const featureSelector = isShorthand ? selector2 : selector2.root;
        const featureStyles = { [feature]: styles[feature] };
        const newDeclarations = getStylesDeclarations(featureStyles);
        declarations[featureSelector] = [
          ...declarations[featureSelector] || [],
          ...newDeclarations
        ];
        delete styles[feature];
      }
    });
    return declarations;
  };
  function getStylesDeclarations(blockStyles = {}, selector2 = "", useRootPaddingAlign, tree = {}, disableRootPadding = false) {
    const isRoot = ROOT_BLOCK_SELECTOR === selector2;
    const output = Object.entries(
      import_blocks2.__EXPERIMENTAL_STYLE_PROPERTY
    ).reduce(
      (declarations, [key, { value, properties, useEngine, rootOnly }]) => {
        if (rootOnly && !isRoot) {
          return declarations;
        }
        const pathToValue = value;
        if (pathToValue[0] === "elements" || useEngine) {
          return declarations;
        }
        const styleValue = getValueFromObjectPath(
          blockStyles,
          pathToValue
        );
        if (key === "--wp--style--root--padding" && (typeof styleValue === "string" || !useRootPaddingAlign)) {
          return declarations;
        }
        if (properties && typeof styleValue !== "string") {
          Object.entries(properties).forEach((entry) => {
            const [name2, prop] = entry;
            if (!getValueFromObjectPath(styleValue, [prop], false)) {
              return;
            }
            const cssProperty = name2.startsWith("--") ? name2 : kebabCase(name2);
            declarations.push(
              `${cssProperty}: ${(0, import_style_engine2.getCSSValueFromRawStyle)(
                getValueFromObjectPath(styleValue, [prop])
              )}`
            );
          });
        } else if (getValueFromObjectPath(blockStyles, pathToValue, false)) {
          const cssProperty = key.startsWith("--") ? key : kebabCase(key);
          declarations.push(
            `${cssProperty}: ${(0, import_style_engine2.getCSSValueFromRawStyle)(
              getValueFromObjectPath(blockStyles, pathToValue)
            )}`
          );
        }
        return declarations;
      },
      []
    );
    if (!!blockStyles.background) {
      if (blockStyles.background?.backgroundImage) {
        blockStyles.background.backgroundImage = getResolvedValue(
          blockStyles.background.backgroundImage,
          tree
        );
      }
      if (!isRoot && !!blockStyles.background?.backgroundImage?.id) {
        blockStyles = {
          ...blockStyles,
          background: {
            ...blockStyles.background,
            ...setBackgroundStyleDefaults(blockStyles.background)
          }
        };
      }
    }
    const extraRules = (0, import_style_engine2.getCSSRules)(blockStyles);
    extraRules.forEach((rule) => {
      if (isRoot && (useRootPaddingAlign || disableRootPadding) && rule.key.startsWith("padding")) {
        return;
      }
      const cssProperty = rule.key.startsWith("--") ? rule.key : kebabCase(rule.key);
      let ruleValue = getResolvedValue(rule.value, tree);
      if (cssProperty === "font-size") {
        ruleValue = getTypographyFontSizeValue(
          { name: "", slug: "", size: ruleValue },
          tree?.settings
        );
      }
      if (cssProperty === "aspect-ratio") {
        output.push("min-height: unset");
      }
      output.push(`${cssProperty}: ${ruleValue}`);
    });
    return output;
  }
  function getLayoutStyles({
    layoutDefinitions = LAYOUT_DEFINITIONS,
    style,
    selector: selector2,
    hasBlockGapSupport,
    hasFallbackGapSupport,
    fallbackGapValue
  }) {
    let ruleset = "";
    const blockGapValue = style?.spacing?.blockGap;
    let gapValue = hasBlockGapSupport ? getGapCSSValue(blockGapValue) : "";
    if (hasFallbackGapSupport) {
      if (selector2 === ROOT_BLOCK_SELECTOR) {
        gapValue = !gapValue ? "0.5em" : gapValue;
      } else if (!hasBlockGapSupport && fallbackGapValue) {
        gapValue = fallbackGapValue;
      }
    }
    const rowGapValue = hasBlockGapSupport && blockGapValue && typeof blockGapValue !== "string" ? getGapCSSValue(blockGapValue.top) : gapValue;
    if (gapValue && layoutDefinitions) {
      Object.values(layoutDefinitions).forEach(
        ({ className, name: name2, spacingStyles }) => {
          if (!hasBlockGapSupport && "flex" !== name2 && "grid" !== name2) {
            return;
          }
          const layoutGapValue = ["default", "constrained"].includes(
            name2
          ) ? rowGapValue : gapValue;
          if (spacingStyles?.length) {
            spacingStyles.forEach((spacingStyle) => {
              const declarations = [];
              if (spacingStyle.rules) {
                Object.entries(spacingStyle.rules).forEach(
                  ([cssProperty, cssValue]) => {
                    declarations.push(
                      `${cssProperty}: ${cssValue ? cssValue : layoutGapValue}`
                    );
                  }
                );
              }
              if (declarations.length) {
                let combinedSelector = "";
                if (!hasBlockGapSupport) {
                  combinedSelector = selector2 === ROOT_BLOCK_SELECTOR ? `:where(.${className}${spacingStyle?.selector || ""})` : `:where(${selector2}.${className}${spacingStyle?.selector || ""})`;
                } else {
                  combinedSelector = selector2 === ROOT_BLOCK_SELECTOR ? `:root :where(.${className})${spacingStyle?.selector || ""}` : `:root :where(${selector2}-${className})${spacingStyle?.selector || ""}`;
                }
                ruleset += `${combinedSelector} { ${declarations.join(
                  "; "
                )}; }`;
              }
            });
          }
        }
      );
      if (selector2 === ROOT_BLOCK_SELECTOR && hasBlockGapSupport) {
        ruleset += `${ROOT_CSS_PROPERTIES_SELECTOR} { --wp--style--block-gap: ${gapValue}; }`;
      }
    }
    if (selector2 === ROOT_BLOCK_SELECTOR && layoutDefinitions) {
      const validDisplayModes = ["block", "flex", "grid"];
      Object.values(layoutDefinitions).forEach(
        ({ className, displayMode, baseStyles }) => {
          if (displayMode && validDisplayModes.includes(displayMode)) {
            ruleset += `${selector2} .${className} { display:${displayMode}; }`;
          }
          if (baseStyles?.length) {
            baseStyles.forEach((baseStyle) => {
              const declarations = [];
              if (baseStyle.rules) {
                Object.entries(baseStyle.rules).forEach(
                  ([cssProperty, cssValue]) => {
                    declarations.push(
                      `${cssProperty}: ${cssValue}`
                    );
                  }
                );
              }
              if (declarations.length) {
                const combinedSelector = `.${className}${baseStyle?.selector || ""}`;
                ruleset += `${combinedSelector} { ${declarations.join(
                  "; "
                )}; }`;
              }
            });
          }
        }
      );
    }
    return ruleset;
  }
  var STYLE_KEYS = [
    "border",
    "color",
    "dimensions",
    "spacing",
    "typography",
    "filter",
    "outline",
    "shadow",
    "background"
  ];
  function pickStyleKeys(treeToPickFrom, responsiveMediaQueries) {
    return pickStyleAndPseudoKeys(
      treeToPickFrom,
      void 0,
      responsiveMediaQueries
    );
  }
  function pickStyleAndPseudoKeys(treeToPickFrom, blockName, responsiveMediaQueries) {
    if (!treeToPickFrom) {
      return {};
    }
    const entries = Object.entries(treeToPickFrom);
    const allowedPseudoSelectors = blockName ? VALID_BLOCK_PSEUDO_SELECTORS[blockName] ?? [] : [];
    const pickedEntries = entries.filter(
      ([key]) => STYLE_KEYS.includes(key) || allowedPseudoSelectors.includes(key) || responsiveMediaQueries[key]
    );
    const clonedEntries = pickedEntries.map(([key, style]) => [
      key,
      JSON.parse(JSON.stringify(style))
    ]);
    return Object.fromEntries(clonedEntries);
  }
  function getPseudoStyleNodes(node) {
    const {
      styles,
      selector: selector2,
      featureSelectors,
      name: name2,
      elementName,
      mediaQuery,
      variationName
    } = node;
    const pseudoSelectors = name2 ? VALID_BLOCK_PSEUDO_SELECTORS[name2] ?? [] : VALID_ELEMENT_PSEUDO_SELECTORS[elementName ?? ""] ?? [];
    if (!pseudoSelectors.length) {
      return [];
    }
    return pseudoSelectors.flatMap((pseudoSelector) => {
      const pseudoStyles = styles?.[pseudoSelector];
      if (!pseudoStyles || typeof pseudoStyles !== "object") {
        return [];
      }
      return [
        {
          styles: JSON.parse(JSON.stringify(pseudoStyles)),
          selector: selector2,
          selectorSuffix: pseudoSelector,
          mediaQuery,
          featureSelectors: featureSelectors && typeof featureSelectors !== "string" ? featureSelectors : void 0,
          name: name2,
          elementName,
          variationName
        }
      ];
    });
  }
  function getResponsiveStyleNodes(node, responsiveMediaQueries) {
    const {
      styles,
      selector: selector2,
      fallbackGapValue,
      featureSelectors,
      hasLayoutSupport,
      layoutHasBlockGapSupport,
      layoutSelector,
      name: name2,
      elementName,
      isStyleVariation,
      variationName
    } = node;
    if (!name2 && !elementName) {
      return [];
    }
    return Object.entries(responsiveMediaQueries).flatMap(
      ([breakpointKey, mediaQuery]) => {
        const breakpointStyles = styles?.[breakpointKey];
        if (!breakpointStyles || typeof breakpointStyles !== "object") {
          return [];
        }
        return [
          {
            styles: JSON.parse(JSON.stringify(breakpointStyles)),
            selector: selector2,
            mediaQuery,
            featureSelectors: featureSelectors && typeof featureSelectors !== "string" ? featureSelectors : void 0,
            fallbackGapValue,
            hasLayoutSupport,
            name: name2,
            elementName,
            isStyleVariation,
            variationName,
            layoutSelector,
            layoutHasBlockGapSupport
          }
        ];
      }
    );
  }
  function getElementStylesByName(styleNode, responsiveMediaQueries) {
    const elementStylesByName = { ...styleNode?.elements ?? {} };
    Object.keys(responsiveMediaQueries).forEach((breakpointKey) => {
      Object.entries(styleNode?.[breakpointKey]?.elements ?? {}).forEach(
        ([elementName, styles]) => {
          elementStylesByName[elementName] = {
            ...elementStylesByName[elementName] ?? {},
            [breakpointKey]: styles
          };
        }
      );
    });
    return elementStylesByName;
  }
  var getNodesWithStyles = (tree, blockSelectors) => {
    const nodes = [];
    if (!tree?.styles) {
      return nodes;
    }
    const responsiveMediaQueries = getResponsiveMediaQueries(tree);
    const styles = pickStyleKeys(tree.styles, responsiveMediaQueries);
    if (styles) {
      nodes.push({
        styles,
        selector: ROOT_BLOCK_SELECTOR,
        // Root selector (body) styles should not be wrapped in `:root where()` to keep
        // specificity at (0,0,1) and maintain backwards compatibility.
        skipSelectorWrapper: true
      });
    }
    Object.entries(import_blocks2.__EXPERIMENTAL_ELEMENTS).forEach(([name2, selector2]) => {
      if (tree.styles?.elements?.[name2]) {
        nodes.push({
          styles: tree.styles?.elements?.[name2] ?? {},
          selector: selector2,
          elementName: name2,
          // Top level elements that don't use a class name should not receive the
          // `:root :where()` wrapper to maintain backwards compatibility.
          skipSelectorWrapper: !ELEMENT_CLASS_NAMES[name2]
        });
      }
    });
    Object.entries(tree.styles?.blocks ?? {}).forEach(
      ([blockName, node]) => {
        const blockStyles = pickStyleAndPseudoKeys(
          node,
          blockName,
          responsiveMediaQueries
        );
        const typedNode = node;
        const variationNodesToAdd = [];
        const variationStyleNodesToAdd = [];
        if (typedNode?.variations) {
          Object.entries(typedNode.variations).forEach(
            ([variationName, variation]) => {
              const typedVariation = variation;
              const variationStyles = pickStyleAndPseudoKeys(
                typedVariation,
                blockName,
                responsiveMediaQueries
              );
              if (typedVariation?.css) {
                variationStyles.css = typedVariation.css;
              }
              const variationSelector = typeof blockSelectors !== "string" ? blockSelectors[blockName]?.styleVariationSelectors?.[variationName] : void 0;
              if (variationSelector && typeof blockSelectors !== "string") {
                const blockSelector = blockSelectors[blockName];
                variationStyleNodesToAdd.push({
                  styles: variationStyles,
                  selector: variationSelector,
                  featureSelectors: blockSelector?.featureSelectors,
                  fallbackGapValue: blockSelector?.fallbackGapValue,
                  hasLayoutSupport: blockSelector?.hasLayoutSupport,
                  isStyleVariation: true,
                  variationName,
                  layoutSelector: variationSelector + blockSelector.selector,
                  layoutHasBlockGapSupport: true,
                  name: blockName
                });
              }
              Object.entries(
                getElementStylesByName(
                  typedVariation,
                  responsiveMediaQueries
                )
              ).forEach(([element, elementStyles]) => {
                if (elementStyles && import_blocks2.__EXPERIMENTAL_ELEMENTS[element]) {
                  variationNodesToAdd.push({
                    styles: elementStyles,
                    selector: scopeSelector(
                      variationSelector,
                      import_blocks2.__EXPERIMENTAL_ELEMENTS[element]
                    ),
                    elementName: element,
                    isStyleVariation: true
                  });
                }
              });
              Object.entries(typedVariation?.blocks ?? {}).forEach(
                ([
                  variationBlockName,
                  variationBlockStyles
                ]) => {
                  const variationBlockSelector = typeof blockSelectors !== "string" ? scopeSelector(
                    variationSelector,
                    blockSelectors[variationBlockName]?.selector
                  ) : void 0;
                  const variationDuotoneSelector = typeof blockSelectors !== "string" ? scopeSelector(
                    variationSelector,
                    blockSelectors[variationBlockName]?.duotoneSelector
                  ) : void 0;
                  const variationFeatureSelectors = typeof blockSelectors !== "string" ? scopeFeatureSelectors(
                    variationSelector,
                    blockSelectors[variationBlockName]?.featureSelectors ?? {}
                  ) : void 0;
                  const variationBlockStyleNodes = pickStyleAndPseudoKeys(
                    variationBlockStyles,
                    variationBlockName,
                    responsiveMediaQueries
                  );
                  if (variationBlockStyles?.css) {
                    variationBlockStyleNodes.css = variationBlockStyles.css;
                  }
                  if (!variationBlockSelector || typeof blockSelectors === "string") {
                    return;
                  }
                  variationNodesToAdd.push({
                    selector: variationBlockSelector,
                    name: variationBlockName,
                    isStyleVariation: true,
                    duotoneSelector: variationDuotoneSelector,
                    featureSelectors: variationFeatureSelectors,
                    fallbackGapValue: blockSelectors[variationBlockName]?.fallbackGapValue,
                    hasLayoutSupport: blockSelectors[variationBlockName]?.hasLayoutSupport,
                    styles: variationBlockStyleNodes
                  });
                  Object.entries(
                    getElementStylesByName(
                      variationBlockStyles,
                      responsiveMediaQueries
                    )
                  ).forEach(
                    ([
                      variationBlockElement,
                      variationBlockElementStyles
                    ]) => {
                      if (variationBlockElementStyles && import_blocks2.__EXPERIMENTAL_ELEMENTS[variationBlockElement]) {
                        variationNodesToAdd.push({
                          styles: variationBlockElementStyles,
                          selector: scopeSelector(
                            variationBlockSelector,
                            import_blocks2.__EXPERIMENTAL_ELEMENTS[variationBlockElement]
                          ),
                          elementName: variationBlockElement,
                          isStyleVariation: true
                        });
                      }
                    }
                  );
                }
              );
            }
          );
        }
        if (typeof blockSelectors !== "string" && blockSelectors?.[blockName]?.selector) {
          nodes.push({
            duotoneSelector: blockSelectors[blockName].duotoneSelector,
            fallbackGapValue: blockSelectors[blockName].fallbackGapValue,
            hasLayoutSupport: blockSelectors[blockName].hasLayoutSupport,
            selector: blockSelectors[blockName].selector,
            styles: blockStyles,
            featureSelectors: blockSelectors[blockName].featureSelectors,
            name: blockName
          });
        }
        nodes.push(...variationStyleNodesToAdd);
        Object.entries(
          getElementStylesByName(typedNode, responsiveMediaQueries)
        ).forEach(([elementName, value]) => {
          if (typeof blockSelectors !== "string" && value && blockSelectors?.[blockName] && import_blocks2.__EXPERIMENTAL_ELEMENTS[elementName]) {
            nodes.push({
              styles: value,
              selector: blockSelectors[blockName]?.selector.split(",").map((sel) => {
                const elementSelectors = import_blocks2.__EXPERIMENTAL_ELEMENTS[elementName].split(",");
                return elementSelectors.map(
                  (elementSelector) => sel + " " + elementSelector
                );
              }).join(","),
              elementName
            });
          }
        });
        nodes.push(...variationNodesToAdd);
      }
    );
    return nodes;
  };
  var getNodesWithSettings = (tree, blockSelectors) => {
    const nodes = [];
    if (!tree?.settings) {
      return nodes;
    }
    const pickPresets = (treeToPickFrom) => {
      let presets2 = {};
      PRESET_METADATA.forEach(({ path }) => {
        const value = getValueFromObjectPath(treeToPickFrom, path, false);
        if (value !== false) {
          presets2 = setImmutably(presets2, path, value);
        }
      });
      return presets2;
    };
    const presets = pickPresets(tree.settings);
    const custom = tree.settings?.custom;
    if (Object.keys(presets).length > 0 || custom) {
      nodes.push({
        presets,
        custom,
        selector: ROOT_CSS_PROPERTIES_SELECTOR
      });
    }
    Object.entries(tree.settings?.blocks ?? {}).forEach(
      ([blockName, node]) => {
        const blockCustom = node.custom;
        if (typeof blockSelectors === "string" || !blockSelectors[blockName]) {
          return;
        }
        const blockPresets = pickPresets(node);
        if (Object.keys(blockPresets).length > 0 || blockCustom) {
          nodes.push({
            presets: blockPresets,
            custom: blockCustom,
            selector: blockSelectors[blockName]?.selector,
            featureSelectors: blockSelectors[blockName]?.featureSelectors
          });
        }
      }
    );
    return nodes;
  };
  function resolveFeatureSelector(featureSelectors, featureKey, fallback) {
    if (!featureSelectors || typeof featureSelectors === "string") {
      return fallback;
    }
    const feature = featureSelectors[featureKey];
    if (typeof feature === "string") {
      return feature;
    }
    if (typeof feature === "object" && feature.root) {
      return feature.root;
    }
    return fallback;
  }
  function getPresetVarDeclarations(presets, mergedSettings, { path, valueKey, valueFunc, cssVarInfix }) {
    const presetByOrigin = getValueFromObjectPath(
      presets,
      path,
      []
    );
    const declarations = [];
    for (const origin of ["default", "theme", "custom"]) {
      if (!presetByOrigin[origin]) {
        continue;
      }
      for (const value of presetByOrigin[origin]) {
        const slug = kebabCase(value.slug);
        if (valueKey && !valueFunc) {
          declarations.push(
            `--wp--preset--${cssVarInfix}--${slug}: ${value[valueKey]}`
          );
        } else if (valueFunc && typeof valueFunc === "function") {
          declarations.push(
            `--wp--preset--${cssVarInfix}--${slug}: ${valueFunc(
              value,
              mergedSettings
            )}`
          );
        }
      }
    }
    return declarations;
  }
  var generateCustomProperties = (tree, blockSelectors) => {
    const nodes = getNodesWithSettings(tree, blockSelectors);
    let ruleset = "";
    for (const { presets, custom, selector: selector2, featureSelectors } of nodes) {
      const defaultSelector = selector2;
      const varsBySelector = {
        [defaultSelector]: []
      };
      if (tree?.settings) {
        for (const metadata of PRESET_METADATA) {
          const declarations = getPresetVarDeclarations(
            presets,
            tree.settings,
            metadata
          );
          if (declarations.length === 0) {
            continue;
          }
          const target = resolveFeatureSelector(
            featureSelectors,
            metadata.path[0],
            defaultSelector
          );
          if (!varsBySelector[target]) {
            varsBySelector[target] = [];
          }
          varsBySelector[target].push(...declarations);
        }
      }
      const customProps = flattenTree(custom, "--wp--custom--", "--");
      if (customProps.length > 0) {
        varsBySelector[defaultSelector].push(...customProps);
      }
      for (const [ruleSelector, declarations] of Object.entries(
        varsBySelector
      )) {
        if (declarations.length > 0) {
          ruleset += `${ruleSelector}{${declarations.join(";")};}`;
        }
      }
    }
    return ruleset;
  };
  function renderStylesNode(node, {
    tree,
    useRootPaddingAlign,
    disableLayoutStyles,
    hasBlockGapSupport,
    hasFallbackGapSupport,
    disableRootPadding
  }) {
    const {
      selector: selector2,
      selectorSuffix,
      mediaQuery,
      duotoneSelector,
      styles,
      fallbackGapValue,
      hasLayoutSupport,
      featureSelectors,
      layoutSelector,
      layoutHasBlockGapSupport,
      skipSelectorWrapper,
      name: name2,
      variationName
    } = node;
    let ruleset = "";
    const effectiveSelector = selectorSuffix ? appendToSelector(selector2, selectorSuffix) : selector2;
    if (featureSelectors && typeof featureSelectors !== "string") {
      let featureDeclarations = getFeatureDeclarations(
        featureSelectors,
        styles
      );
      featureDeclarations = updateParagraphTextIndentSelector(
        featureDeclarations,
        tree.settings,
        name2
      );
      featureDeclarations = updateButtonWidthDeclarations(
        featureDeclarations,
        tree.settings
      );
      Object.entries(featureDeclarations).forEach(
        ([featureSelector, declarations]) => {
          if (declarations.length) {
            let selectorForRule = variationName ? getBlockStyleVariationFeatureSelector(
              variationName,
              featureSelector
            ) : featureSelector;
            selectorForRule = selectorSuffix ? appendToSelector(selectorForRule, selectorSuffix) : selectorForRule;
            const rules = declarations.join(";");
            ruleset += `:root :where(${selectorForRule}){${rules};}`;
          }
        }
      );
    }
    if (duotoneSelector) {
      const duotoneStyles = {};
      if (styles?.filter) {
        duotoneStyles.filter = styles.filter;
        delete styles.filter;
      }
      const duotoneDeclarations = getStylesDeclarations(duotoneStyles);
      if (duotoneDeclarations.length) {
        ruleset += `${duotoneSelector}{${duotoneDeclarations.join(
          ";"
        )};}`;
      }
    }
    const selectorForLayout = layoutSelector ?? effectiveSelector;
    const hasBlockGapSupportForLayout = layoutHasBlockGapSupport ?? hasBlockGapSupport;
    if (!disableLayoutStyles && (ROOT_BLOCK_SELECTOR === selectorForLayout || hasLayoutSupport)) {
      ruleset += getLayoutStyles({
        style: styles,
        selector: selectorForLayout,
        hasBlockGapSupport: hasBlockGapSupportForLayout,
        hasFallbackGapSupport,
        fallbackGapValue
      });
    }
    const styleDeclarations = getStylesDeclarations(
      styles,
      effectiveSelector,
      useRootPaddingAlign,
      tree,
      disableRootPadding
    );
    if (styleDeclarations?.length) {
      const generalSelector = skipSelectorWrapper ? effectiveSelector : `:root :where(${effectiveSelector})`;
      ruleset += `${generalSelector}{${styleDeclarations.join(";")};}`;
    }
    if (styles?.css) {
      ruleset += processCSSNesting(
        styles.css,
        `:root :where(${effectiveSelector})`
      );
    }
    if (mediaQuery && ruleset) {
      return `${mediaQuery}{${ruleset}}`;
    }
    return ruleset;
  }
  var transformToStyles = (tree, blockSelectors, hasBlockGapSupport, hasFallbackGapSupport, disableLayoutStyles = false, disableRootPadding = false, styleOptions = {}) => {
    const options = {
      blockGap: true,
      blockStyles: true,
      layoutStyles: true,
      marginReset: true,
      presets: true,
      rootPadding: true,
      variationStyles: false,
      ...styleOptions
    };
    const normalizedTree = normalizeStyleStateAliases(tree);
    const nodesWithStyles = getNodesWithStyles(
      normalizedTree,
      blockSelectors
    );
    const nodesWithSettings = getNodesWithSettings(
      normalizedTree,
      blockSelectors
    );
    const useRootPaddingAlign = normalizedTree?.settings?.useRootPaddingAwareAlignments;
    const { contentSize, wideSize } = normalizedTree?.settings?.layout || {};
    const hasBodyStyles = options.marginReset || options.rootPadding || options.layoutStyles;
    let ruleset = "";
    if (options.presets && (contentSize || wideSize)) {
      ruleset += `${ROOT_CSS_PROPERTIES_SELECTOR} {`;
      ruleset = contentSize ? ruleset + ` --wp--style--global--content-size: ${contentSize};` : ruleset;
      ruleset = wideSize ? ruleset + ` --wp--style--global--wide-size: ${wideSize};` : ruleset;
      ruleset += "}";
    }
    if (hasBodyStyles) {
      ruleset += ":where(body) {margin: 0;";
      if (options.rootPadding && useRootPaddingAlign) {
        ruleset += `padding-right: 0; padding-left: 0; padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom) }
				.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }
				.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }
				.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) { padding-right: 0; padding-left: 0; }
				.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) > .alignfull { margin-left: 0; margin-right: 0;
				`;
      }
      ruleset += "}";
    }
    if (options.blockStyles) {
      const responsiveMediaQueries = getResponsiveMediaQueries(tree);
      nodesWithStyles.forEach((node) => {
        if (node.isStyleVariation && !options.variationStyles) {
          return;
        }
        const responsiveNodes = getResponsiveStyleNodes(
          node,
          responsiveMediaQueries
        );
        [
          node,
          ...responsiveNodes,
          ...getPseudoStyleNodes(node),
          ...responsiveNodes.flatMap(getPseudoStyleNodes)
        ].forEach((expandedNode) => {
          ruleset += renderStylesNode(expandedNode, {
            tree: normalizedTree,
            useRootPaddingAlign,
            disableLayoutStyles,
            hasBlockGapSupport,
            hasFallbackGapSupport,
            disableRootPadding
          });
        });
      });
    }
    if (options.layoutStyles) {
      ruleset = ruleset + ".wp-site-blocks > .alignleft { float: left; margin-right: 2em; }";
      ruleset = ruleset + ".wp-site-blocks > .alignright { float: right; margin-left: 2em; }";
      ruleset = ruleset + ".wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }";
    }
    if (options.blockGap && hasBlockGapSupport) {
      const gapValue = getGapCSSValue(normalizedTree?.styles?.spacing?.blockGap) || "0.5em";
      ruleset = ruleset + `:root :where(.wp-site-blocks) > * { margin-block-start: ${gapValue}; margin-block-end: 0; }`;
      ruleset = ruleset + ":root :where(.wp-site-blocks) > :first-child { margin-block-start: 0; }";
      ruleset = ruleset + ":root :where(.wp-site-blocks) > :last-child { margin-block-end: 0; }";
    }
    if (options.presets) {
      nodesWithSettings.forEach(({ selector: selector2, presets }) => {
        if (ROOT_BLOCK_SELECTOR === selector2 || ROOT_CSS_PROPERTIES_SELECTOR === selector2) {
          selector2 = "";
        }
        const classes = getPresetsClasses(selector2, presets);
        if (classes.length > 0) {
          ruleset += classes;
        }
      });
    }
    return ruleset;
  };
  function generateSvgFilters(tree, blockSelectors) {
    const nodesWithSettings = getNodesWithSettings(tree, blockSelectors);
    return nodesWithSettings.flatMap(({ presets }) => {
      return getPresetsSvgFilters(presets);
    });
  }
  var getSelectorsConfig = (blockType, rootSelector) => {
    if (blockType?.selectors && Object.keys(blockType.selectors).length > 0) {
      return blockType.selectors;
    }
    const config2 = {
      root: rootSelector
    };
    Object.entries(BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS).forEach(
      ([featureKey, featureName]) => {
        const featureSelector = getBlockSelector(blockType, featureKey);
        if (featureSelector) {
          config2[featureName] = featureSelector;
        }
      }
    );
    return config2;
  };
  var getBlockSelectors = (blockTypes, variationInstanceId) => {
    const { getBlockStyles } = (0, import_data3.select)(import_blocks2.store);
    const result = {};
    blockTypes.forEach((blockType) => {
      const name2 = blockType.name;
      const selector2 = getBlockSelector(blockType);
      if (!selector2) {
        return;
      }
      let duotoneSelector = getBlockSelector(blockType, "filter.duotone");
      if (!duotoneSelector) {
        const rootSelector = getBlockSelector(blockType);
        const duotoneSupport = (0, import_blocks2.getBlockSupport)(
          blockType,
          "color.__experimentalDuotone",
          false
        );
        if (typeof duotoneSupport === "string" && rootSelector) {
          duotoneSelector = scopeSelector(rootSelector, duotoneSupport);
        }
      }
      const hasLayoutSupport = !!blockType?.supports?.layout || !!blockType?.supports?.__experimentalLayout;
      const blockGapSupport = blockType?.supports?.spacing?.blockGap;
      const fallbackGapValue = typeof blockGapSupport === "object" && !Array.isArray(blockGapSupport) ? blockGapSupport.__experimentalDefault : void 0;
      const blockStyleVariations = getBlockStyles(name2);
      const styleVariationSelectors = {};
      blockStyleVariations?.forEach((variation) => {
        const variationSuffix = variationInstanceId ? `-${variationInstanceId}` : "";
        const variationName = `${variation.name}${variationSuffix}`;
        const styleVariationSelector = getBlockStyleVariationSelector(
          variationName,
          selector2
        );
        styleVariationSelectors[variationName] = styleVariationSelector;
      });
      const featureSelectors = getSelectorsConfig(blockType, selector2);
      result[name2] = {
        duotoneSelector: duotoneSelector ?? void 0,
        fallbackGapValue,
        featureSelectors: Object.keys(featureSelectors).length ? featureSelectors : void 0,
        hasLayoutSupport,
        name: name2,
        selector: selector2,
        styleVariationSelectors: blockStyleVariations?.length ? styleVariationSelectors : void 0
      };
    });
    return result;
  };
  function updateConfigWithSeparator(config2) {
    const blocks = config2.styles?.blocks;
    const separatorBlock = blocks?.["core/separator"];
    const needsSeparatorStyleUpdate = separatorBlock && separatorBlock.color?.background && !separatorBlock.color?.text && !separatorBlock.border?.color;
    if (needsSeparatorStyleUpdate) {
      return {
        ...config2,
        styles: {
          ...config2.styles,
          blocks: {
            ...blocks,
            "core/separator": {
              ...separatorBlock,
              color: {
                ...separatorBlock.color,
                text: separatorBlock.color?.background
              }
            }
          }
        }
      };
    }
    return config2;
  }
  function processCSSNesting(css, blockSelector) {
    let processedCSS = "";
    if (!css || css.trim() === "") {
      return processedCSS;
    }
    const parts = css.split("&");
    parts.forEach((part) => {
      if (!part || part.trim() === "") {
        return;
      }
      const isRootCss = !part.includes("{");
      if (isRootCss) {
        processedCSS += `:root :where(${blockSelector}){${part.trim()}}`;
      } else {
        const splitPart = part.replace("}", "").split("{");
        if (splitPart.length !== 2) {
          return;
        }
        const [nestedSelector, cssValue] = splitPart;
        const matches = nestedSelector.match(/([>+~\s]*::[a-zA-Z-]+)/);
        const pseudoPart = matches ? matches[1] : "";
        const withoutPseudoElement = matches ? nestedSelector.replace(pseudoPart, "").trim() : nestedSelector.trim();
        let combinedSelector;
        if (withoutPseudoElement === "") {
          combinedSelector = blockSelector;
        } else {
          combinedSelector = nestedSelector.startsWith(" ") ? scopeSelector(blockSelector, withoutPseudoElement) : appendToSelector(blockSelector, withoutPseudoElement);
        }
        processedCSS += `:root :where(${combinedSelector})${pseudoPart}{${cssValue.trim()}}`;
      }
    });
    return processedCSS;
  }
  function generateGlobalStyles(config2 = {}, blockTypes = [], options = {}) {
    const {
      hasBlockGapSupport: hasBlockGapSupportOption,
      hasFallbackGapSupport: hasFallbackGapSupportOption,
      disableLayoutStyles = false,
      disableRootPadding = false,
      styleOptions = {}
    } = options;
    const blocks = blockTypes.length > 0 ? blockTypes : (0, import_blocks2.getBlockTypes)();
    const blockGap = getSetting(config2, "spacing.blockGap");
    const hasBlockGapSupport = hasBlockGapSupportOption ?? (blockGap !== null && blockGap !== void 0);
    const hasFallbackGapSupport = hasFallbackGapSupportOption ?? !hasBlockGapSupport;
    if (!config2?.styles || !config2?.settings) {
      return [[], {}];
    }
    const updatedConfig = updateConfigWithSeparator(config2);
    const blockSelectors = getBlockSelectors(blocks);
    const customProperties = generateCustomProperties(
      updatedConfig,
      blockSelectors
    );
    const globalStyles = transformToStyles(
      updatedConfig,
      blockSelectors,
      hasBlockGapSupport,
      hasFallbackGapSupport,
      disableLayoutStyles,
      disableRootPadding,
      styleOptions
    );
    const svgs = generateSvgFilters(updatedConfig, blockSelectors);
    const styles = [
      {
        css: customProperties,
        isGlobalStyles: true
      },
      {
        css: globalStyles,
        isGlobalStyles: true
      },
      // Load custom CSS in own stylesheet so that any invalid CSS entered in the input won't break all the global styles in the editor.
      {
        css: updatedConfig?.styles?.css ?? "",
        isGlobalStyles: true
      },
      {
        assets: svgs,
        __unstableType: "svgs",
        isGlobalStyles: true
      }
    ];
    blocks.forEach((blockType) => {
      const blockStyles = updatedConfig?.styles?.blocks?.[blockType.name];
      if (blockStyles?.css) {
        const { featureSelectors } = blockSelectors[blockType.name];
        const cssFeatureSelector = typeof featureSelectors === "object" ? featureSelectors?.css : void 0;
        let resolvedCssSelector;
        if (typeof cssFeatureSelector === "string") {
          resolvedCssSelector = cssFeatureSelector;
        } else if (typeof cssFeatureSelector === "object") {
          resolvedCssSelector = cssFeatureSelector?.root;
        }
        const selector2 = resolvedCssSelector ?? blockSelectors[blockType.name].selector;
        styles.push({
          css: processCSSNesting(blockStyles.css, selector2),
          isGlobalStyles: true
        });
      }
    });
    return [styles, updatedConfig.settings];
  }

  // packages/global-styles-engine/build-module/variation.mjs
  function getVariationStyle(globalStyles, name2, variation, { resolveRefs = true } = {}) {
    if (!globalStyles?.styles?.blocks?.[name2]?.variations?.[variation]) {
      return void 0;
    }
    const replaceRefs = (variationStyles) => {
      Object.keys(variationStyles).forEach((key) => {
        const value = variationStyles[key];
        if (typeof value === "object" && value !== null) {
          if (value.ref !== void 0) {
            if (typeof value.ref !== "string" || value.ref.trim() === "") {
              delete variationStyles[key];
            } else {
              const refValue = getValueFromObjectPath(
                globalStyles,
                value.ref
              );
              if (refValue !== void 0 && refValue !== null) {
                variationStyles[key] = refValue;
              } else {
                delete variationStyles[key];
              }
            }
          } else {
            replaceRefs(value);
            if (Object.keys(value).length === 0) {
              delete variationStyles[key];
            }
          }
        }
      });
    };
    const styles = JSON.parse(
      JSON.stringify(
        globalStyles.styles.blocks[name2].variations[variation]
      )
    );
    if (resolveRefs) {
      replaceRefs(styles);
    }
    return styles;
  }

  // packages/global-styles-engine/build-module/resolve-style.mjs
  var DEFAULT_STATE_VALUE = "default";
  function isDefaultBlockStyleState(selectedState) {
    const viewport = selectedState?.viewport;
    const pseudoState = selectedState?.pseudoState;
    return (!viewport || viewport === DEFAULT_STATE_VALUE) && (!pseudoState || pseudoState === DEFAULT_STATE_VALUE);
  }
  function getStyleStatePath(selectedState) {
    if (isDefaultBlockStyleState(selectedState)) {
      return [];
    }
    return [selectedState.viewport, selectedState.pseudoState].filter(
      (state2) => !!state2 && state2 !== DEFAULT_STATE_VALUE
    );
  }
  function getStyleForState(style, selectedState) {
    const path = getStyleStatePath(selectedState);
    if (!path.length) {
      return style;
    }
    return getValueFromObjectPath(style, path);
  }
  var TREE_STRUCTURAL_KEYS = /* @__PURE__ */ new Set(["blocks", "variations", "css"]);
  var EMPTY_INHERITANCE = Object.freeze({
    value: {},
    sources: {}
  });
  var SOURCE_DESCRIPTORS = {
    root: { layer: "root" },
    element: { layer: "element" },
    block: { layer: "block" },
    blockVariation: { layer: "blockVariation" }
  };
  function createSourceDescriptor(type) {
    const descriptor = SOURCE_DESCRIPTORS[type];
    if (!descriptor) {
      return null;
    }
    return { ...descriptor };
  }
  function createContribution(styles, source) {
    if (!styles || !source) {
      return null;
    }
    return { styles, source };
  }
  function getPathKey(path) {
    return path.join(".");
  }
  function getSourceForPath(source) {
    return { ...source };
  }
  function isExplicitEmpty(value) {
    if (value === "" || value === null) {
      return true;
    }
    if (typeof value === "object" && !Array.isArray(value) && Object.keys(value).length === 0) {
      return true;
    }
    return false;
  }
  function isRefObject(value) {
    return value !== null && typeof value === "object" && !Array.isArray(value) && typeof value.ref === "string";
  }
  function pickLayerRootContribution(layer) {
    if (!layer || typeof layer !== "object" || Array.isArray(layer)) {
      return null;
    }
    const contribution = {};
    for (const key of Object.keys(layer)) {
      if (TREE_STRUCTURAL_KEYS.has(key)) {
        continue;
      }
      if (key === "elements") {
        if (layer.elements && typeof layer.elements === "object") {
          contribution.elements = layer.elements;
        }
        continue;
      }
      if (isExplicitEmpty(layer[key])) {
        continue;
      }
      contribution[key] = layer[key];
    }
    return Object.keys(contribution).length === 0 ? null : contribution;
  }
  var ATOMIC_OBJECT_KEYS = /* @__PURE__ */ new Set(["backgroundImage"]);
  function deepMergeDroppingEmpties(target, source, globalStyles, sourceMetadata, sources, path = []) {
    if (!source || typeof source !== "object" || Array.isArray(source)) {
      return target;
    }
    for (const key of Object.keys(source)) {
      let sourceValue = source[key];
      if (isExplicitEmpty(sourceValue)) {
        continue;
      }
      if (isRefObject(sourceValue)) {
        if (sourceValue.ref.trim() === "") {
          continue;
        }
        const resolved = getValueFromObjectPath(
          globalStyles,
          sourceValue.ref
        );
        if (resolved === void 0 || resolved === null || isRefObject(resolved)) {
          continue;
        }
        sourceValue = resolved;
      }
      const nextPath = [...path, key];
      if (!ATOMIC_OBJECT_KEYS.has(key) && sourceValue !== null && typeof sourceValue === "object" && !Array.isArray(sourceValue) && !isRefObject(sourceValue)) {
        const existing = target[key] && typeof target[key] === "object" && !Array.isArray(target[key]) ? target[key] : {};
        target[key] = deepMergeDroppingEmpties(
          { ...existing },
          sourceValue,
          globalStyles,
          sourceMetadata,
          sources,
          nextPath
        );
      } else {
        target[key] = ATOMIC_OBJECT_KEYS.has(key) && sourceValue !== null && typeof sourceValue === "object" && !Array.isArray(sourceValue) ? { ...sourceValue } : sourceValue;
        if (sourceMetadata && sources) {
          sources[getPathKey(nextPath)] = getSourceForPath(sourceMetadata);
        }
      }
    }
    return target;
  }
  function getStateSlice(layerObject, selectedState) {
    if (!layerObject) {
      return null;
    }
    const slice2 = getStyleForState(layerObject, selectedState);
    return slice2 && typeof slice2 === "object" && !Array.isArray(slice2) ? slice2 : null;
  }
  var NON_CASCADING_ROOT_PREFIXES = [
    "color.background",
    "color.gradient",
    "background",
    "spacing",
    "dimensions",
    "border",
    "shadow",
    "filter"
  ];
  function isNonCascadingRootPath(pathKey) {
    if (pathKey.startsWith("elements.")) {
      return false;
    }
    return NON_CASCADING_ROOT_PREFIXES.some(
      (prefix2) => pathKey === prefix2 || pathKey.startsWith(`${prefix2}.`)
    );
  }
  function deleteAtPath(target, pathSegments) {
    if (!target || typeof target !== "object") {
      return;
    }
    const [head2, ...rest] = pathSegments;
    if (rest.length === 0) {
      delete target[head2];
      return;
    }
    const child = target[head2];
    if (child && typeof child === "object") {
      deleteAtPath(child, rest);
      if (Object.keys(child).length === 0) {
        delete target[head2];
      }
    }
  }
  function dropNonCascadingRootLeaves(value, sources) {
    for (const pathKey of Object.keys(sources)) {
      if (sources[pathKey].layer === "root" && isNonCascadingRootPath(pathKey)) {
        deleteAtPath(value, pathKey.split("."));
        delete sources[pathKey];
      }
    }
  }
  function resolveThemeFileBackgroundImage(value, globalStyles, links) {
    const image = value?.background?.backgroundImage;
    if (!image) {
      return;
    }
    const resolved = getResolvedValue(image, {
      ...globalStyles,
      _links: links ?? void 0
    });
    if (resolved !== void 0) {
      value.background.backgroundImage = resolved;
    }
  }
  function computeResolvedStyle(globalStyles, {
    blockName,
    variationName = null,
    elements: elements2 = null,
    viewport = null,
    pseudoState = null
  } = {}) {
    if (!globalStyles || !globalStyles.styles) {
      return EMPTY_INHERITANCE;
    }
    if (!blockName) {
      return EMPTY_INHERITANCE;
    }
    const styles = globalStyles.styles;
    const selectedState = { viewport, pseudoState };
    const root = styles;
    const block = styles.blocks?.[blockName] ?? null;
    const elementLayers = (elements2 ?? []).map((elementName) => styles.elements?.[elementName] ?? null).filter((layer) => !!layer);
    const variation = variationName ? getVariationStyle(globalStyles, blockName, variationName) ?? null : null;
    const contributions = [
      createContribution(
        pickLayerRootContribution(root),
        createSourceDescriptor("root")
      ),
      ...elementLayers.map(
        (layer) => createContribution(
          pickLayerRootContribution(layer),
          createSourceDescriptor("element")
        )
      ),
      block ? createContribution(
        pickLayerRootContribution(block),
        createSourceDescriptor("block")
      ) : null,
      variation ? createContribution(
        pickLayerRootContribution(variation),
        createSourceDescriptor("blockVariation")
      ) : null
    ];
    if (!isDefaultBlockStyleState(selectedState)) {
      contributions.push(
        createContribution(
          pickLayerRootContribution(
            getStateSlice(root, selectedState)
          ),
          createSourceDescriptor("root")
        ),
        ...elementLayers.map(
          (layer) => createContribution(
            pickLayerRootContribution(
              getStateSlice(layer, selectedState)
            ),
            createSourceDescriptor("element")
          )
        ),
        block ? createContribution(
          pickLayerRootContribution(
            getStateSlice(block, selectedState)
          ),
          createSourceDescriptor("block")
        ) : null,
        variation ? createContribution(
          pickLayerRootContribution(
            getStateSlice(variation, selectedState)
          ),
          createSourceDescriptor("blockVariation")
        ) : null
      );
    }
    const filteredContributions = contributions.filter(
      Boolean
    );
    if (filteredContributions.length === 0) {
      return EMPTY_INHERITANCE;
    }
    const sources = {};
    const value = filteredContributions.reduce(
      (mergedValue, contribution) => deepMergeDroppingEmpties(
        mergedValue,
        contribution.styles,
        globalStyles,
        contribution.source,
        sources
      ),
      {}
    );
    dropNonCascadingRootLeaves(value, sources);
    resolveThemeFileBackgroundImage(
      value,
      globalStyles,
      globalStyles._links ?? null
    );
    return { value, sources };
  }
  var NO_LINKS = {};
  var memo = /* @__PURE__ */ new WeakMap();
  function resolveStyle(globalStyles, context = {}) {
    const styleData = globalStyles?.styles;
    if (!styleData || typeof styleData !== "object") {
      return computeResolvedStyle(globalStyles, context);
    }
    let byLinks = memo.get(styleData);
    if (!byLinks) {
      byLinks = /* @__PURE__ */ new WeakMap();
      memo.set(styleData, byLinks);
    }
    const linksKey = globalStyles?._links ?? NO_LINKS;
    let inner = byLinks.get(linksKey);
    if (!inner) {
      inner = /* @__PURE__ */ new Map();
      byLinks.set(linksKey, inner);
    }
    const sliceKey = `${context.elements?.join(",") ?? ""}:${context.viewport ?? ""}:${context.pseudoState ?? ""}`;
    const key = (context.blockName || "") + "" + (context.variationName || "") + "" + sliceKey;
    if (inner.has(key)) {
      return inner.get(key);
    }
    const result = computeResolvedStyle(globalStyles, context);
    inner.set(key, result);
    return result;
  }

  // packages/global-styles-engine/build-module/lock-unlock.mjs
  var import_private_apis2 = __toESM(require_private_apis(), 1);
  var { lock: lock2, unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
    "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
    "@wordpress/global-styles-engine"
  );

  // packages/global-styles-engine/build-module/private-apis.mjs
  var privateApis = {};
  lock2(privateApis, {
    getResponsiveMediaQueries,
    getViewportBreakpoints,
    getViewportBreakpointValueInPixels,
    getDuotoneFilter,
    getDuotoneStylesheet,
    getDuotoneUnsetStylesheet,
    resolveStyle,
    getVariationStyle
  });

  // packages/global-styles-engine/build-module/preview-state-styles.mjs
  function generatePreviewStateStyles(stateStyles, blockName) {
    if (!stateStyles || !blockName) {
      return "";
    }
    const previewConfig = {
      settings: {},
      // Empty settings to satisfy the config structure
      styles: {
        blocks: {
          [blockName]: stateStyles
        }
      }
    };
    try {
      const [generatedStyles] = generateGlobalStyles(previewConfig, []);
      return generatedStyles.map((style) => style.css).join("\n");
    } catch {
      return "";
    }
  }

  // packages/editor/build-module/utils/device-type.mjs
  var { getViewportBreakpoints: getViewportBreakpoints2, getViewportBreakpointValueInPixels: getViewportBreakpointValueInPixels2 } = unlock(
    privateApis
  );
  var VIEWPORT_KEY_BY_DEVICE_TYPE = {
    Tablet: "tablet",
    Mobile: "mobile"
  };
  var DESKTOP_DEVICE_TYPE = "Desktop";
  var TABLET_DEVICE_TYPE = "Tablet";
  var MOBILE_DEVICE_TYPE = "Mobile";
  var DEVICE_PREVIEW_WIDTH_OFFSET = 1;
  var VIEWPORT_STATE_BY_DEVICE_TYPE = {
    Desktop: "default",
    Tablet: "@tablet",
    Mobile: "@mobile"
  };
  function getDeviceTypeByCanvasWidth(canvasWidth2, viewportSettings) {
    const width = getViewportBreakpointValueInPixels2(canvasWidth2);
    const breakpoints = getViewportBreakpoints2(viewportSettings);
    if (width && width <= getViewportBreakpointValueInPixels2(breakpoints.mobile)) {
      return MOBILE_DEVICE_TYPE;
    }
    if (width && width <= getViewportBreakpointValueInPixels2(breakpoints.tablet)) {
      return TABLET_DEVICE_TYPE;
    }
    return DESKTOP_DEVICE_TYPE;
  }
  function getCanvasWidthByDeviceType(deviceType, viewportSettings) {
    const viewportKey = VIEWPORT_KEY_BY_DEVICE_TYPE[deviceType];
    if (!viewportKey) {
      return void 0;
    }
    const breakpoints = getViewportBreakpoints2(viewportSettings);
    const width = getViewportBreakpointValueInPixels2(
      breakpoints[viewportKey]
    );
    if (width === void 0) {
      return void 0;
    }
    let lowerBreakpoint = 0;
    if (deviceType === TABLET_DEVICE_TYPE) {
      lowerBreakpoint = getViewportBreakpointValueInPixels2(breakpoints.mobile) ?? 0;
    }
    const offset4 = Math.min(
      DEVICE_PREVIEW_WIDTH_OFFSET,
      (width - lowerBreakpoint) / 2
    );
    return width - offset4;
  }

  // packages/editor/build-module/store/selectors.mjs
  var { getTemplateInfo, getTemplatePartIcon } = unlock(import_core_data.privateApis);
  var EMPTY_OBJECT = {};
  var hasEditorUndo = (0, import_data4.createRegistrySelector)((select9) => () => {
    return select9(import_core_data.store).hasUndo();
  });
  var hasEditorRedo = (0, import_data4.createRegistrySelector)((select9) => () => {
    return select9(import_core_data.store).hasRedo();
  });
  function isEditedPostNew(state2) {
    return getCurrentPost(state2).status === "auto-draft";
  }
  function hasChangedContent(state2) {
    const edits = getPostEdits(state2);
    return "content" in edits;
  }
  var isEditedPostDirty = (0, import_data4.createRegistrySelector)(
    (select9) => (state2) => {
      const postType2 = getCurrentPostType(state2);
      const postId2 = getCurrentPostId(state2);
      return select9(import_core_data.store).hasEditsForEntityRecord(
        "postType",
        postType2,
        postId2
      );
    }
  );
  var hasNonPostEntityChanges = (0, import_data4.createRegistrySelector)(
    (select9) => (state2) => {
      const dirtyEntityRecords = select9(import_core_data.store).__experimentalGetDirtyEntityRecords();
      const { type, id } = getCurrentPost(state2);
      return dirtyEntityRecords.some(
        (entityRecord) => entityRecord.kind !== "postType" || entityRecord.name !== type || entityRecord.key !== id
      );
    }
  );
  function isCleanNewPost(state2) {
    return !isEditedPostDirty(state2) && isEditedPostNew(state2);
  }
  var getCurrentPost = (0, import_data4.createRegistrySelector)(
    (select9) => (state2) => {
      const postId2 = getCurrentPostId(state2);
      const postType2 = getCurrentPostType(state2);
      const post2 = select9(import_core_data.store).getRawEntityRecord(
        "postType",
        postType2,
        postId2
      );
      if (post2) {
        return post2;
      }
      return EMPTY_OBJECT;
    }
  );
  function getCurrentPostType(state2) {
    return state2.postType;
  }
  function getCurrentPostId(state2) {
    return state2.postId;
  }
  function getCurrentTemplateId(state2) {
    return state2.templateId;
  }
  function getCurrentPostRevisionsCount(state2) {
    return getCurrentPost(state2)._links?.["version-history"]?.[0]?.count ?? 0;
  }
  function getCurrentPostLastRevisionId(state2) {
    return getCurrentPost(state2)._links?.["predecessor-version"]?.[0]?.id ?? null;
  }
  var getPostEdits = (0, import_data4.createRegistrySelector)((select9) => (state2) => {
    const postType2 = getCurrentPostType(state2);
    const postId2 = getCurrentPostId(state2);
    return select9(import_core_data.store).getEntityRecordEdits(
      "postType",
      postType2,
      postId2
    ) || EMPTY_OBJECT;
  });
  function getCurrentPostAttribute(state2, attributeName) {
    switch (attributeName) {
      case "type":
        return getCurrentPostType(state2);
      case "id":
        return getCurrentPostId(state2);
      default:
        const post2 = getCurrentPost(state2);
        if (!post2.hasOwnProperty(attributeName)) {
          break;
        }
        return getPostRawValue(post2[attributeName]);
    }
  }
  var getNestedEditedPostProperty = (0, import_data4.createSelector)(
    (state2, attributeName) => {
      const edits = getPostEdits(state2);
      if (!edits.hasOwnProperty(attributeName)) {
        return getCurrentPostAttribute(state2, attributeName);
      }
      return {
        ...getCurrentPostAttribute(state2, attributeName),
        ...edits[attributeName]
      };
    },
    (state2, attributeName) => [
      getCurrentPostAttribute(state2, attributeName),
      getPostEdits(state2)[attributeName]
    ]
  );
  function getEditedPostAttribute(state2, attributeName) {
    switch (attributeName) {
      case "content":
        return getEditedPostContent(state2);
    }
    const edits = getPostEdits(state2);
    if (!edits.hasOwnProperty(attributeName)) {
      return getCurrentPostAttribute(state2, attributeName);
    }
    if (EDIT_MERGE_PROPERTIES.has(attributeName)) {
      return getNestedEditedPostProperty(state2, attributeName);
    }
    return edits[attributeName];
  }
  var getAutosaveAttribute = (0, import_data4.createRegistrySelector)(
    (select9) => (state2, attributeName) => {
      if (!AUTOSAVE_PROPERTIES.includes(attributeName) && attributeName !== "preview_link") {
        return;
      }
      const postType2 = getCurrentPostType(state2);
      const postId2 = getCurrentPostId(state2);
      const currentUserId = select9(import_core_data.store).getCurrentUser()?.id;
      const autosave2 = select9(import_core_data.store).getAutosave(
        postType2,
        postId2,
        currentUserId
      );
      if (autosave2) {
        return getPostRawValue(autosave2[attributeName]);
      }
    }
  );
  function getEditedPostVisibility(state2) {
    const status = getEditedPostAttribute(state2, "status");
    if (status === "private") {
      return "private";
    }
    const password = getEditedPostAttribute(state2, "password");
    if (password) {
      return "password";
    }
    return "public";
  }
  function isCurrentPostPending(state2) {
    return getCurrentPost(state2).status === "pending";
  }
  function isCurrentPostPublished(state2, currentPost) {
    const post2 = currentPost || getCurrentPost(state2);
    return ["publish", "private"].indexOf(post2.status) !== -1 || post2.status === "future" && !(0, import_date.isInTheFuture)(
      new Date(Number((0, import_date.getDate)(post2.date)) - ONE_MINUTE_IN_MS)
    );
  }
  function isCurrentPostScheduled(state2) {
    return getCurrentPost(state2).status === "future" && !isCurrentPostPublished(state2);
  }
  function isEditedPostPublishable(state2) {
    const post2 = getCurrentPost(state2);
    if (post2.type === ATTACHMENT_POST_TYPE) {
      return isEditedPostDirty(state2);
    }
    return isEditedPostDirty(state2) || ["publish", "private", "future"].indexOf(post2.status) === -1;
  }
  function isEditedPostSaveable(state2) {
    if (isSavingPost(state2)) {
      return false;
    }
    return !!getEditedPostAttribute(state2, "title") || !!getEditedPostAttribute(state2, "excerpt") || !isEditedPostEmpty(state2);
  }
  var isEditedPostEmpty = (0, import_data4.createRegistrySelector)(
    (select9) => (state2) => {
      const postId2 = getCurrentPostId(state2);
      const postType2 = getCurrentPostType(state2);
      const record = select9(import_core_data.store).getEditedEntityRecord(
        "postType",
        postType2,
        postId2
      );
      if (typeof record.content !== "function") {
        return !record.content;
      }
      const blocks = getEditedPostAttribute(state2, "blocks");
      if (blocks.length === 0) {
        return true;
      }
      if (blocks.length > 1) {
        return false;
      }
      const blockName = blocks[0].name;
      if (blockName !== (0, import_blocks3.getDefaultBlockName)() && blockName !== (0, import_blocks3.getFreeformContentHandlerName)()) {
        return false;
      }
      return !getEditedPostContent(state2);
    }
  );
  var isEditedPostAutosaveable = (0, import_data4.createRegistrySelector)(
    (select9) => (state2) => {
      if (!isEditedPostSaveable(state2)) {
        return false;
      }
      if (isPostAutosavingLocked(state2)) {
        return false;
      }
      const postType2 = getCurrentPostType(state2);
      const postTypeObject = select9(import_core_data.store).getPostType(postType2);
      if (!postTypeObject?.supports?.autosave) {
        return false;
      }
      const postId2 = getCurrentPostId(state2);
      const hasFetchedAutosave = select9(import_core_data.store).hasFetchedAutosaves(
        postType2,
        postId2
      );
      const currentUserId = select9(import_core_data.store).getCurrentUser()?.id;
      const autosave2 = select9(import_core_data.store).getAutosave(
        postType2,
        postId2,
        currentUserId
      );
      if (!hasFetchedAutosave) {
        return false;
      }
      if (!autosave2) {
        return true;
      }
      if (hasChangedContent(state2)) {
        return true;
      }
      return ["title", "excerpt", "meta"].some(
        (field) => getPostRawValue(autosave2[field]) !== getEditedPostAttribute(state2, field)
      );
    }
  );
  function isEditedPostBeingScheduled(state2) {
    const date = getEditedPostAttribute(state2, "date");
    const checkedDate = new Date(
      Number((0, import_date.getDate)(date)) - ONE_MINUTE_IN_MS
    );
    return (0, import_date.isInTheFuture)(checkedDate);
  }
  function isEditedPostDateFloating(state2) {
    const date = getEditedPostAttribute(state2, "date");
    const modified = getEditedPostAttribute(state2, "modified");
    const status = getCurrentPost(state2).status;
    if (status === "draft" || status === "auto-draft" || status === "pending") {
      return date === modified || date === null;
    }
    return false;
  }
  function isDeletingPost(state2) {
    return !!state2.deleting.pending;
  }
  function isSavingPost(state2) {
    return !!state2.saving.pending;
  }
  var isSavingNonPostEntityChanges = (0, import_data4.createRegistrySelector)(
    (select9) => (state2) => {
      const entitiesBeingSaved = select9(import_core_data.store).__experimentalGetEntitiesBeingSaved();
      const { type, id } = getCurrentPost(state2);
      return entitiesBeingSaved.some(
        (entityRecord) => entityRecord.kind !== "postType" || entityRecord.name !== type || entityRecord.key !== id
      );
    }
  );
  var didPostSaveRequestSucceed = (0, import_data4.createRegistrySelector)(
    (select9) => (state2) => {
      const postType2 = getCurrentPostType(state2);
      const postId2 = getCurrentPostId(state2);
      return !select9(import_core_data.store).getLastEntitySaveError(
        "postType",
        postType2,
        postId2
      );
    }
  );
  var didPostSaveRequestFail = (0, import_data4.createRegistrySelector)(
    (select9) => (state2) => {
      const postType2 = getCurrentPostType(state2);
      const postId2 = getCurrentPostId(state2);
      return !!select9(import_core_data.store).getLastEntitySaveError(
        "postType",
        postType2,
        postId2
      );
    }
  );
  function isAutosavingPost(state2) {
    return isSavingPost(state2) && Boolean(state2.saving.options?.isAutosave);
  }
  function isPreviewingPost(state2) {
    return isSavingPost(state2) && Boolean(state2.saving.options?.isPreview);
  }
  function getEditedPostPreviewLink(state2) {
    if (state2.saving.pending || isSavingPost(state2)) {
      return;
    }
    let previewLink = getAutosaveAttribute(state2, "preview_link");
    if (!previewLink || "draft" === getCurrentPost(state2).status) {
      previewLink = getEditedPostAttribute(state2, "link");
      if (previewLink) {
        previewLink = (0, import_url.addQueryArgs)(previewLink, { preview: true });
      }
    }
    const featuredImageId = getEditedPostAttribute(state2, "featured_media");
    if (previewLink && featuredImageId) {
      return (0, import_url.addQueryArgs)(previewLink, { _thumbnail_id: featuredImageId });
    }
    return previewLink;
  }
  var getSuggestedPostFormat = (0, import_data4.createRegistrySelector)(
    (select9) => () => {
      const blocks = select9(import_block_editor2.store).getBlocks();
      if (blocks.length > 2) {
        return null;
      }
      let name2;
      if (blocks.length === 1) {
        name2 = blocks[0].name;
        if (name2 === "core/embed") {
          const provider = blocks[0].attributes?.providerNameSlug;
          if (["youtube", "vimeo"].includes(provider)) {
            name2 = "core/video";
          } else if (["spotify", "soundcloud"].includes(provider)) {
            name2 = "core/audio";
          }
        }
      }
      if (blocks.length === 2 && blocks[1].name === "core/paragraph") {
        name2 = blocks[0].name;
      }
      switch (name2) {
        case "core/image":
          return "image";
        case "core/quote":
        case "core/pullquote":
          return "quote";
        case "core/gallery":
          return "gallery";
        case "core/video":
          return "video";
        case "core/audio":
          return "audio";
        default:
          return null;
      }
    }
  );
  var getEditedPostContent = (0, import_data4.createRegistrySelector)(
    (select9) => (state2) => {
      const postId2 = getCurrentPostId(state2);
      const postType2 = getCurrentPostType(state2);
      const record = select9(import_core_data.store).getEditedEntityRecord(
        "postType",
        postType2,
        postId2
      );
      if (record) {
        if (typeof record.content === "function") {
          return record.content(record);
        } else if (record.blocks) {
          return (0, import_blocks3.__unstableSerializeAndClean)(record.blocks);
        } else if (record.content) {
          return record.content;
        }
      }
      return "";
    }
  );
  function isPublishingPost(state2) {
    return isSavingPost(state2) && !isCurrentPostPublished(state2) && getEditedPostAttribute(state2, "status") === "publish";
  }
  function isPermalinkEditable(state2) {
    const permalinkTemplate = getEditedPostAttribute(
      state2,
      "permalink_template"
    );
    return PERMALINK_POSTNAME_REGEX.test(permalinkTemplate);
  }
  function getPermalink(state2) {
    const permalinkParts = getPermalinkParts(state2);
    if (!permalinkParts) {
      return null;
    }
    const { prefix: prefix2, postName, suffix } = permalinkParts;
    if (isPermalinkEditable(state2)) {
      return prefix2 + postName + suffix;
    }
    return prefix2;
  }
  function getEditedPostSlug(state2) {
    return getEditedPostAttribute(state2, "slug") || getEditedPostAttribute(state2, "generated_slug") || (0, import_url.cleanForSlug)(getEditedPostAttribute(state2, "title")) || getCurrentPostId(state2);
  }
  function getPermalinkParts(state2) {
    const permalinkTemplate = getEditedPostAttribute(
      state2,
      "permalink_template"
    );
    if (!permalinkTemplate) {
      return null;
    }
    const postName = getEditedPostAttribute(state2, "slug") || getEditedPostAttribute(state2, "generated_slug");
    const [prefix2, suffix] = permalinkTemplate.split(
      PERMALINK_POSTNAME_REGEX
    );
    return {
      prefix: prefix2,
      postName,
      suffix
    };
  }
  function isPostLocked(state2) {
    return state2.postLock.isLocked;
  }
  function isPostSavingLocked(state2) {
    return Object.keys(state2.postSavingLock).length > 0;
  }
  function isPostAutosavingLocked(state2) {
    return Object.keys(state2.postAutosavingLock).length > 0;
  }
  function isPostLockTakeover(state2) {
    return state2.postLock.isTakeover;
  }
  function getPostLockUser(state2) {
    return state2.postLock.user;
  }
  function getActivePostLock(state2) {
    return state2.postLock.activePostLock;
  }
  function canUserUseUnfilteredHTML(state2) {
    return Boolean(
      getCurrentPost(state2)._links?.hasOwnProperty(
        "wp:action-unfiltered-html"
      )
    );
  }
  var isPublishSidebarEnabled = (0, import_data4.createRegistrySelector)(
    (select9) => () => !!select9(import_preferences.store).get("core", "isPublishSidebarEnabled")
  );
  var getEditorBlocks = (0, import_data4.createSelector)(
    (state2) => {
      return getEditedPostAttribute(state2, "blocks") || (0, import_blocks3.parse)(getEditedPostContent(state2));
    },
    (state2) => [
      getEditedPostAttribute(state2, "blocks"),
      getEditedPostContent(state2)
    ]
  );
  function isEditorPanelRemoved(state2, panelName) {
    return state2.removedPanels.includes(panelName);
  }
  var isEditorPanelEnabled = (0, import_data4.createRegistrySelector)(
    (select9) => (state2, panelName) => {
      const inactivePanels = select9(import_preferences.store).get(
        "core",
        "inactivePanels"
      );
      return !isEditorPanelRemoved(state2, panelName) && !inactivePanels?.includes(panelName);
    }
  );
  var isEditorPanelOpened = (0, import_data4.createRegistrySelector)(
    (select9) => (state2, panelName) => {
      const openPanels = select9(import_preferences.store).get(
        "core",
        "openPanels"
      );
      return !!openPanels?.includes(panelName);
    }
  );
  function getEditorSelectionStart(state2) {
    (0, import_deprecated.default)("select('core/editor').getEditorSelectionStart", {
      since: "5.8",
      alternative: "select('core/editor').getEditorSelection"
    });
    return getEditedPostAttribute(state2, "selection")?.selectionStart;
  }
  function getEditorSelectionEnd(state2) {
    (0, import_deprecated.default)("select('core/editor').getEditorSelectionStart", {
      since: "5.8",
      alternative: "select('core/editor').getEditorSelection"
    });
    return getEditedPostAttribute(state2, "selection")?.selectionEnd;
  }
  function getEditorSelection(state2) {
    return getEditedPostAttribute(state2, "selection");
  }
  function __unstableIsEditorReady(state2) {
    return !!state2.postId;
  }
  function getEditorSettings(state2) {
    return state2.editorSettings;
  }
  function getRenderingMode(state2) {
    return state2.renderingMode;
  }
  var getDeviceType = (0, import_data4.createRegistrySelector)(
    (select9) => (state2) => {
      const blockEditorSelect = unlock(select9(import_block_editor2.store));
      const isZoomOut = blockEditorSelect.isZoomOut();
      if (isZoomOut) {
        return "Desktop";
      }
      const canvasWidth2 = state2.canvasWidth;
      const viewportSettings = blockEditorSelect.getSettings().__experimentalFeatures?.viewport;
      return getDeviceTypeByCanvasWidth(canvasWidth2, viewportSettings);
    }
  );
  function isListViewOpened(state2) {
    return state2.listViewPanel;
  }
  function isInserterOpened(state2) {
    return !!state2.blockInserterPanel;
  }
  var getEditorMode = (0, import_data4.createRegistrySelector)(
    (select9) => () => select9(import_preferences.store).get("core", "editorMode") ?? "visual"
  );
  function getStateBeforeOptimisticTransaction() {
    (0, import_deprecated.default)("select('core/editor').getStateBeforeOptimisticTransaction", {
      since: "5.7",
      hint: "No state history is kept on this store anymore"
    });
    return null;
  }
  function inSomeHistory() {
    (0, import_deprecated.default)("select('core/editor').inSomeHistory", {
      since: "5.7",
      hint: "No state history is kept on this store anymore"
    });
    return false;
  }
  function getBlockEditorSelector(name2) {
    return (0, import_data4.createRegistrySelector)((select9) => (state2, ...args) => {
      (0, import_deprecated.default)("`wp.data.select( 'core/editor' )." + name2 + "`", {
        since: "5.3",
        alternative: "`wp.data.select( 'core/block-editor' )." + name2 + "`",
        version: "6.2"
      });
      return select9(import_block_editor2.store)[name2](...args);
    });
  }
  var getBlockName = getBlockEditorSelector("getBlockName");
  var isBlockValid = getBlockEditorSelector("isBlockValid");
  var getBlockAttributes = getBlockEditorSelector("getBlockAttributes");
  var getBlock = getBlockEditorSelector("getBlock");
  var getBlocks = getBlockEditorSelector("getBlocks");
  var getClientIdsOfDescendants = getBlockEditorSelector(
    "getClientIdsOfDescendants"
  );
  var getClientIdsWithDescendants = getBlockEditorSelector(
    "getClientIdsWithDescendants"
  );
  var getGlobalBlockCount = getBlockEditorSelector(
    "getGlobalBlockCount"
  );
  var getBlocksByClientId = getBlockEditorSelector(
    "getBlocksByClientId"
  );
  var getBlockCount = getBlockEditorSelector("getBlockCount");
  var getBlockSelectionStart = getBlockEditorSelector(
    "getBlockSelectionStart"
  );
  var getBlockSelectionEnd = getBlockEditorSelector(
    "getBlockSelectionEnd"
  );
  var getSelectedBlockCount = getBlockEditorSelector(
    "getSelectedBlockCount"
  );
  var hasSelectedBlock = getBlockEditorSelector("hasSelectedBlock");
  var getSelectedBlockClientId = getBlockEditorSelector(
    "getSelectedBlockClientId"
  );
  var getSelectedBlock = getBlockEditorSelector("getSelectedBlock");
  var getBlockRootClientId = getBlockEditorSelector(
    "getBlockRootClientId"
  );
  var getBlockHierarchyRootClientId = getBlockEditorSelector(
    "getBlockHierarchyRootClientId"
  );
  var getAdjacentBlockClientId = getBlockEditorSelector(
    "getAdjacentBlockClientId"
  );
  var getPreviousBlockClientId = getBlockEditorSelector(
    "getPreviousBlockClientId"
  );
  var getNextBlockClientId = getBlockEditorSelector(
    "getNextBlockClientId"
  );
  var getSelectedBlocksInitialCaretPosition = getBlockEditorSelector(
    "getSelectedBlocksInitialCaretPosition"
  );
  var getMultiSelectedBlockClientIds = getBlockEditorSelector(
    "getMultiSelectedBlockClientIds"
  );
  var getMultiSelectedBlocks = getBlockEditorSelector(
    "getMultiSelectedBlocks"
  );
  var getFirstMultiSelectedBlockClientId = getBlockEditorSelector(
    "getFirstMultiSelectedBlockClientId"
  );
  var getLastMultiSelectedBlockClientId = getBlockEditorSelector(
    "getLastMultiSelectedBlockClientId"
  );
  var isFirstMultiSelectedBlock = getBlockEditorSelector(
    "isFirstMultiSelectedBlock"
  );
  var isBlockMultiSelected = getBlockEditorSelector(
    "isBlockMultiSelected"
  );
  var isAncestorMultiSelected = getBlockEditorSelector(
    "isAncestorMultiSelected"
  );
  var getMultiSelectedBlocksStartClientId = getBlockEditorSelector(
    "getMultiSelectedBlocksStartClientId"
  );
  var getMultiSelectedBlocksEndClientId = getBlockEditorSelector(
    "getMultiSelectedBlocksEndClientId"
  );
  var getBlockOrder = getBlockEditorSelector("getBlockOrder");
  var getBlockIndex = getBlockEditorSelector("getBlockIndex");
  var isBlockSelected = getBlockEditorSelector("isBlockSelected");
  var hasSelectedInnerBlock = getBlockEditorSelector(
    "hasSelectedInnerBlock"
  );
  var isBlockWithinSelection = getBlockEditorSelector(
    "isBlockWithinSelection"
  );
  var hasMultiSelection = getBlockEditorSelector("hasMultiSelection");
  var isMultiSelecting = getBlockEditorSelector("isMultiSelecting");
  var isSelectionEnabled = getBlockEditorSelector("isSelectionEnabled");
  var getBlockMode = getBlockEditorSelector("getBlockMode");
  var isTyping = getBlockEditorSelector("isTyping");
  var isCaretWithinFormattedText = getBlockEditorSelector(
    "isCaretWithinFormattedText"
  );
  var getBlockInsertionPoint = getBlockEditorSelector(
    "getBlockInsertionPoint"
  );
  var isBlockInsertionPointVisible = getBlockEditorSelector(
    "isBlockInsertionPointVisible"
  );
  var isValidTemplate = getBlockEditorSelector("isValidTemplate");
  var getTemplate = getBlockEditorSelector("getTemplate");
  var getTemplateLock = getBlockEditorSelector("getTemplateLock");
  var canInsertBlockType = getBlockEditorSelector("canInsertBlockType");
  var getInserterItems = getBlockEditorSelector("getInserterItems");
  var hasInserterItems = getBlockEditorSelector("hasInserterItems");
  var getBlockListSettings = getBlockEditorSelector(
    "getBlockListSettings"
  );
  var __experimentalGetDefaultTemplateTypes = (0, import_data4.createRegistrySelector)(
    (select9) => () => {
      (0, import_deprecated.default)(
        "select('core/editor').__experimentalGetDefaultTemplateTypes",
        {
          since: "6.8",
          alternative: "select('core/core-data').getCurrentTheme()?.default_template_types"
        }
      );
      return select9(import_core_data.store).getCurrentTheme()?.default_template_types;
    }
  );
  var __experimentalGetDefaultTemplatePartAreas = (0, import_data4.createRegistrySelector)(
    (select9) => (0, import_data4.createSelector)(() => {
      (0, import_deprecated.default)(
        "select('core/editor').__experimentalGetDefaultTemplatePartAreas",
        {
          since: "6.8",
          alternative: "select('core/core-data').getCurrentTheme()?.default_template_part_areas"
        }
      );
      const areas = select9(import_core_data.store).getCurrentTheme()?.default_template_part_areas || [];
      return areas.map((item) => {
        return { ...item, icon: getTemplatePartIcon(item.icon) };
      });
    })
  );
  var __experimentalGetDefaultTemplateType = (0, import_data4.createRegistrySelector)(
    (select9) => (0, import_data4.createSelector)((state2, slug) => {
      (0, import_deprecated.default)(
        "select('core/editor').__experimentalGetDefaultTemplateType",
        {
          since: "6.8"
        }
      );
      const templateTypes = select9(import_core_data.store).getCurrentTheme()?.default_template_types;
      if (!templateTypes) {
        return EMPTY_OBJECT;
      }
      return Object.values(templateTypes).find(
        (type) => type.slug === slug
      ) ?? EMPTY_OBJECT;
    })
  );
  var __experimentalGetTemplateInfo = (0, import_data4.createRegistrySelector)(
    (select9) => (0, import_data4.createSelector)((state2, template2) => {
      (0, import_deprecated.default)("select('core/editor').__experimentalGetTemplateInfo", {
        since: "6.8"
      });
      if (!template2) {
        return EMPTY_OBJECT;
      }
      const currentTheme = select9(import_core_data.store).getCurrentTheme();
      const templateTypes = currentTheme?.default_template_types || [];
      const templateAreas = currentTheme?.default_template_part_areas || [];
      return getTemplateInfo({
        template: template2,
        templateAreas,
        templateTypes
      });
    })
  );
  var getPostTypeLabel = (0, import_data4.createRegistrySelector)(
    (select9) => (state2) => {
      const currentPostType = getCurrentPostType(state2);
      const postType2 = select9(import_core_data.store).getPostType(currentPostType);
      return postType2?.labels?.singular_name;
    }
  );
  function isPublishSidebarOpened(state2) {
    return state2.publishSidebarActive;
  }

  // packages/editor/build-module/store/actions.mjs
  var actions_exports3 = {};
  __export(actions_exports3, {
    __experimentalTearDownEditor: () => __experimentalTearDownEditor,
    __unstableSaveForPreview: () => __unstableSaveForPreview,
    autosave: () => autosave,
    clearSelectedBlock: () => clearSelectedBlock,
    closePublishSidebar: () => closePublishSidebar,
    createUndoLevel: () => createUndoLevel,
    disablePublishSidebar: () => disablePublishSidebar,
    editPost: () => editPost,
    enablePublishSidebar: () => enablePublishSidebar,
    enterFormattedText: () => enterFormattedText,
    exitFormattedText: () => exitFormattedText,
    hideInsertionPoint: () => hideInsertionPoint,
    insertBlock: () => insertBlock,
    insertBlocks: () => insertBlocks,
    insertDefaultBlock: () => insertDefaultBlock,
    lockPostAutosaving: () => lockPostAutosaving,
    lockPostSaving: () => lockPostSaving,
    mergeBlocks: () => mergeBlocks,
    moveBlockToPosition: () => moveBlockToPosition,
    moveBlocksDown: () => moveBlocksDown,
    moveBlocksUp: () => moveBlocksUp,
    multiSelect: () => multiSelect,
    openPublishSidebar: () => openPublishSidebar,
    receiveBlocks: () => receiveBlocks,
    redo: () => redo,
    refreshPost: () => refreshPost,
    removeBlock: () => removeBlock,
    removeBlocks: () => removeBlocks,
    removeEditorPanel: () => removeEditorPanel,
    replaceBlock: () => replaceBlock,
    replaceBlocks: () => replaceBlocks,
    resetBlocks: () => resetBlocks,
    resetEditorBlocks: () => resetEditorBlocks,
    resetPost: () => resetPost,
    savePost: () => savePost,
    selectBlock: () => selectBlock,
    setDeviceType: () => setDeviceType,
    setEditedPost: () => setEditedPost,
    setIsInserterOpened: () => setIsInserterOpened,
    setIsListViewOpened: () => setIsListViewOpened,
    setRenderingMode: () => setRenderingMode,
    setTemplateValidity: () => setTemplateValidity,
    setupEditor: () => setupEditor,
    setupEditorState: () => setupEditorState,
    showInsertionPoint: () => showInsertionPoint,
    startMultiSelect: () => startMultiSelect,
    startTyping: () => startTyping,
    stopMultiSelect: () => stopMultiSelect,
    stopTyping: () => stopTyping,
    switchEditorMode: () => switchEditorMode,
    synchronizeTemplate: () => synchronizeTemplate,
    toggleBlockMode: () => toggleBlockMode,
    toggleDistractionFree: () => toggleDistractionFree,
    toggleEditorPanelEnabled: () => toggleEditorPanelEnabled,
    toggleEditorPanelOpened: () => toggleEditorPanelOpened,
    togglePublishSidebar: () => togglePublishSidebar,
    toggleSelection: () => toggleSelection,
    toggleSpotlightMode: () => toggleSpotlightMode,
    toggleTopToolbar: () => toggleTopToolbar,
    trashPost: () => trashPost2,
    undo: () => undo,
    unlockPostAutosaving: () => unlockPostAutosaving,
    unlockPostSaving: () => unlockPostSaving,
    updateBlock: () => updateBlock,
    updateBlockAttributes: () => updateBlockAttributes,
    updateBlockListSettings: () => updateBlockListSettings,
    updateEditorSettings: () => updateEditorSettings,
    updatePost: () => updatePost,
    updatePostLock: () => updatePostLock
  });
  var import_a11y10 = __toESM(require_a11y(), 1);
  var import_api_fetch8 = __toESM(require_api_fetch(), 1);
  var import_escape_html = __toESM(require_escape_html(), 1);
  var import_deprecated9 = __toESM(require_deprecated(), 1);
  var import_warning3 = __toESM(require_warning(), 1);
  var import_blocks20 = __toESM(require_blocks(), 1);
  var import_notices20 = __toESM(require_notices(), 1);
  var import_core_data63 = __toESM(require_core_data(), 1);
  var import_block_editor37 = __toESM(require_block_editor(), 1);
  var import_hooks42 = __toESM(require_hooks(), 1);
  var import_preferences10 = __toESM(require_preferences(), 1);
  var import_i18n224 = __toESM(require_i18n(), 1);

  // packages/editor/build-module/store/local-autosave.mjs
  var import_core_data2 = __toESM(require_core_data(), 1);
  var { CRDT_AUTOSAVE_SNAPSHOT_KEY } = unlock(import_core_data2.privateApis);
  function postKey(postId2, isPostNew) {
    return `wp-autosave-block-editor-post-${isPostNew ? "auto-draft" : postId2}`;
  }
  function localAutosaveGet(postId2, isPostNew) {
    return window.sessionStorage.getItem(postKey(postId2, isPostNew));
  }
  function localAutosaveSet(postId2, isPostNew, title, content, excerpt, crdtSnapshot) {
    const backup = {
      post_title: title,
      content,
      excerpt
    };
    if (crdtSnapshot) {
      backup[CRDT_AUTOSAVE_SNAPSHOT_KEY] = crdtSnapshot;
    }
    const key = postKey(postId2, isPostNew);
    try {
      window.sessionStorage.setItem(key, JSON.stringify(backup));
    } catch (error2) {
      if (!backup[CRDT_AUTOSAVE_SNAPSHOT_KEY]) {
        throw error2;
      }
      delete backup[CRDT_AUTOSAVE_SNAPSHOT_KEY];
      window.sessionStorage.setItem(key, JSON.stringify(backup));
    }
  }
  function localAutosaveGetSnapshot(backup) {
    return backup?.[CRDT_AUTOSAVE_SNAPSHOT_KEY];
  }
  function localAutosaveClear(postId2, isPostNew) {
    window.sessionStorage.removeItem(postKey(postId2, isPostNew));
  }

  // packages/editor/build-module/store/utils/notice-builder.mjs
  var import_i18n2 = __toESM(require_i18n(), 1);
  var AUTO_SAVE_FAILURE_NOTICE = (0, import_i18n2.__)(
    "Auto-save failed. We\u2019ll try to save a backup in this browser. You can also save manually."
  );
  var AUTO_SAVE_OFFLINE_FAILURE_NOTICE = (0, import_i18n2.__)(
    "Auto-save failed because you were offline. We\u2019ll try to save a backup in this browser. Please verify your connection and save manually."
  );
  function getNotificationArgumentsForSaveSuccess(data) {
    const { previousPost, post: post2, postType: postType2 } = data;
    if (data.options?.isAutosave) {
      return [];
    }
    const publishStatus = ["publish", "private", "future"];
    const isPublished = publishStatus.includes(previousPost.status);
    const willPublish = publishStatus.includes(post2.status);
    const willTrash = post2.status === "trash" && previousPost.status !== "trash";
    let noticeMessage;
    let shouldShowLink = postType2?.viewable ?? false;
    let isDraft;
    if (willTrash) {
      noticeMessage = postType2.labels.item_trashed;
      shouldShowLink = false;
    } else if (post2.type === ATTACHMENT_POST_TYPE) {
      noticeMessage = (0, import_i18n2.__)("Media updated.");
      shouldShowLink = false;
    } else if (!isPublished && !willPublish) {
      noticeMessage = (0, import_i18n2.__)("Draft saved.");
      isDraft = true;
    } else if (isPublished && !willPublish) {
      noticeMessage = postType2.labels.item_reverted_to_draft;
      shouldShowLink = false;
    } else if (!isPublished && willPublish) {
      noticeMessage = {
        publish: postType2.labels.item_published,
        private: postType2.labels.item_published_privately,
        future: postType2.labels.item_scheduled
      }[post2.status];
    } else {
      noticeMessage = postType2.labels.item_updated;
    }
    const actions2 = [];
    if (shouldShowLink) {
      actions2.push({
        label: isDraft ? (0, import_i18n2.__)("View Preview") : postType2.labels.view_item,
        url: post2.link,
        openInNewTab: true
      });
    }
    return [
      noticeMessage,
      {
        id: "editor-save",
        type: "snackbar",
        actions: actions2
      }
    ];
  }
  function getNotificationArgumentsForSaveFail(data) {
    const { post: post2, edits, error: error2, options } = data;
    if (error2 && "rest_autosave_no_changes" === error2.code) {
      return [];
    }
    const publishStatus = ["publish", "private", "future"];
    const isPublished = publishStatus.indexOf(post2.status) !== -1;
    if (error2.code === "offline_error") {
      const messages2 = {
        publish: (0, import_i18n2.__)(
          "Publishing failed because you were offline. Please verify your connection and try again."
        ),
        private: (0, import_i18n2.__)(
          "Publishing failed because you were offline. Please verify your connection and try again."
        ),
        future: (0, import_i18n2.__)(
          "Scheduling failed because you were offline. Please verify your connection and try again."
        ),
        default: (0, import_i18n2.__)(
          "Updating failed because you were offline. Please verify your connection and try again."
        )
      };
      let noticeMessage2 = !isPublished && edits.status in messages2 ? messages2[edits.status] : messages2.default;
      if (options?.isAutosave) {
        noticeMessage2 = AUTO_SAVE_OFFLINE_FAILURE_NOTICE;
      }
      return [noticeMessage2, { id: "editor-save" }];
    }
    const messages = {
      publish: (0, import_i18n2.__)(
        "Publishing failed. We\u2019ll try to save a backup in this browser. Please try publishing again."
      ),
      private: (0, import_i18n2.__)(
        "Publishing failed. We\u2019ll try to save a backup in this browser. Please try publishing again."
      ),
      future: (0, import_i18n2.__)(
        "Scheduling failed. We\u2019ll try to save a backup in this browser. Please try scheduling again."
      ),
      default: (0, import_i18n2.__)(
        "Updating failed. We\u2019ll try to save a backup in this browser. Please try updating again."
      )
    };
    let noticeMessage = !isPublished && edits.status in messages ? messages[edits.status] : messages.default;
    if (options?.isAutosave) {
      noticeMessage = AUTO_SAVE_FAILURE_NOTICE;
    }
    return [
      noticeMessage,
      {
        id: "editor-save"
      }
    ];
  }
  function getNotificationArgumentsForTrashFail(data) {
    return [
      data.error.message && data.error.code !== "unknown_error" ? data.error.message : (0, import_i18n2.__)("Trashing failed"),
      {
        id: "editor-trash-fail"
      }
    ];
  }

  // packages/editor/build-module/store/utils/attach-media-in-post/index.mjs
  var import_core_data4 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/store/utils/attach-media-in-post/media-ids-in-blocks.mjs
  var MEDIA_ID_ATTRIBUTES = {
    "core/image": "id"
  };
  var SHARED_CONTENT_BLOCKS = ["core/block", "core/template-part"];
  function flattenBlocks(blocks) {
    const result = [];
    blocks.forEach((block) => {
      result.push(block);
      if (!SHARED_CONTENT_BLOCKS.includes(block.name)) {
        result.push(...flattenBlocks(block.innerBlocks));
      }
    });
    return result;
  }
  function getMediaIdsInBlocks(blocks) {
    const mediaIds = /* @__PURE__ */ new Set();
    flattenBlocks(blocks).forEach((block) => {
      const attribute = MEDIA_ID_ATTRIBUTES[block.name];
      if (!attribute) {
        return;
      }
      const id = block.attributes?.[attribute];
      if (Number.isInteger(id) && id > 0) {
        mediaIds.add(id);
      }
    });
    return [...mediaIds].sort((a2, b2) => a2 - b2);
  }

  // packages/editor/build-module/store/utils/attach-media-in-post/invalidate-attachment-resolutions.mjs
  var import_core_data3 = __toESM(require_core_data(), 1);
  function invalidateAttachmentResolutions(registry) {
    const resolvers = registry.select(import_core_data3.store).getCachedResolvers();
    const entityRecordResolutions = resolvers.getEntityRecords;
    entityRecordResolutions?.forEach((_value, args) => {
      if (args[0] === "postType" && args[1] === "attachment") {
        registry.dispatch(import_core_data3.store).invalidateResolution("getEntityRecords", args);
      }
    });
  }

  // packages/editor/build-module/store/utils/attach-media-in-post/index.mjs
  var MAX_MEDIA_TO_ATTACH = 100;
  function warnAttachFailed(reason) {
    console.warn("Could not attach media to the post.", reason);
  }
  async function attachMediaInPost(registry, post2) {
    try {
      await attach(registry, post2);
    } catch (error2) {
      warnAttachFailed(error2);
    }
  }
  async function attach(registry, { id: postId2, type: postType2, blocks }) {
    const mediaIds = getMediaIdsInBlocks(blocks);
    if (!mediaIds.length) {
      return;
    }
    if (mediaIds.length > MAX_MEDIA_TO_ATTACH) {
      console.warn(
        `Not attaching media: the post has more than ${MAX_MEDIA_TO_ATTACH} images.`
      );
      return;
    }
    const postTypeObject = await registry.resolveSelect(import_core_data4.store).getPostType(postType2);
    if (!postTypeObject?.viewable) {
      return;
    }
    const media = await registry.resolveSelect(import_core_data4.store).getEntityRecords("postType", "attachment", {
      include: mediaIds,
      per_page: MAX_MEDIA_TO_ATTACH
    });
    const unattached = (media ?? []).filter((item) => !item.post);
    if (!unattached.length) {
      return;
    }
    const { saveEntityRecord } = registry.dispatch(import_core_data4.store);
    const results = await Promise.allSettled(
      unattached.map(
        (item) => saveEntityRecord("postType", "attachment", {
          id: item.id,
          post: postId2
        })
      )
    );
    results.forEach((result) => {
      if (result.status === "rejected") {
        warnAttachFailed(result.reason);
      }
    });
    if (!results.some(({ status }) => status === "fulfilled")) {
      return;
    }
    invalidateAttachmentResolutions(registry);
  }

  // packages/editor/build-module/store/private-actions.mjs
  var private_actions_exports = {};
  __export(private_actions_exports, {
    createTemplate: () => createTemplate,
    hideBlockTypes: () => hideBlockTypes,
    openRevision: () => openRevision,
    registerEntityAction: () => registerEntityAction,
    registerEntityField: () => registerEntityField,
    registerPostTypeSchema: () => registerPostTypeSchema,
    removeTemplates: () => removeTemplates,
    resetStylesNavigation: () => resetStylesNavigation,
    restoreRevision: () => restoreRevision,
    revertTemplate: () => revertTemplate2,
    selectNote: () => selectNote,
    setCanvasWidth: () => setCanvasWidth,
    setCurrentRevisionId: () => setCurrentRevisionId,
    setCurrentTemplateId: () => setCurrentTemplateId,
    setDefaultRenderingMode: () => setDefaultRenderingMode,
    setIsReady: () => setIsReady,
    setRevisionPage: () => setRevisionPage,
    setShowRevisionDiff: () => setShowRevisionDiff,
    setShowStylebook: () => setShowStylebook,
    setStylesPath: () => setStylesPath,
    showBlockTypes: () => showBlockTypes,
    unregisterEntityAction: () => unregisterEntityAction,
    unregisterEntityField: () => unregisterEntityField
  });
  var import_core_data62 = __toESM(require_core_data(), 1);
  var import_block_editor36 = __toESM(require_block_editor(), 1);
  var import_i18n223 = __toESM(require_i18n(), 1);
  var import_notices19 = __toESM(require_notices(), 1);
  var import_preferences9 = __toESM(require_preferences(), 1);
  var import_url14 = __toESM(require_url(), 1);
  var import_api_fetch7 = __toESM(require_api_fetch(), 1);
  var import_blocks19 = __toESM(require_blocks(), 1);
  var import_html_entities13 = __toESM(require_html_entities(), 1);
  var import_date19 = __toESM(require_date(), 1);

  // packages/editor/build-module/store/utils/is-template-revertable.mjs
  function isTemplateRevertable(templateOrTemplatePart) {
    if (!templateOrTemplatePart) {
      return false;
    }
    return templateOrTemplatePart.source === TEMPLATE_ORIGINS.custom && (Boolean(templateOrTemplatePart?.plugin) || templateOrTemplatePart?.has_theme_file);
  }

  // packages/editor/build-module/store/private-selectors.mjs
  var private_selectors_exports = {};
  __export(private_selectors_exports, {
    buildRevisionsPageQuery: () => buildRevisionsPageQuery,
    getCanvasWidth: () => getCanvasWidth,
    getCurrentRevision: () => getCurrentRevision,
    getCurrentRevisionId: () => getCurrentRevisionId,
    getDefaultRenderingMode: () => getDefaultRenderingMode,
    getEntityActions: () => getEntityActions2,
    getEntityFields: () => getEntityFields2,
    getInserter: () => getInserter,
    getInserterSidebarToggleRef: () => getInserterSidebarToggleRef,
    getListViewToggleRef: () => getListViewToggleRef,
    getPageRevisions: () => getPageRevisions,
    getPostBlocksByName: () => getPostBlocksByName,
    getPostIcon: () => getPostIcon,
    getPreviousRevision: () => getPreviousRevision,
    getRevisionPage: () => getRevisionPage,
    getRevisionsPerPage: () => getRevisionsPerPage,
    getSelectedNote: () => getSelectedNote,
    getShowStylebook: () => getShowStylebook,
    getStylesPath: () => getStylesPath,
    isCollaborationEnabledForCurrentPost: () => isCollaborationEnabledForCurrentPost,
    isEntityReady: () => isEntityReady2,
    isNoteFocused: () => isNoteFocused,
    isRevisionsMode: () => isRevisionsMode,
    isShowingRevisionDiff: () => isShowingRevisionDiff
  });
  var import_block_editor3 = __toESM(require_block_editor(), 1);
  var import_data5 = __toESM(require_data(), 1);

  // packages/icons/build-module/icon/index.mjs
  var import_element = __toESM(require_element(), 1);
  var icon_default = (0, import_element.forwardRef)(
    ({ icon, size: size4 = 24, style, ...props }, ref) => {
      const intrinsicStyle = icon.props.style;
      const mergedStyle = intrinsicStyle || style ? { ...intrinsicStyle, ...style } : void 0;
      return (0, import_element.cloneElement)(icon, {
        width: size4,
        height: size4,
        ...props,
        // Merge styles so the icon's intrinsic style (e.g. `fill: none` on
        // stroke-based icons) is preserved unless the consumer overrides
        // the same property explicitly.
        ...mergedStyle ? { style: mergedStyle } : {},
        ref
      });
    }
  );

  // packages/icons/build-module/library/add-template.mjs
  var import_primitives = __toESM(require_primitives(), 1);
  var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
  var add_template_default = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.Path, { d: "M19.25 10V18C19.25 18.6904 18.6904 19.25 18 19.25H6C5.30964 19.25 4.75 18.6904 4.75 18V9.75M14 4.75H6C5.30964 4.75 4.75 5.30964 4.75 6V9.75M19.25 8V1.5M16 4.75H22.5M16.5 9.75H9.25M4.75 9.75H9.25M9.25 9.75V19.25", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/archive.mjs
  var import_primitives2 = __toESM(require_primitives(), 1);
  var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
  var archive_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.Path, { d: "M8.5 11H15.5M8.5 14.5H15.5M20.25 17.5V8.5C20.25 7.80964 19.6904 7.25 19 7.25H13.3463C12.8352 7.25 12.3755 6.93881 12.1857 6.46424L11.8143 5.53576C11.6245 5.06119 11.1648 4.75 10.6537 4.75H5C4.30964 4.75 3.75 5.30964 3.75 6V17.5C3.75 18.1904 4.30964 18.75 5 18.75H19C19.6904 18.75 20.25 18.1904 20.25 17.5Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/arrow-down.mjs
  var import_primitives3 = __toESM(require_primitives(), 1);
  var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
  var arrow_down_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.Path, { d: "M12 4V19M7 14L12 19L17 14", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/arrow-left.mjs
  var import_primitives4 = __toESM(require_primitives(), 1);
  var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);
  var arrow_left_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.Path, { d: "M20 12L5 12M10 7L5 12L10 17", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/arrow-right.mjs
  var import_primitives5 = __toESM(require_primitives(), 1);
  var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);
  var arrow_right_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.Path, { d: "M4 12L19 12M14 17L19 12L14 7", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/arrow-up.mjs
  var import_primitives6 = __toESM(require_primitives(), 1);
  var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);
  var arrow_up_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.Path, { d: "M12 20L12 5M17 10L12 5L7 10", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/aspect-ratio.mjs
  var import_primitives7 = __toESM(require_primitives(), 1);
  var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);
  var aspect_ratio_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M7.25 12V9.25H10M16.75 12V14.75H14M5.5 17.75H18.5C19.1904 17.75 19.75 17.1904 19.75 16.5V7.5C19.75 6.80964 19.1904 6.25 18.5 6.25H5.5C4.80964 6.25 4.25 6.80964 4.25 7.5V16.5C4.25 17.1904 4.80964 17.75 5.5 17.75Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/audio.mjs
  var import_primitives8 = __toESM(require_primitives(), 1);
  var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
  var audio_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.Path, { d: "M13.25 16.5C13.25 18.0188 12.0188 19.25 10.5 19.25C8.98122 19.25 7.75 18.0188 7.75 16.5C7.75 14.9812 8.98122 13.75 10.5 13.75C12.0188 13.75 13.25 14.9812 13.25 16.5Z", fill: "currentColor", stroke: "none" }),
    /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.Path, { d: "M10.5 19.25C12.0188 19.25 13.25 18.0188 13.25 16.5C13.25 14.9812 12.0188 13.75 10.5 13.75C8.98122 13.75 7.75 14.9812 7.75 16.5C7.75 18.0188 8.98122 19.25 10.5 19.25ZM10.5 19.25C13.4867 19.25 13.75 16.5 13.75 15.1379V7.99998C13.75 4.9108 16.4 5.00254 18 5.00233", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/background.mjs
  var import_primitives9 = __toESM(require_primitives(), 1);
  var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);
  var background_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.Path, { d: "M18 16L8 6M19 13L11 5M18 8L16 6M16 18L6 8M13 19L5 11M8 18L6 16", strokeLinecap: "round", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/backup.mjs
  var import_primitives10 = __toESM(require_primitives(), 1);
  var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);
  var backup_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.Path, { d: "M7.59201 17.7565C8.8135 18.6933 10.3417 19.25 12 19.25C16.0041 19.25 19.25 16.0041 19.25 12C19.25 7.99594 16.0041 4.75 12 4.75C7.99594 4.75 4.75 7.99593 4.75 12L4.75 14M14.75 14.75L12.25 12.25L12.25 8M2 12L4.75 14L7.5 12", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/block-default.mjs
  var import_primitives11 = __toESM(require_primitives(), 1);
  var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
  var block_default_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_primitives11.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.Path, { d: "M3.75 10C3.75 9.30964 4.30964 8.75 5 8.75H19C19.6904 8.75 20.25 9.30964 20.25 10V18C20.25 18.6904 19.6904 19.25 19 19.25H5C4.30964 19.25 3.75 18.6904 3.75 18V10Z", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.Path, { d: "M10.5 6.5V9H6.5V6.5H10.5ZM17.5 6.5V9H13.5V6.5H17.5Z", fill: "currentColor", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/block-table.mjs
  var import_primitives12 = __toESM(require_primitives(), 1);
  var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
  var block_table_default = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.Path, { d: "M4.75 9.5V6C4.75 5.30964 5.30964 4.75 6 4.75L18 4.75C18.6904 4.75 19.25 5.30964 19.25 6V9.5M4.75 9.5H12M4.75 9.5V14.5M19.25 9.5H12M19.25 9.5V14.5M12 9.5V14.5M12 19.25H18C18.6904 19.25 19.25 18.6904 19.25 18V14.5M12 19.25H6C5.30964 19.25 4.75 18.6904 4.75 18V14.5M12 19.25V14.5M12 14.5H19.25M12 14.5H4.75", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/category.mjs
  var import_primitives13 = __toESM(require_primitives(), 1);
  var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
  var category_default = /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_primitives13.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.Path, { d: "M4.75 6C4.75 5.30964 5.30964 4.75 6 4.75H9C9.69036 4.75 10.25 5.30964 10.25 6V9C10.25 9.69036 9.69036 10.25 9 10.25H6C5.30964 10.25 4.75 9.69036 4.75 9V6Z", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.Path, { d: "M4.75 15C4.75 14.3096 5.30964 13.75 6 13.75H9C9.69036 13.75 10.25 14.3096 10.25 15V18C10.25 18.6904 9.69036 19.25 9 19.25H6C5.30964 19.25 4.75 18.6904 4.75 18V15Z", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.Path, { d: "M13.75 6C13.75 5.30964 14.3096 4.75 15 4.75H18C18.6904 4.75 19.25 5.30964 19.25 6V9C19.25 9.69036 18.6904 10.25 18 10.25H15C14.3096 10.25 13.75 9.69036 13.75 9V6Z", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.Path, { d: "M13.75 15C13.75 14.3096 14.3096 13.75 15 13.75H18C18.6904 13.75 19.25 14.3096 19.25 15V18C19.25 18.6904 18.6904 19.25 18 19.25H15C14.3096 19.25 13.75 18.6904 13.75 18V15Z", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/caution.mjs
  var import_primitives14 = __toESM(require_primitives(), 1);
  var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
  var caution_default = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.Path, { d: "M12 8L12 13M12 14.5L12 16M4.75 12C4.75 7.99593 7.99594 4.75 12 4.75C16.0041 4.75 19.25 7.99594 19.25 12C19.25 16.0041 16.0041 19.25 12 19.25C7.99594 19.25 4.75 16.0041 4.75 12Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/check.mjs
  var import_primitives15 = __toESM(require_primitives(), 1);
  var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
  var check_default = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.Path, { d: "M7 12L10 15L17 8", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/chevron-down.mjs
  var import_primitives16 = __toESM(require_primitives(), 1);
  var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);
  var chevron_down_default = /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.Path, { d: "M7 11L12 15L17 11", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/chevron-left-small.mjs
  var import_primitives17 = __toESM(require_primitives(), 1);
  var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1);
  var chevron_left_small_default = /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.Path, { d: "M13.5 8.5L10.5 12L13.5 15.5", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/chevron-left.mjs
  var import_primitives18 = __toESM(require_primitives(), 1);
  var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1);
  var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.Path, { d: "M14 6.5L9 12L14 17.5", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/chevron-right-small.mjs
  var import_primitives19 = __toESM(require_primitives(), 1);
  var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);
  var chevron_right_small_default = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.Path, { d: "M10.5 8.5L13.5 12L10.5 15.5", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/chevron-right.mjs
  var import_primitives20 = __toESM(require_primitives(), 1);
  var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1);
  var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives20.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives20.Path, { d: "M10 6.5L15 12L10 17.5", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/chevron-up.mjs
  var import_primitives21 = __toESM(require_primitives(), 1);
  var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1);
  var chevron_up_default = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.Path, { d: "M7 13L12 9L17 13", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/close-small.mjs
  var import_primitives22 = __toESM(require_primitives(), 1);
  var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);
  var close_small_default = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives22.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives22.Path, { d: "M7.75 16.25L16.25 7.75M16.25 16.25L7.75 7.75", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/close.mjs
  var import_primitives23 = __toESM(require_primitives(), 1);
  var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);
  var close_default = /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives23.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives23.Path, { d: "M5 19L19 5M19 19L5 5", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/cloud-upload.mjs
  var import_primitives24 = __toESM(require_primitives(), 1);
  var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);
  var cloud_upload_default = /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives24.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives24.Path, { d: "M14.5 16.25H16.5C18.0188 16.25 19.25 15.0188 19.25 13.5C19.25 11.9812 18.0188 10.75 16.5 10.75C16.4897 10.75 16.4793 10.7501 16.469 10.7502C16.4895 10.5863 16.5 10.4194 16.5 10.25C16.5 8.04086 14.7091 6.25 12.5 6.25C10.4456 6.25 8.75298 7.79872 8.5259 9.79233C8.35472 9.76448 8.17905 9.75 8 9.75C6.20507 9.75 4.75 11.2051 4.75 13C4.75 14.7949 6.20507 16.25 8 16.25H9.5M12 18L12 11.5M14.5 14L12 11.5L9.5 14", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/cloud.mjs
  var import_primitives25 = __toESM(require_primitives(), 1);
  var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);
  var cloud_default = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives25.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives25.Path, { d: "M16.5 10.25C16.5 8.04086 14.7091 6.25 12.5 6.25C10.4456 6.25 8.75298 7.79872 8.5259 9.79233C8.35472 9.76448 8.17905 9.75 8 9.75C6.20507 9.75 4.75 11.2051 4.75 13C4.75 14.7949 6.20507 16.25 8 16.25H16.5C18.0188 16.25 19.25 15.0188 19.25 13.5C19.25 11.9812 18.0188 10.75 16.5 10.75L16.469 10.7502C16.4895 10.5863 16.5 10.4194 16.5 10.25Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/code.mjs
  var import_primitives26 = __toESM(require_primitives(), 1);
  var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
  var code_default = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives26.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives26.Path, { d: "M7.99997 7L3.70708 11.2929C3.31655 11.6834 3.31655 12.3166 3.70708 12.7071L7.99997 17M16 17L20.2929 12.7071C20.6834 12.3166 20.6834 11.6834 20.2929 11.2929L16 7", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/cog.mjs
  var import_primitives27 = __toESM(require_primitives(), 1);
  var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
  var cog_default = /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_primitives27.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.Path, { d: "M5.38646 8.95505C5.36302 8.99564 5.37092 9.04706 5.40547 9.07874L6.96476 10.509C7.08306 10.1089 7.24777 9.72864 7.45264 9.37456C7.66022 9.01579 7.90904 8.68387 8.19262 8.38527L6.17287 7.74956C6.12816 7.73549 6.07968 7.75436 6.05624 7.79495L5.38646 8.95505Z", fill: "currentColor", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.Path, { d: "M12.6698 19.25C12.7167 19.25 12.7573 19.2174 12.7674 19.1717L13.2265 17.106C12.833 17.2001 12.4223 17.25 12 17.25C11.5777 17.25 11.167 17.2001 10.7736 17.106L11.2326 19.1717C11.2428 19.2174 11.2834 19.25 11.3303 19.25L12.6698 19.25Z", fill: "currentColor", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.Path, { d: "M11.3303 4.75C11.2834 4.75 11.2428 4.78255 11.2326 4.82831L10.7736 6.89403C11.167 6.79986 11.5777 6.75 12 6.75C12.4223 6.75 12.833 6.79987 13.2265 6.89403L12.7674 4.82831C12.7573 4.78255 12.7167 4.75 12.6698 4.75L11.3303 4.75Z", fill: "currentColor", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.Path, { d: "M17.9438 7.79495C17.9204 7.75436 17.8719 7.73549 17.8272 7.74956L15.8074 8.38528C16.091 8.68388 16.3398 9.0158 16.5474 9.37457C16.7523 9.72865 16.917 10.1089 17.0353 10.509L18.5946 9.07874C18.6291 9.04706 18.637 8.99564 18.6136 8.95505L17.9438 7.79495Z", fill: "currentColor", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.Path, { d: "M6.05625 16.205C6.07968 16.2456 6.12816 16.2645 6.17287 16.2504L8.19262 15.6147C7.90904 15.3161 7.66022 14.9842 7.45264 14.6254C7.24777 14.2714 7.08307 13.8911 6.96476 13.491L5.40547 14.9213C5.37093 14.9529 5.36303 15.0044 5.38646 15.045L6.05625 16.205Z", fill: "currentColor", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.Path, { d: "M18.6136 15.0449C18.637 15.0044 18.6291 14.9529 18.5946 14.9213L17.0353 13.491C16.917 13.8911 16.7523 14.2713 16.5474 14.6254C16.3398 14.9842 16.091 15.3161 15.8074 15.6147L17.8272 16.2504C17.8719 16.2645 17.9204 16.2456 17.9438 16.205L18.6136 15.0449Z", fill: "currentColor", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.Path, { d: "M12 6.75C14.8995 6.75 17.25 9.10051 17.25 12C17.25 14.8995 14.8995 17.25 12 17.25C9.10051 17.25 6.75 14.8995 6.75 12C6.75 9.10051 9.10051 6.75 12 6.75Z", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.Path, { d: "M12 8C14.2091 8 16 9.79086 16 12C16 14.2091 14.2091 16 12 16C9.79086 16 8 14.2091 8 12C8 9.79086 9.79086 8 12 8Z", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/color.mjs
  var import_primitives28 = __toESM(require_primitives(), 1);
  var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
  var color_default = /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_primitives28.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_primitives28.Path, { d: "M17.25 14C17.25 16.8995 14.8995 19.25 12 19.25C9.10051 19.25 6.75 16.8995 6.75 14C6.75 11.1005 10 7.37 12 5.12C14 7.37 17.25 11.1005 17.25 14Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/comment-author-avatar.mjs
  var import_primitives29 = __toESM(require_primitives(), 1);
  var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
  var comment_author_avatar_default = /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_primitives29.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_primitives29.Path, { d: "M8 18.0476V16C8 14.8954 8.89543 14 10 14H14C15.1046 14 16 14.8954 16 16V18.0476", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_primitives29.Path, { d: "M12 4.75C7.99594 4.75 4.75 7.99593 4.75 12C4.75 16.0041 7.99593 19.25 12 19.25C16.0041 19.25 19.25 16.0041 19.25 12C19.25 7.99594 16.0041 4.75 12 4.75Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_primitives29.Path, { d: "M13.75 10C13.75 10.9665 12.9665 11.75 12 11.75C11.0335 11.75 10.25 10.9665 10.25 10C10.25 9.0335 11.0335 8.25 12 8.25C12.9665 8.25 13.75 9.0335 13.75 10Z", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/comment.mjs
  var import_primitives30 = __toESM(require_primitives(), 1);
  var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
  var comment_default = /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_primitives30.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_primitives30.Path, { d: "M18 5.5H6C5.30964 5.5 4.75 6.05964 4.75 6.75V16V18.4096C4.75 18.8725 5.32471 19.0869 5.62784 18.7371L8 16H18C18.6904 16 19.25 15.4404 19.25 14.75V6.75C19.25 6.05964 18.6904 5.5 18 5.5Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/copy-small.mjs
  var import_primitives31 = __toESM(require_primitives(), 1);
  var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1);
  var copy_small_default = /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_primitives31.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_primitives31.Rect, { x: "4.75", y: "4.75", width: "11.5", height: "11.5", rx: "0.875", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_primitives31.Path, { d: "M19.25 8.281V17.281C19.25 18.3692 18.3546 19.25 17.251 19.25H6.25", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/desktop.mjs
  var import_primitives32 = __toESM(require_primitives(), 1);
  var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);
  var desktop_default = /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_primitives32.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_primitives32.Path, { d: "M4.75 16.75V17H3.25C3.11193 17 3 17.1119 3 17.25H21C21 17.1119 20.8881 17 20.75 17H19.25V16.75M4.75 16.75V8.5C4.75 7.80964 5.30964 7.25 6 7.25H18C18.6904 7.25 19.25 7.80964 19.25 8.5V16.75M4.75 16.75H19.25", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/download.mjs
  var import_primitives33 = __toESM(require_primitives(), 1);
  var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1);
  var download_default = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_primitives33.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_primitives33.Path, { d: "M12 3V16M6 10.5L12 16L17.5 10.5M4.75 15V19.25H19.25V15", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/drafts.mjs
  var import_primitives34 = __toESM(require_primitives(), 1);
  var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);
  var drafts_default = /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_primitives34.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_primitives34.Path, { d: "M12 16C13.0609 16 14.0783 15.5786 14.8284 14.8284C15.5786 14.0783 16 13.0609 16 12H8C8 13.0609 8.42143 14.0783 9.17157 14.8284C9.92172 15.5786 10.9391 16 12 16Z", fill: "currentColor", fillRule: "evenodd", clipRule: "evenodd", stroke: "none" }),
    /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_primitives34.Path, { d: "M12 19.25C16.0041 19.25 19.25 16.0041 19.25 12C19.25 7.99594 16.0041 4.75 12 4.75C7.99594 4.75 4.75 7.99594 4.75 12C4.75 16.0041 7.99594 19.25 12 19.25Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/drawer-left.mjs
  var import_primitives35 = __toESM(require_primitives(), 1);
  var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1);
  var drawer_left_default = /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_primitives35.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_primitives35.Path, { d: "M9.75 4.75H6C5.30964 4.75 4.75 5.30964 4.75 6V18C4.75 18.6904 5.30964 19.25 6 19.25H9.75M9.75 4.75H18C18.6904 4.75 19.25 5.30964 19.25 6V18C19.25 18.6904 18.6904 19.25 18 19.25H9.75M9.75 4.75V19.25", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/drawer-right.mjs
  var import_primitives36 = __toESM(require_primitives(), 1);
  var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1);
  var drawer_right_default = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_primitives36.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_primitives36.Path, { d: "M14.25 19.25L18 19.25C18.6904 19.25 19.25 18.6904 19.25 18L19.25 6C19.25 5.30964 18.6904 4.75 18 4.75L14.25 4.75M14.25 19.25L6 19.25C5.30964 19.25 4.75 18.6904 4.75 18L4.75 6C4.75 5.30964 5.30965 4.75 6 4.75L14.25 4.75M14.25 19.25L14.25 4.75", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/envelope.mjs
  var import_primitives37 = __toESM(require_primitives(), 1);
  var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1);
  var envelope_default = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_primitives37.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_primitives37.Path, { d: "M20.25 8.5V7C20.25 6.30964 19.6904 5.75 19 5.75H5C4.30964 5.75 3.75 6.30964 3.75 7V8.5M20.25 8.5V17C20.25 17.6904 19.6904 18.25 19 18.25H5C4.30964 18.25 3.75 17.6904 3.75 17V8.5M20.25 8.5L12 14.5L3.75 8.5", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/error.mjs
  var import_primitives38 = __toESM(require_primitives(), 1);
  var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1);
  var error_default = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_primitives38.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_primitives38.Path, { d: "M12 9L12 14M12 15.5V17M11.1284 5.04947L3.83827 18.0097C3.46331 18.6763 3.94502 19.5 4.70985 19.5H19.2902C20.055 19.5 20.5367 18.6763 20.1617 18.0097L12.8716 5.04947C12.4893 4.36982 11.5107 4.36982 11.1284 5.04947Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/external.mjs
  var import_primitives39 = __toESM(require_primitives(), 1);
  var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1);
  var external_default = /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_primitives39.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_primitives39.Path, { d: "M9.5 6.25H6.5C5.80964 6.25 5.25 6.80964 5.25 7.5V17.5C5.25 18.1904 5.80964 18.75 6.5 18.75H16.5C17.1904 18.75 17.75 18.1904 17.75 17.5V14.5M11.5 12.5L18.75 5.25M12.5 5.25H18.75V11.5", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/file.mjs
  var import_primitives40 = __toESM(require_primitives(), 1);
  var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1);
  var file_default = /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_primitives40.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_primitives40.Path, { d: "M3.75 6V17.5C3.75 18.1904 4.30964 18.75 5 18.75H19C19.6904 18.75 20.25 18.1904 20.25 17.5V8.5C20.25 7.80964 19.6904 7.25 19 7.25H13.3463C12.8352 7.25 12.3755 6.93881 12.1857 6.46424L11.8143 5.53576C11.6245 5.06119 11.1648 4.75 10.6537 4.75H5C4.30964 4.75 3.75 5.30964 3.75 6Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/flip-horizontal.mjs
  var import_primitives41 = __toESM(require_primitives(), 1);
  var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1);
  var flip_horizontal_default = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_primitives41.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_primitives41.Path, { d: "M9 19.25H6C5.30964 19.25 4.75 18.6904 4.75 18V6C4.75 5.30964 5.30964 4.75 6 4.75H9M15 4.75L16.5 4.75M15 19.25H16.5M12 22V2M19.25 16.5V14.5M19.25 13V11M19.25 9.5V7.5M18 4.75C18.6904 4.75 19.25 5.30964 19.25 6M18 19.25C18.6904 19.25 19.25 18.6904 19.25 18", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/flip-vertical.mjs
  var import_primitives42 = __toESM(require_primitives(), 1);
  var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1);
  var flip_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_primitives42.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_primitives42.Path, { d: "M4.75 9L4.75 6C4.75 5.30964 5.30964 4.75 6 4.75L18 4.75C18.6904 4.75 19.25 5.30964 19.25 6L19.25 9M19.25 15L19.25 16.5M4.75 15L4.75 16.5M2 12L22 12M7.5 19.25L9.5 19.25M11 19.25L13 19.25M14.5 19.25L16.5 19.25M19.25 18C19.25 18.6904 18.6904 19.25 18 19.25M4.75 18C4.75 18.6904 5.30964 19.25 6 19.25", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/footer.mjs
  var import_primitives43 = __toESM(require_primitives(), 1);
  var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1);
  var footer_default = /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_primitives43.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_primitives43.Path, { d: "M9.75 4.75H18C18.6904 4.75 19.25 5.30964 19.25 6V14.25M9.75 4.75H6C5.30964 4.75 4.75 5.30964 4.75 6V14.25M9.75 4.75V14.25M19.25 14.25V18C19.25 18.6904 18.6904 19.25 18 19.25H6C5.30964 19.25 4.75 18.6904 4.75 18V14.25M19.25 14.25H9.75M9.75 14.25H4.75", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_primitives43.Path, { d: "M19.25 15.5V18C19.25 18.6904 18.6904 19.25 18 19.25H6C5.30964 19.25 4.75 18.6904 4.75 18V15.5C4.75 14.8096 5.30964 14.25 6 14.25H18C18.6904 14.25 19.25 14.8096 19.25 15.5Z", fill: "currentColor", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/format-list-bullets-rtl.mjs
  var import_primitives44 = __toESM(require_primitives(), 1);
  var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1);
  var format_list_bullets_rtl_default = /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_primitives44.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_primitives44.Path, { d: "M13 8H4M13 16H4", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_primitives44.Path, { d: "M18 9.25C17.3096 9.25 16.75 8.69036 16.75 8C16.75 7.30964 17.3096 6.75 18 6.75C18.6904 6.75 19.25 7.30964 19.25 8C19.25 8.69036 18.6904 9.25 18 9.25Z", fill: "currentColor", stroke: "none" }),
    /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_primitives44.Path, { d: "M18 17.25C17.3096 17.25 16.75 16.6904 16.75 16C16.75 15.3096 17.3096 14.75 18 14.75C18.6904 14.75 19.25 15.3096 19.25 16C19.25 16.6904 18.6904 17.25 18 17.25Z", fill: "currentColor", stroke: "none" }),
    /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_primitives44.Path, { d: "M18 9.25C17.3096 9.25 16.75 8.69036 16.75 8C16.75 7.30964 17.3096 6.75 18 6.75C18.6904 6.75 19.25 7.30964 19.25 8C19.25 8.69036 18.6904 9.25 18 9.25Z", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_primitives44.Path, { d: "M18 17.25C17.3096 17.25 16.75 16.6904 16.75 16C16.75 15.3096 17.3096 14.75 18 14.75C18.6904 14.75 19.25 15.3096 19.25 16C19.25 16.6904 18.6904 17.25 18 17.25Z", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/format-list-bullets.mjs
  var import_primitives45 = __toESM(require_primitives(), 1);
  var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1);
  var format_list_bullets_default = /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_primitives45.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_primitives45.Path, { d: "M11 8H20M11 16H20", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_primitives45.Path, { d: "M6 9.25C6.69036 9.25 7.25 8.69036 7.25 8C7.25 7.30964 6.69036 6.75 6 6.75C5.30964 6.75 4.75 7.30964 4.75 8C4.75 8.69036 5.30964 9.25 6 9.25Z", fill: "currentColor", stroke: "none" }),
    /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_primitives45.Path, { d: "M6 17.25C6.69036 17.25 7.25 16.6904 7.25 16C7.25 15.3096 6.69036 14.75 6 14.75C5.30964 14.75 4.75 15.3096 4.75 16C4.75 16.6904 5.30964 17.25 6 17.25Z", fill: "currentColor", stroke: "none" }),
    /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_primitives45.Path, { d: "M6 9.25C6.69036 9.25 7.25 8.69036 7.25 8C7.25 7.30964 6.69036 6.75 6 6.75C5.30964 6.75 4.75 7.30964 4.75 8C4.75 8.69036 5.30964 9.25 6 9.25Z", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_primitives45.Path, { d: "M6 17.25C6.69036 17.25 7.25 16.6904 7.25 16C7.25 15.3096 6.69036 14.75 6 14.75C5.30964 14.75 4.75 15.3096 4.75 16C4.75 16.6904 5.30964 17.25 6 17.25Z", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/funnel.mjs
  var import_primitives46 = __toESM(require_primitives(), 1);
  var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1);
  var funnel_default = /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_primitives46.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_primitives46.Path, { d: "M10 17.5H14M8 12H16M6 6.5H18", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/globe.mjs
  var import_primitives47 = __toESM(require_primitives(), 1);
  var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1);
  var globe_default = /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_primitives47.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_primitives47.Path, { d: "M12 4.75C8.87453 4.75 6.21099 6.72773 5.19257 9.5M18.8074 14.5C19.0937 13.7207 19.25 12.8786 19.25 12C19.25 11.1214 19.0937 10.2793 18.8074 9.5C17.789 6.72773 15.1255 4.75 12 4.75M12 4.75C11 5.5 9 8.63218 9 12C9 15.3678 11 18.5 12 19.25M12 4.75C13 5.5 15 8.63218 15 12C15 15.3678 13 18.5 12 19.25M5.19257 9.5C4.90628 10.2793 4.75 11.1214 4.75 12C4.75 12.8786 4.90629 13.7207 5.19257 14.5C6.21099 17.2723 8.87453 19.25 12 19.25M12 19.25C15.1255 19.25 17.789 17.2723 18.8074 14.5M5.19257 9.5L18.8074 9.5M5.19257 14.5L18.8074 14.5", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/header.mjs
  var import_primitives48 = __toESM(require_primitives(), 1);
  var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1);
  var header_default = /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_primitives48.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_primitives48.Path, { d: "M9.75 19.25H18C18.6904 19.25 19.25 18.6904 19.25 18V9.75M9.75 19.25H6C5.30964 19.25 4.75 18.6904 4.75 18V9.75M9.75 19.25V9.75M19.25 9.75V6C19.25 5.30964 18.6904 4.75 18 4.75H6C5.30964 4.75 4.75 5.30964 4.75 6V9.75M19.25 9.75H9.75M9.75 9.75H4.75", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_primitives48.Path, { d: "M19.25 8.5V6C19.25 5.30964 18.6904 4.75 18 4.75H6C5.30964 4.75 4.75 5.30964 4.75 6V8.5C4.75 9.19036 5.30964 9.75 6 9.75H18C18.6904 9.75 19.25 9.19036 19.25 8.5Z", fill: "currentColor", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/info.mjs
  var import_primitives49 = __toESM(require_primitives(), 1);
  var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1);
  var info_default = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_primitives49.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_primitives49.Path, { d: "M12 16V11M12 9.5V8M19.25 12C19.25 16.0041 16.0041 19.25 12 19.25C7.99594 19.25 4.75 16.0041 4.75 12C4.75 7.99594 7.99594 4.75 12 4.75C16.0041 4.75 19.25 7.99594 19.25 12Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/keyboard.mjs
  var import_primitives50 = __toESM(require_primitives(), 1);
  var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1);
  var keyboard_default = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_primitives50.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_primitives50.Path, { d: "M6.5 9H8.5M8 15H16M6.5 12H8.5M9.5 9H11.5M9.5 12H11.5M12.5 9H14.5M12.5 12H14.5M15.5 9H17.5M15.5 12H17.5M5 18.25H19C19.6904 18.25 20.25 17.6904 20.25 17V7C20.25 6.30964 19.6904 5.75 19 5.75H5C4.30964 5.75 3.75 6.30964 3.75 7V17C3.75 17.6904 4.30964 18.25 5 18.25Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/layout.mjs
  var import_primitives51 = __toESM(require_primitives(), 1);
  var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1);
  var layout_default = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_primitives51.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_primitives51.Path, { d: "M9.75 19.25H18C18.6904 19.25 19.25 18.6904 19.25 18V9.75M9.75 19.25H6C5.30964 19.25 4.75 18.6904 4.75 18V9.75M9.75 19.25V9.75M19.25 9.75V6C19.25 5.30964 18.6904 4.75 18 4.75H6C5.30964 4.75 4.75 5.30964 4.75 6V9.75M19.25 9.75H9.75M9.75 9.75H4.75", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/line-solid.mjs
  var import_primitives52 = __toESM(require_primitives(), 1);
  var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1);
  var line_solid_default = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_primitives52.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_primitives52.Path, { d: "M5 12H19", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/link.mjs
  var import_primitives53 = __toESM(require_primitives(), 1);
  var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1);
  var link_default = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_primitives53.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_primitives53.Path, { d: "M9.5 12L14.5 12M10 7.75H8.25C5.90279 7.75 4 9.65279 4 12C4 14.3472 5.90279 16.25 8.25 16.25H10M14 16.25H15.75C18.0972 16.25 20 14.3472 20 12C20 9.65279 18.0972 7.75 15.75 7.75L14 7.75", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/list-view.mjs
  var import_primitives54 = __toESM(require_primitives(), 1);
  var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1);
  var list_view_default = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_primitives54.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_primitives54.Path, { d: "M10 17.5H21M6.5 12H17.5M3 6.5H14", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/lock-small.mjs
  var import_primitives55 = __toESM(require_primitives(), 1);
  var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1);
  var lock_small_default = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_primitives55.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_primitives55.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M15 11h-.2V9c0-1.5-1.2-2.8-2.8-2.8S9.2 7.5 9.2 9v2H9c-.6 0-1 .4-1 1v4c0 .6.4 1 1 1h6c.6 0 1-.4 1-1v-4c0-.6-.4-1-1-1zm-1.8 0h-2.5V9c0-.7.6-1.2 1.2-1.2s1.2.6 1.2 1.2v2z" }) });

  // packages/icons/build-module/library/mobile.mjs
  var import_primitives56 = __toESM(require_primitives(), 1);
  var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1);
  var mobile_default = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_primitives56.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_primitives56.Path, { d: "M11 16.5H13M16.25 18V6C16.25 5.30964 15.6904 4.75 15 4.75H9C8.30964 4.75 7.75 5.30964 7.75 6L7.75 18C7.75 18.6904 8.30964 19.25 9 19.25H15C15.6904 19.25 16.25 18.6904 16.25 18Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/more-vertical.mjs
  var import_primitives57 = __toESM(require_primitives(), 1);
  var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1);
  var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_primitives57.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_primitives57.Path, { d: "M11.75 18.25L12.25 18.25L12.25 17.75L11.75 17.75L11.75 18.25Z", fill: "currentColor", stroke: "none" }),
    /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_primitives57.Path, { d: "M11.75 12.25L12.25 12.25L12.25 11.75L11.75 11.75L11.75 12.25Z", fill: "currentColor", stroke: "none" }),
    /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_primitives57.Path, { d: "M11.75 6.25L12.25 6.25L12.25 5.75L11.75 5.75L11.75 6.25Z", fill: "currentColor", stroke: "none" }),
    /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_primitives57.Path, { d: "M11.75 18.25L12.25 18.25L12.25 17.75L11.75 17.75L11.75 18.25Z", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_primitives57.Path, { d: "M11.75 12.25L12.25 12.25L12.25 11.75L11.75 11.75L11.75 12.25Z", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_primitives57.Path, { d: "M11.75 6.25L12.25 6.25L12.25 5.75L11.75 5.75L11.75 6.25Z", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/navigation-overlay.mjs
  var import_primitives58 = __toESM(require_primitives(), 1);
  var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1);
  var navigation_overlay_default = /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_primitives58.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_primitives58.Path, { d: "M4.75 9.25V16C4.75 16.6904 5.30964 17.25 6 17.25H8M4.75 9.25V6C4.75 5.30964 5.30964 4.75 6 4.75H16C16.6904 4.75 17.25 5.30964 17.25 6V8M4.75 9.25H8", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_primitives58.Path, { d: "M10.75 11.25C10.75 10.9739 10.9739 10.75 11.25 10.75H18.75C19.0261 10.75 19.25 10.9739 19.25 11.25V18.75C19.25 19.0261 19.0261 19.25 18.75 19.25H11.25C10.9739 19.25 10.75 19.0261 10.75 18.75V11.25Z", fill: "currentColor", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/navigation.mjs
  var import_primitives59 = __toESM(require_primitives(), 1);
  var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1);
  var navigation_default = /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_primitives59.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_primitives59.Path, { d: "M9 16L13.5 12.8421L15 8L10.5 11.1579L9 16Z", fill: "currentColor", stroke: "none" }),
    /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_primitives59.Path, { d: "M4.75 12C4.75 7.99593 7.99594 4.75 12 4.75C16.0041 4.75 19.25 7.99594 19.25 12C19.25 16.0041 16.0041 19.25 12 19.25C7.99594 19.25 4.75 16.0041 4.75 12Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/next.mjs
  var import_primitives60 = __toESM(require_primitives(), 1);
  var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1);
  var next_default = /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_primitives60.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_primitives60.Path, { d: "M7 17.5L12 12L7 6.5M13 17.5L18 12L13 6.5", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/not-allowed.mjs
  var import_primitives61 = __toESM(require_primitives(), 1);
  var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1);
  var not_allowed_default = /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_primitives61.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_primitives61.Path, { d: "M6.87347 6.87348L17.1265 17.1265M4.75 12C4.75 7.99593 7.99594 4.75 12 4.75C16.0041 4.75 19.25 7.99594 19.25 12C19.25 16.0041 16.0041 19.25 12 19.25C7.99593 19.25 4.75 16.0041 4.75 12Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/page.mjs
  var import_primitives62 = __toESM(require_primitives(), 1);
  var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1);
  var page_default = /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_primitives62.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_primitives62.Path, { d: "M8.5 8.25H15.5M8.5 11.75H15.5M8.5 15.25H15.5M18.25 18V6C18.25 5.30964 17.6904 4.75 17 4.75H7C6.30964 4.75 5.75 5.30964 5.75 6L5.75 18C5.75 18.6904 6.30964 19.25 7 19.25H17C17.6904 19.25 18.25 18.6904 18.25 18Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/pencil.mjs
  var import_primitives63 = __toESM(require_primitives(), 1);
  var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1);
  var pencil_default = /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_primitives63.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_primitives63.Path, { d: "M5 19.25H12", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_primitives63.Path, { d: "M10 15L7.5 15.5L8 13L16 5L18 7L10 15Z", fill: "currentColor", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/pending.mjs
  var import_primitives64 = __toESM(require_primitives(), 1);
  var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1);
  var pending_default = /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_primitives64.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_primitives64.Path, { d: "M12 16C10.9391 16 9.92172 15.5786 9.17157 14.8284C8.42143 14.0783 8 13.0609 8 12H12V8C13.0609 8 14.0783 8.42143 14.8284 9.17157C15.5786 9.92172 16 10.9391 16 12C16 13.0609 15.5786 14.0783 14.8284 14.8284C14.0783 15.5786 13.0609 16 12 16Z", fill: "currentColor", fillRule: "evenodd", clipRule: "evenodd", stroke: "none" }),
    /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_primitives64.Path, { d: "M12 19.25C16.0041 19.25 19.25 16.0041 19.25 12C19.25 7.99594 16.0041 4.75 12 4.75C7.99594 4.75 4.75 7.99594 4.75 12C4.75 16.0041 7.99594 19.25 12 19.25Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/plugins.mjs
  var import_primitives65 = __toESM(require_primitives(), 1);
  var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1);
  var plugins_default = /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_primitives65.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_primitives65.Path, { d: "M15.3995 11.5711L12.2175 8.38909L10.273 6.44454L7.67678 9.04074C7.3017 9.41581 7.09099 9.92452 7.09099 10.455L7.09099 13.455C7.09099 13.7202 6.98563 13.9745 6.7981 14.1621L5.14645 15.8137C4.95118 16.009 4.95118 16.3256 5.14645 16.5208L7.26777 18.6421C7.46303 18.8374 7.77961 18.8374 7.97487 18.6421L9.62652 16.9905C9.81406 16.8029 10.0684 16.6976 10.3336 16.6976H13.3336C13.8641 16.6976 14.3728 16.4869 14.7478 16.1118L17.344 13.5156L15.3995 11.5711ZM12.2175 8.38909L16.1066 4.5M15.3995 11.5711L19.2886 7.68198", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/plus.mjs
  var import_primitives66 = __toESM(require_primitives(), 1);
  var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1);
  var plus_default = /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_primitives66.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_primitives66.Path, { d: "M12 18V6M18 12H6", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/post.mjs
  var import_primitives67 = __toESM(require_primitives(), 1);
  var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1);
  var post_default = /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_primitives67.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_primitives67.Path, { d: "M4.76776 11.5178L7.76777 8.51776M4 15H20M4 19H13M6 6.74999L9.53554 10.2855C10.1688 9.65226 10.3913 8.76379 10.2031 7.95118L12.5178 6.26776L10.0178 3.76776L8.33435 6.08246C7.52174 5.89422 6.63327 6.11673 6 6.74999Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/previous.mjs
  var import_primitives68 = __toESM(require_primitives(), 1);
  var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1);
  var previous_default = /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_primitives68.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_primitives68.Path, { d: "M17 6.5L12 12L17 17.5M11 6.5L6 12L11 17.5", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/published.mjs
  var import_primitives69 = __toESM(require_primitives(), 1);
  var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1);
  var published_default = /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_primitives69.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_primitives69.Path, { d: "M12 19.25C16.0041 19.25 19.25 16.0041 19.25 12C19.25 7.99594 16.0041 4.75 12 4.75C7.99594 4.75 4.75 7.99594 4.75 12C4.75 16.0041 7.99594 19.25 12 19.25Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_primitives69.Path, { d: "M9 12L11 14L15 10", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/redo.mjs
  var import_primitives70 = __toESM(require_primitives(), 1);
  var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1);
  var redo_default = /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_primitives70.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_primitives70.Path, { d: "M15 15L18.5 11L15 7M18.5 11H8C5 11 4.75 13.8 4.75 17", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/reset.mjs
  var import_primitives71 = __toESM(require_primitives(), 1);
  var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1);
  var reset_default = /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_primitives71.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_primitives71.Path, { d: "M7 12H17", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/rotate-left.mjs
  var import_primitives72 = __toESM(require_primitives(), 1);
  var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1);
  var rotate_left_default = /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_primitives72.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_primitives72.Path, { d: "M12 19.25C16.0041 19.25 19.25 16.0041 19.25 12C19.25 7.99594 16.0041 4.75 12 4.75L10 4.75M12 2L10 4.75L12 7.5", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_primitives72.Path, { d: "M14.7745 18.6981C11.0752 20.2304 6.83418 18.4737 5.30189 14.7745C4.27391 12.2927 4.72622 9.56712 6.25229 7.57918", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/rotate-right.mjs
  var import_primitives73 = __toESM(require_primitives(), 1);
  var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1);
  var rotate_right_default = /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(import_primitives73.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(import_primitives73.Path, { d: "M12 19.25C7.99593 19.25 4.75 16.0041 4.75 12C4.75 7.99594 7.99593 4.75 12 4.75L14 4.75M12 2L14 4.75L12 7.5", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(import_primitives73.Path, { d: "M9.22553 18.6981C12.9248 20.2304 17.1658 18.4737 18.6981 14.7745C19.7261 12.2927 19.2738 9.56712 17.7477 7.57918", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/scheduled.mjs
  var import_primitives74 = __toESM(require_primitives(), 1);
  var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1);
  var scheduled_default = /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(import_primitives74.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(import_primitives74.Path, { d: "M12 19.25C16.0041 19.25 19.25 16.0041 19.25 12C19.25 7.99594 16.0041 4.75 12 4.75C7.99594 4.75 4.75 7.99594 4.75 12C4.75 16.0041 7.99594 19.25 12 19.25Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(import_primitives74.Path, { d: "M9.5 12.25H12.25V8", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/search.mjs
  var import_primitives75 = __toESM(require_primitives(), 1);
  var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1);
  var search_default = /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_primitives75.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_primitives75.Path, { d: "M5 19L9.28769 14.7123M18.25 11C18.25 13.8995 15.8995 16.25 13 16.25C10.1005 16.25 7.75 13.8995 7.75 11C7.75 8.10051 10.1005 5.75 13 5.75C15.8995 5.75 18.25 8.10051 18.25 11Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/seen.mjs
  var import_primitives76 = __toESM(require_primitives(), 1);
  var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1);
  var seen_default = /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(import_primitives76.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_primitives76.Path, { d: "M20.0645 13C18.5918 10.0366 15.5337 8 12 8C8.46631 8 5.40825 10.0366 3.93555 13", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_primitives76.Circle, { cx: "12", cy: "12.5", r: "3", fill: "currentColor", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/settings.mjs
  var import_primitives77 = __toESM(require_primitives(), 1);
  var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1);
  var settings_default = /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_primitives77.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_primitives77.Path, { d: "M5 8H19M19 16H5M10.75 8C10.75 8.82843 10.0784 9.5 9.25 9.5C8.42157 9.5 7.75 8.82843 7.75 8C7.75 7.17157 8.42157 6.5 9.25 6.5C10.0784 6.5 10.75 7.17157 10.75 8ZM16.25 16C16.25 16.8284 15.5784 17.5 14.75 17.5C13.9216 17.5 13.25 16.8284 13.25 16C13.25 15.1716 13.9216 14.5 14.75 14.5C15.5784 14.5 16.25 15.1716 16.25 16Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/shadow.mjs
  var import_primitives78 = __toESM(require_primitives(), 1);
  var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1);
  var shadow_default = /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_primitives78.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_primitives78.Path, { d: "M3 12H6M18 12H21M5.63957 5.63751L7.76089 7.75883M16.2462 16.2441L18.3675 18.3654M12.005 3.005V6.005M12.005 18.005V21.005M18.3675 5.64459L16.2462 7.76591M7.76088 16.2512L5.63956 18.3725M15.25 12C15.25 13.7949 13.7949 15.25 12 15.25C10.2051 15.25 8.75 13.7949 8.75 12C8.75 10.2051 10.2051 8.75 12 8.75C13.7949 8.75 15.25 10.2051 15.25 12Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/sidebar.mjs
  var import_primitives79 = __toESM(require_primitives(), 1);
  var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1);
  var sidebar_default = /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(import_primitives79.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_primitives79.Path, { d: "M9.75 19.25H18C18.6904 19.25 19.25 18.6904 19.25 18V9.75M9.75 19.25H6C5.30964 19.25 4.75 18.6904 4.75 18V9.75M9.75 19.25V9.75M19.25 9.75V6C19.25 5.30964 18.6904 4.75 18 4.75H6C5.30964 4.75 4.75 5.30964 4.75 6V9.75M19.25 9.75H9.75M9.75 9.75H4.75", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_primitives79.Path, { d: "M6 19.25H9.75V9.75H4.75V18C4.75 18.6904 5.30964 19.25 6 19.25Z", fill: "currentColor", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/square.mjs
  var import_primitives80 = __toESM(require_primitives(), 1);
  var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1);
  var square_default = /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_primitives80.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_primitives80.Path, { d: "M5.75 12V18.25H12M12 5.75H18.25V12", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/star-empty.mjs
  var import_primitives81 = __toESM(require_primitives(), 1);
  var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1);
  var star_empty_default = /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_primitives81.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_primitives81.Path, { d: "M12 5.71576L13.6106 8.97924C13.7563 9.27438 14.0379 9.47895 14.3636 9.52628L17.965 10.0496L15.359 12.5899C15.1233 12.8196 15.0157 13.1506 15.0714 13.475L15.6866 17.0619L12.4653 15.3684C12.174 15.2152 11.826 15.2152 11.5347 15.3684L8.31341 17.0619L8.92861 13.475C8.98425 13.1506 8.8767 12.8196 8.64102 12.5899L6.03497 10.0496L9.63644 9.52628C9.96215 9.47895 10.2437 9.27438 10.3894 8.97924L12 5.71576Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/star-filled.mjs
  var import_primitives82 = __toESM(require_primitives(), 1);
  var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1);
  var star_filled_default = /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_primitives82.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_primitives82.Path, { d: "M12 5.71576L13.6106 8.97924C13.7563 9.27438 14.0379 9.47895 14.3636 9.52628L17.965 10.0496L15.359 12.5899C15.1233 12.8196 15.0157 13.1506 15.0714 13.475L15.6866 17.0619L12.4653 15.3684C12.174 15.2152 11.826 15.2152 11.5347 15.3684L8.31341 17.0619L8.92861 13.475C8.98425 13.1506 8.8767 12.8196 8.64102 12.5899L6.03497 10.0496L9.63644 9.52628C9.96215 9.47895 10.2437 9.27438 10.3894 8.97924L12 5.71576Z", fill: "currentColor", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/styles.mjs
  var import_primitives83 = __toESM(require_primitives(), 1);
  var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1);
  var styles_default = /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(import_primitives83.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_primitives83.Path, { d: "M12 4.75C7.99594 4.75 4.75 7.99593 4.75 12C4.75 16.0041 7.99594 19.25 12 19.25L12 4.75Z", fill: "currentColor", stroke: "none" }),
    /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_primitives83.Path, { d: "M12 19.25C16.0041 19.25 19.25 16.0041 19.25 12C19.25 7.99594 16.0041 4.75 12 4.75C7.99594 4.75 4.75 7.99594 4.75 12C4.75 16.0041 7.99594 19.25 12 19.25Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/symbol-filled.mjs
  var import_primitives84 = __toESM(require_primitives(), 1);
  var import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1);
  var symbol_filled_default = /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)(import_primitives84.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_primitives84.Path, { d: "M15.2071 6.20711L20.2929 11.2929C20.6834 11.6834 20.6834 12.3166 20.2929 12.7071L15.2071 17.7929C14.8166 18.1834 14.1834 18.1834 13.7929 17.7929L8.70711 12.7071C8.31658 12.3166 8.31658 11.6834 8.70711 11.2929L13.7929 6.20711C14.1834 5.81658 14.8166 5.81658 15.2071 6.20711Z", fill: "currentColor", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_primitives84.Path, { d: "M9.5 5.5L3.70711 11.2929C3.31658 11.6834 3.31658 12.3166 3.70711 12.7071L9.5 18.5", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/symbol.mjs
  var import_primitives85 = __toESM(require_primitives(), 1);
  var import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1);
  var symbol_default = /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(import_primitives85.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_primitives85.Path, { d: "M15.2071 6.20711L20.2929 11.2929C20.6834 11.6834 20.6834 12.3166 20.2929 12.7071L15.2071 17.7929C14.8166 18.1834 14.1834 18.1834 13.7929 17.7929L8.70711 12.7071C8.31658 12.3166 8.31658 11.6834 8.70711 11.2929L13.7929 6.20711C14.1834 5.81658 14.8166 5.81658 15.2071 6.20711Z", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_primitives85.Path, { d: "M9.5 5.5L3.70711 11.2929C3.31658 11.6834 3.31658 12.3166 3.70711 12.7071L9.5 18.5", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/tablet.mjs
  var import_primitives86 = __toESM(require_primitives(), 1);
  var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1);
  var tablet_default = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_primitives86.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_primitives86.Path, { d: "M10 16.5H14M18.25 18V6C18.25 5.30964 17.6904 4.75 17 4.75H7C6.30964 4.75 5.75 5.30964 5.75 6L5.75 18C5.75 18.6904 6.30964 19.25 7 19.25H17C17.6904 19.25 18.25 18.6904 18.25 18Z", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/trash.mjs
  var import_primitives87 = __toESM(require_primitives(), 1);
  var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1);
  var trash_default = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_primitives87.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_primitives87.Path, { d: "M5 7.5H7M19 7.5H17M17 7.5L16.1588 17.1733C16.069 18.2068 15.2038 19 14.1664 19H9.83363C8.79622 19 7.93102 18.2068 7.84115 17.1733L7 7.5M17 7.5H14.9897M7 7.5H9.01027M14.9897 7.5C14.8627 5.96012 13.5727 4.75 12 4.75C10.4273 4.75 9.13731 5.96012 9.01027 7.5M14.9897 7.5H9.01027", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/typography.mjs
  var import_primitives88 = __toESM(require_primitives(), 1);
  var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1);
  var typography_default = /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(import_primitives88.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_primitives88.Path, { d: "M4.75 17.5V17.223L5.76577 14.1757M5.76577 14.1757L8.07432 7.25H8.62838L10.9369 14.1757L11.9527 17.223V17.5M10.9369 14.1757H5.76577", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_primitives88.Path, { d: "M19.25 9.5C19.25 9.5 19.25 13.5533 19.25 14.7886C19.25 16.0239 19.4324 16.75 20.75 16.75M19.25 13.0441C19.25 10.9853 18.0735 10.1618 16.6324 10.1618C15.0405 10.1618 13.75 11.3971 13.75 13.4559C13.75 15.5147 15.0405 16.75 16.6324 16.75C17.8092 16.75 19.25 15.5147 19.25 13.8676", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/undo.mjs
  var import_primitives89 = __toESM(require_primitives(), 1);
  var import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1);
  var undo_default = /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_primitives89.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_primitives89.Path, { d: "M8.25 15L4.75 11L8.25 7M4.75 11H15.25C18.25 11 18.5 13.8 18.5 17", vectorEffect: "non-scaling-stroke" }) });

  // packages/icons/build-module/library/unseen.mjs
  var import_primitives90 = __toESM(require_primitives(), 1);
  var import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1);
  var unseen_default = /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(import_primitives90.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_primitives90.Path, { d: "M8 21L10.6587 15.1842M13.1523 9.72929L13.8553 8.19144L16 3.5M20.0645 13C19.2118 11.2841 17.8276 9.87898 16.1272 9M3.93555 13C5.40825 10.0366 8.46631 8 12 8C12.636 8 13.2566 8.06597 13.8553 8.19144M13.1523 9.72929C12.7975 9.58156 12.4083 9.5 12 9.5C10.3431 9.5 9 10.8431 9 12.5C9 13.6747 9.67519 14.6917 10.6587 15.1842M13.1523 9.72929L10.6587 15.1842M13.1755 15.261C14.2481 14.8037 15 13.7397 15 12.5C15 12.1819 14.9505 11.8753 14.8587 11.5876", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_primitives90.Path, { d: "M12 9.5C10.3431 9.5 9 10.8431 9 12.5C9 13.6747 9.67519 14.6917 10.6587 15.1842L13.1523 9.72929C12.7975 9.58156 12.4083 9.5 12 9.5Z", fill: "currentColor", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/verse.mjs
  var import_primitives91 = __toESM(require_primitives(), 1);
  var import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1);
  var verse_default = /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(import_primitives91.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(import_primitives91.Path, { d: "M8.5 14C9 12 12.5 7.5 17 5.5", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(import_primitives91.Path, { d: "M8 14C7.66667 11.1667 9 5 17 3C17.1667 4.66667 17.2 8.6 16 11C14.8 13.4 10.1667 14 8 14ZM8 14L7 16", strokeLinecap: "round", vectorEffect: "non-scaling-stroke" }),
    /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(import_primitives91.Path, { d: "M5 19.25H12", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/video.mjs
  var import_primitives92 = __toESM(require_primitives(), 1);
  var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1);
  var video_default = /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(import_primitives92.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
    /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_primitives92.Path, { d: "M10 15L15 12L10 9V15Z", fill: "currentColor", stroke: "none" }),
    /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_primitives92.Path, { d: "M4.75 6C4.75 5.30964 5.30964 4.75 6 4.75H18C18.6904 4.75 19.25 5.30964 19.25 6V18C19.25 18.6904 18.6904 19.25 18 19.25H6C5.30964 19.25 4.75 18.6904 4.75 18V6Z", vectorEffect: "non-scaling-stroke" })
  ] });

  // packages/icons/build-module/library/wordpress.mjs
  var import_primitives93 = __toESM(require_primitives(), 1);
  var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1);
  var wordpress_default = /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_primitives93.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_primitives93.Path, { d: "M 22 12 C 22 6.49 17.51 2 12 2 C 6.48 2 2 6.49 2 12 C 2 17.52 6.48 22 12 22 C 17.51 22 22 17.52 22 12 M 9.78 17.37 L 6.37 8.22 C 6.92 8.2 7.54 8.14 7.54 8.14 C 8.04 8.08 7.98 7.01 7.48 7.03 C 7.48 7.03 6.03 7.14 5.11 7.14 C 4.93 7.14 4.74 7.14 4.53 7.13 C 6.12 4.69 8.87 3.11 12 3.11 C 14.33 3.11 16.45 3.98 18.05 5.45 C 17.37 5.34 16.4 5.84 16.4 7.03 C 16.4 7.77 16.85 8.39 17.3 9.13 C 17.65 9.74 17.85 10.49 17.85 11.59 C 17.85 13.08 16.45 16.59 16.45 16.59 L 13.42 8.22 C 13.96 8.2 14.24 8.05 14.24 8.05 C 14.74 8 14.68 6.8 14.18 6.83 C 14.18 6.83 12.74 6.95 11.8 6.95 C 10.93 6.95 9.47 6.83 9.47 6.83 C 8.97 6.8 8.91 8.03 9.41 8.05 L 10.33 8.13 L 11.59 11.54 L 9.78 17.37 M 19.41 12 C 19.65 11.36 20.15 10.13 19.84 7.75 C 20.54 9.04 20.89 10.46 20.89 12 C 20.89 15.29 19.16 18.24 16.49 19.78 C 17.46 17.19 18.43 14.58 19.41 12 M 8.1 20.09 C 5.12 18.65 3.11 15.53 3.11 12 C 3.11 10.7 3.34 9.52 3.83 8.41 C 5.25 12.3 6.67 16.2 8.1 20.09 M 12.13 13.46 L 14.71 20.44 C 13.85 20.73 12.95 20.89 12 20.89 C 11.21 20.89 10.43 20.78 9.71 20.56 C 10.52 18.18 11.33 15.82 12.13 13.46 L 12.13 13.46" }) });

  // packages/editor/build-module/store/private-selectors.mjs
  var import_core_data5 = __toESM(require_core_data(), 1);
  var import_preferences2 = __toESM(require_preferences(), 1);

  // packages/editor/build-module/dataviews/store/private-selectors.mjs
  var EMPTY_ARRAY2 = [];
  function getEntityActions(state2, kind, name2) {
    return state2.actions[kind]?.[name2] ?? EMPTY_ARRAY2;
  }
  function getEntityFields(state2, kind, name2) {
    return state2.fields[kind]?.[name2] ?? EMPTY_ARRAY2;
  }
  function isEntityReady(state2, kind, name2) {
    return state2.isReady[kind]?.[name2];
  }

  // packages/editor/build-module/store/private-selectors.mjs
  var EMPTY_INSERTION_POINT = {
    rootClientId: void 0,
    insertionIndex: void 0,
    filterValue: void 0
  };
  var { getTemplatePartIcon: getTemplatePartIcon2 } = unlock(import_core_data5.privateApis);
  var RENDERING_MODES = ["post-only", "template-locked"];
  var getInserter = (0, import_data5.createRegistrySelector)(
    (select9) => (0, import_data5.createSelector)(
      (state2) => {
        if (typeof state2.blockInserterPanel === "object") {
          return state2.blockInserterPanel;
        }
        if (getRenderingMode(state2) === "template-locked") {
          const {
            getBlocksByName,
            getSelectedBlockClientId: getSelectedBlockClientId2,
            getBlockParents,
            getBlockOrder: getBlockOrder2
          } = select9(import_block_editor3.store);
          const [postContentClientId] = getBlocksByName("core/post-content");
          if (postContentClientId) {
            const selectedBlockClientId = getSelectedBlockClientId2();
            if (selectedBlockClientId && selectedBlockClientId !== postContentClientId && getBlockParents(selectedBlockClientId).includes(
              postContentClientId
            )) {
              return EMPTY_INSERTION_POINT;
            }
            return {
              rootClientId: postContentClientId,
              insertionIndex: getBlockOrder2(postContentClientId).length,
              filterValue: void 0
            };
          }
        }
        return EMPTY_INSERTION_POINT;
      },
      (state2) => {
        const {
          getBlocksByName,
          getSelectedBlockClientId: getSelectedBlockClientId2,
          getBlockParents,
          getBlockOrder: getBlockOrder2
        } = select9(import_block_editor3.store);
        const [postContentClientId] = getBlocksByName("core/post-content");
        const selectedBlockClientId = getSelectedBlockClientId2();
        return [
          state2.blockInserterPanel,
          getRenderingMode(state2),
          postContentClientId,
          selectedBlockClientId,
          selectedBlockClientId ? getBlockParents(selectedBlockClientId) : void 0,
          postContentClientId ? getBlockOrder2(postContentClientId).length : void 0
        ];
      }
    )
  );
  function getListViewToggleRef(state2) {
    return state2.listViewToggleRef;
  }
  function getInserterSidebarToggleRef(state2) {
    return state2.inserterSidebarToggleRef;
  }
  var CARD_ICONS = {
    wp_block: symbol_default,
    wp_navigation: navigation_default,
    page: page_default,
    post: verse_default
  };
  var getPostIcon = (0, import_data5.createRegistrySelector)(
    (select9) => (state2, postType2, options) => {
      {
        if (postType2 === "wp_template_part" || postType2 === "wp_template") {
          const templateAreas = select9(import_core_data5.store).getCurrentTheme()?.default_template_part_areas || [];
          const areaData = templateAreas.find(
            (item) => options.area === item.area
          );
          if (areaData?.icon) {
            return getTemplatePartIcon2(areaData.icon);
          }
          return layout_default;
        }
        if (CARD_ICONS[postType2]) {
          return CARD_ICONS[postType2];
        }
        const postTypeEntity = select9(import_core_data5.store).getPostType(postType2);
        if (typeof postTypeEntity?.icon === "string" && postTypeEntity.icon.startsWith("dashicons-")) {
          return postTypeEntity.icon.slice(10);
        }
        return page_default;
      }
    }
  );
  function getEntityActions2(state2, ...args) {
    return getEntityActions(state2.dataviews, ...args);
  }
  function isEntityReady2(state2, ...args) {
    return isEntityReady(state2.dataviews, ...args);
  }
  function getEntityFields2(state2, ...args) {
    return getEntityFields(state2.dataviews, ...args);
  }
  var getPostBlocksByName = (0, import_data5.createRegistrySelector)(
    (select9) => (0, import_data5.createSelector)(
      (state2, blockNames) => {
        blockNames = Array.isArray(blockNames) ? blockNames : [blockNames];
        const { getBlocksByName, getBlockParents, getBlockName: getBlockName2 } = select9(import_block_editor3.store);
        return getBlocksByName(blockNames).filter(
          (clientId) => getBlockParents(clientId).every((parentClientId) => {
            const parentBlockName = getBlockName2(parentClientId);
            return (
              // Ignore descendents of the query block.
              parentBlockName !== "core/query" && // Enable only the top-most block.
              !blockNames.includes(parentBlockName)
            );
          })
        );
      },
      (state2, blockNames) => {
        blockNames = Array.isArray(blockNames) ? blockNames : [blockNames];
        const { getBlocksByName, getBlockParents } = select9(import_block_editor3.store);
        const clientIds = getBlocksByName(blockNames);
        const parentsOfClientIds = clientIds.map(
          (id) => getBlockParents(id)
        );
        return [clientIds, ...parentsOfClientIds];
      }
    )
  );
  var getDefaultRenderingMode = (0, import_data5.createRegistrySelector)(
    (select9) => (state2, postType2) => {
      const { getPostType, getCurrentTheme, hasFinishedResolution } = select9(import_core_data5.store);
      const currentTheme = getCurrentTheme();
      const postTypeEntity = getPostType(postType2);
      if (!hasFinishedResolution("getPostType", [postType2]) || !hasFinishedResolution("getCurrentTheme")) {
        return void 0;
      }
      const theme2 = currentTheme?.stylesheet;
      const defaultModePreference = select9(import_preferences2.store).get(
        "core",
        "renderingModes"
      )?.[theme2]?.[postType2];
      if (RENDERING_MODES.includes(defaultModePreference)) {
        return defaultModePreference;
      }
      const postTypeDefaultMode = Array.isArray(
        postTypeEntity?.supports?.editor
      ) ? postTypeEntity.supports.editor.find(
        (features) => "default-mode" in features
      )?.["default-mode"] : void 0;
      if (RENDERING_MODES.includes(postTypeDefaultMode)) {
        return postTypeDefaultMode;
      }
      const settingsDefaultMode = getEditorSettings(state2).defaultRenderingMode;
      if (RENDERING_MODES.includes(settingsDefaultMode)) {
        return settingsDefaultMode;
      }
      return "post-only";
    }
  );
  function getStylesPath(state2) {
    return state2.stylesPath ?? "/";
  }
  function getShowStylebook(state2) {
    return state2.showStylebook ?? false;
  }
  var getCanvasWidth = (0, import_data5.createRegistrySelector)(
    (select9) => (state2) => {
      if (unlock(select9(import_block_editor3.store)).isZoomOut()) {
        return void 0;
      }
      return state2.canvasWidth;
    }
  );
  function getRevisionPage(state2) {
    return state2.revisionPage;
  }
  function buildRevisionsPageQuery(revisionKey, page) {
    return {
      per_page: REVISIONS_PER_PAGE,
      page,
      context: "edit",
      orderby: "date",
      order: "desc",
      _fields: [
        .../* @__PURE__ */ new Set([
          "id",
          "date",
          "modified",
          "author",
          "slug",
          "meta",
          "title",
          "excerpt",
          // Not the whole field: `content.rendered` would blow up the
          // payload of a page of revisions.
          "content.raw",
          revisionKey
        ])
      ].join()
    };
  }
  var REVISIONS_PER_PAGE = 100;
  function getRevisionsPerPage() {
    return REVISIONS_PER_PAGE;
  }
  var getPageRevisions = (0, import_data5.createRegistrySelector)(
    (select9) => (state2, page) => {
      if (!page) {
        return null;
      }
      const { type: postType2, id: postId2 } = getCurrentPost(state2);
      if (!postType2 || !postId2) {
        return null;
      }
      const entityConfig = select9(import_core_data5.store).getEntityConfig(
        "postType",
        postType2
      );
      const revisionKey = entityConfig?.revisionKey || "id";
      return select9(import_core_data5.store).getRevisions(
        "postType",
        postType2,
        postId2,
        buildRevisionsPageQuery(revisionKey, page)
      );
    }
  );
  function isRevisionsMode(state2) {
    return state2.revisionId !== null;
  }
  function isShowingRevisionDiff(state2) {
    return state2.showRevisionDiff;
  }
  function getCurrentRevisionId(state2) {
    return state2.revisionId;
  }
  var getCurrentRevision = (0, import_data5.createRegistrySelector)(
    (select9) => (state2) => {
      const revisionId2 = getCurrentRevisionId(state2);
      if (!revisionId2) {
        return void 0;
      }
      const page = getRevisionPage(state2);
      if (!page) {
        return null;
      }
      const { type: postType2, id: postId2 } = getCurrentPost(state2);
      const entityConfig = select9(import_core_data5.store).getEntityConfig(
        "postType",
        postType2
      );
      const revisionKey = entityConfig?.revisionKey || "id";
      const revisions = select9(import_core_data5.store).getRevisions(
        "postType",
        postType2,
        postId2,
        buildRevisionsPageQuery(revisionKey, page)
      );
      if (!revisions) {
        return null;
      }
      const revision = revisions.find(
        (record) => record[revisionKey] === revisionId2
      );
      if (revision) {
        return revision;
      }
      return select9(import_core_data5.store).getRevision(
        "postType",
        postType2,
        postId2,
        revisionId2,
        { context: "edit" }
      ) ?? null;
    }
  );
  function getSelectedNote(state2) {
    return state2.selectedNote?.noteId;
  }
  function isNoteFocused(state2) {
    return !!state2.selectedNote?.options?.focus;
  }
  var getPreviousRevision = (0, import_data5.createRegistrySelector)(
    (select9) => (state2) => {
      const currentRevisionId = getCurrentRevisionId(state2);
      if (!currentRevisionId) {
        return void 0;
      }
      const page = getRevisionPage(state2);
      if (!page) {
        return null;
      }
      const { type: postType2, id: postId2 } = getCurrentPost(state2);
      const entityConfig = select9(import_core_data5.store).getEntityConfig(
        "postType",
        postType2
      );
      const revisionKey = entityConfig?.revisionKey || "id";
      const query = buildRevisionsPageQuery(revisionKey, page);
      const revisions = select9(import_core_data5.store).getRevisions(
        "postType",
        postType2,
        postId2,
        query
      );
      if (!revisions) {
        return null;
      }
      const currentIndex = revisions.findIndex(
        (r4) => r4[revisionKey] === currentRevisionId
      );
      if (currentIndex >= 0 && currentIndex < revisions.length - 1) {
        return revisions[currentIndex + 1];
      }
      const totalRevisions = getCurrentPostRevisionsCount(state2);
      const totalPages = Math.ceil(totalRevisions / query.per_page) || 1;
      if (currentIndex === revisions.length - 1 && page < totalPages) {
        const nextPageRevisions = select9(import_core_data5.store).getRevisions(
          "postType",
          postType2,
          postId2,
          buildRevisionsPageQuery(revisionKey, page + 1)
        );
        return nextPageRevisions?.[0] ?? null;
      }
      return null;
    }
  );
  var isCollaborationEnabledForCurrentPost = (0, import_data5.createRegistrySelector)(
    (select9) => (state2) => {
      if (!unlock(select9(import_core_data5.store)).isCollaborationSupported()) {
        return false;
      }
      const currentPostType = getCurrentPostType(state2);
      const currentPostId = getCurrentPostId(state2);
      const entityConfig = select9(import_core_data5.store).getEntityConfig(
        "postType",
        currentPostType
      );
      const syncConfig = entityConfig?.syncConfig;
      return Boolean(
        syncConfig && syncConfig.supportsPersistence && window.__experimentalEnableRealTimeCollaboration && false !== syncConfig.shouldSync?.(
          `postType/${currentPostType}`,
          currentPostId
        )
      );
    }
  );

  // packages/editor/build-module/dataviews/store/private-actions.mjs
  var import_core_data61 = __toESM(require_core_data(), 1);
  var import_hooks41 = __toESM(require_hooks(), 1);

  // packages/fields/build-module/fields/slug/index.mjs
  var import_i18n5 = __toESM(require_i18n(), 1);

  // packages/fields/build-module/fields/slug/slug-edit.mjs
  var import_components = __toESM(require_components(), 1);
  var import_compose = __toESM(require_compose(), 1);
  var import_data6 = __toESM(require_data(), 1);
  var import_element2 = __toESM(require_element(), 1);
  var import_notices = __toESM(require_notices(), 1);
  var import_url3 = __toESM(require_url(), 1);
  var import_i18n4 = __toESM(require_i18n(), 1);

  // packages/fields/build-module/fields/slug/utils.mjs
  var import_url2 = __toESM(require_url(), 1);

  // packages/fields/build-module/actions/utils.mjs
  var import_html_entities = __toESM(require_html_entities(), 1);
  var import_i18n3 = __toESM(require_i18n(), 1);
  function isTemplate(post2) {
    return post2.type === "wp_template";
  }
  function isTemplatePart(post2) {
    return post2.type === "wp_template_part";
  }
  function isTemplateOrTemplatePart(p4) {
    return p4.type === "wp_template" || p4.type === "wp_template_part";
  }
  function getItemTitle(item, fallback = (0, import_i18n3.__)("(no title)")) {
    let title = "";
    if (typeof item.title === "string") {
      title = (0, import_html_entities.decodeEntities)(item.title);
    } else if (item.title && "rendered" in item.title) {
      title = (0, import_html_entities.decodeEntities)(item.title.rendered);
    } else if (item.title && "raw" in item.title) {
      title = (0, import_html_entities.decodeEntities)(item.title.raw);
    }
    return title || fallback;
  }
  function isTemplateRemovable(template2) {
    if (!template2) {
      return false;
    }
    return [template2.source, template2.source].includes("custom") && !Boolean(template2.type === "wp_template" && template2?.plugin) && !template2.has_theme_file;
  }

  // packages/fields/build-module/fields/slug/utils.mjs
  var getSlug = (item) => {
    if (typeof item !== "object") {
      return "";
    }
    return item.slug || item.generated_slug || (0, import_url2.cleanForSlug)(getItemTitle(item)) || item.id.toString();
  };

  // packages/fields/build-module/fields/slug/slug-edit.mjs
  var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1);
  var SlugEdit = ({
    field,
    onChange,
    data
  }) => {
    const { id } = field;
    const slug = field.getValue({ item: data }) || getSlug(data);
    const permalinkTemplate = data.permalink_template || "";
    const PERMALINK_POSTNAME_REGEX2 = /%(?:postname|pagename)%/;
    const [prefix2, suffix] = permalinkTemplate.split(
      PERMALINK_POSTNAME_REGEX2
    );
    const permalinkPrefix = prefix2;
    const permalinkSuffix = suffix;
    const isEditable = PERMALINK_POSTNAME_REGEX2.test(permalinkTemplate);
    const originalSlugRef = (0, import_element2.useRef)(slug);
    const slugToDisplay = slug || originalSlugRef.current;
    const permalink = isEditable ? `${permalinkPrefix}${slugToDisplay}${permalinkSuffix}` : (0, import_url3.safeDecodeURIComponent)(data.link || "");
    (0, import_element2.useEffect)(() => {
      if (slug && originalSlugRef.current === void 0) {
        originalSlugRef.current = slug;
      }
    }, [slug]);
    const onChangeControl = (0, import_element2.useCallback)(
      (newValue) => onChange({
        [id]: newValue
      }),
      [id, onChange]
    );
    const { createNotice } = (0, import_data6.useDispatch)(import_notices.store);
    const copyButtonRef = (0, import_compose.useCopyToClipboard)(permalink, () => {
      createNotice("info", (0, import_i18n4.__)("Copied Permalink to clipboard."), {
        isDismissible: true,
        type: "snackbar"
      });
    });
    const postUrlSlugDescriptionId = "editor-post-url__slug-description-" + (0, import_compose.useInstanceId)(SlugEdit);
    return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("fieldset", { className: "fields-controls__slug", children: [
      isEditable && /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_components.__experimentalVStack, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_components.__experimentalVStack, { spacing: "0px", children: [
          /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: (0, import_i18n4.__)(
            "Customize the last part of the Permalink."
          ) }),
          /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_components.ExternalLink, { href: "https://wordpress.org/documentation/article/page-post-settings-sidebar/#permalink", children: (0, import_i18n4.__)("Learn more") })
        ] }),
        /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
          import_components.__experimentalInputControl,
          {
            prefix: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_components.__experimentalInputControlPrefixWrapper, { children: "/" }),
            suffix: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_components.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
              import_components.Button,
              {
                size: "small",
                icon: copy_small_default,
                ref: copyButtonRef,
                label: (0, import_i18n4.__)("Copy")
              }
            ) }),
            label: (0, import_i18n4.__)("Link"),
            hideLabelFromVision: true,
            value: slug,
            autoComplete: "off",
            spellCheck: "false",
            type: "text",
            className: "fields-controls__slug-input",
            onChange: (newValue) => {
              onChangeControl(newValue);
            },
            onBlur: () => {
              if (slug === "") {
                onChangeControl(originalSlugRef.current);
              }
            },
            "aria-describedby": postUrlSlugDescriptionId
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "fields-controls__slug-help", children: [
          /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "fields-controls__slug-help-visual-label", children: (0, import_i18n4.__)("Permalink:") }),
          /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
            import_components.ExternalLink,
            {
              className: "fields-controls__slug-help-link",
              href: permalink,
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "fields-controls__slug-help-prefix", children: permalinkPrefix }),
                /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "fields-controls__slug-help-slug", children: slugToDisplay }),
                /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "fields-controls__slug-help-suffix", children: permalinkSuffix })
              ]
            }
          )
        ] })
      ] }),
      !isEditable && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
        import_components.ExternalLink,
        {
          className: "fields-controls__slug-help",
          href: permalink,
          children: permalink
        }
      )
    ] });
  };
  var slug_edit_default = SlugEdit;

  // packages/fields/build-module/fields/slug/slug-view.mjs
  var import_element3 = __toESM(require_element(), 1);
  var SlugView = ({ item }) => {
    const slug = getSlug(item);
    const originalSlugRef = (0, import_element3.useRef)(slug);
    (0, import_element3.useEffect)(() => {
      if (slug && originalSlugRef.current === void 0) {
        originalSlugRef.current = slug;
      }
    }, [slug]);
    const slugToDisplay = slug || originalSlugRef.current;
    return `${slugToDisplay}`;
  };
  var slug_view_default = SlugView;

  // packages/fields/build-module/fields/slug/index.mjs
  var slugField = {
    id: "slug",
    type: "text",
    label: (0, import_i18n5.__)("Slug"),
    Edit: slug_edit_default,
    render: slug_view_default,
    filterBy: false,
    // The REST API only exposes `permalink_template` for viewable public
    // post types, so posts without a permalink hide the field.
    isVisible: (item) => !!item.link && !!item.permalink_template
  };
  var slug_default = slugField;

  // packages/fields/build-module/fields/title/index.mjs
  var import_i18n7 = __toESM(require_i18n(), 1);

  // node_modules/clsx/dist/clsx.mjs
  function r(e2) {
    var t3, f2, n2 = "";
    if ("string" == typeof e2 || "number" == typeof e2) n2 += e2;
    else if ("object" == typeof e2) if (Array.isArray(e2)) {
      var o3 = e2.length;
      for (t3 = 0; t3 < o3; t3++) e2[t3] && (f2 = r(e2[t3])) && (n2 && (n2 += " "), n2 += f2);
    } else for (f2 in e2) e2[f2] && (n2 && (n2 += " "), n2 += f2);
    return n2;
  }
  function clsx() {
    for (var e2, t3, f2 = 0, n2 = "", o3 = arguments.length; f2 < o3; f2++) (e2 = arguments[f2]) && (t3 = r(e2)) && (n2 && (n2 += " "), n2 += t3);
    return n2;
  }
  var clsx_default = clsx;

  // packages/fields/build-module/fields/title/view.mjs
  var import_components2 = __toESM(require_components(), 1);
  var import_i18n6 = __toESM(require_i18n(), 1);
  var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1);
  function BaseTitleView({
    item,
    className,
    children
  }) {
    const renderedTitle = getItemTitle(item);
    return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
      import_components2.__experimentalHStack,
      {
        className: clsx_default("fields-field__title", className),
        alignment: "center",
        justify: "flex-start",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { children: renderedTitle || (0, import_i18n6.__)("(no title)") }),
          children
        ]
      }
    );
  }
  function TitleView({ item }) {
    return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(BaseTitleView, { item });
  }

  // packages/fields/build-module/fields/title/index.mjs
  var titleField = {
    type: "text",
    id: "title",
    label: (0, import_i18n7.__)("Title"),
    placeholder: (0, import_i18n7.__)("No title"),
    getValue: ({ item }) => getItemTitle(item),
    render: TitleView,
    enableHiding: true,
    enableGlobalSearch: true,
    filterBy: false
  };
  var title_default = titleField;

  // packages/fields/build-module/fields/page-title/index.mjs
  var import_i18n22 = __toESM(require_i18n(), 1);

  // packages/fields/build-module/fields/page-title/view.mjs
  var import_i18n21 = __toESM(require_i18n(), 1);
  var import_data7 = __toESM(require_data(), 1);
  var import_core_data6 = __toESM(require_core_data(), 1);

  // packages/ui/build-module/badge/badge.mjs
  var import_element20 = __toESM(require_element(), 1);

  // node_modules/@base-ui/utils/useControlled.mjs
  var React = __toESM(require_react(), 1);

  // node_modules/@base-ui/utils/createLogOnce.mjs
  var loggedMessages;
  if (true) {
    loggedMessages = /* @__PURE__ */ new Set();
  }
  function createLogOnce(severity, prefix2) {
    return function logOnce(...messages) {
      if (true) {
        const message2 = messages.join(" ");
        const output = prefix2 ? `${prefix2}: ${message2}` : message2;
        const key = `${severity}:${output}`;
        if (!loggedMessages.has(key)) {
          loggedMessages.add(key);
          if (severity === "warn") {
            console.warn(output);
          } else {
            console.error(output);
          }
        }
      }
    };
  }

  // node_modules/@base-ui/utils/error.mjs
  var error = createLogOnce("error", "Base UI");

  // node_modules/@base-ui/utils/useControlled.mjs
  function useControlled({
    controlled,
    default: defaultProp,
    name: name2,
    state: state2 = "value"
  }) {
    const {
      current: isControlled
    } = React.useRef(controlled !== void 0);
    const [valueState, setValue] = React.useState(defaultProp);
    const value = isControlled && controlled !== void 0 ? controlled : valueState;
    if (true) {
      React.useEffect(() => {
        if (isControlled !== (controlled !== void 0)) {
          error([`A component is changing the ${isControlled ? "" : "un"}controlled ${state2} state of ${name2} to be ${isControlled ? "un" : ""}controlled.`, "Elements should not switch from uncontrolled to controlled (or vice versa).", `Decide between using a controlled or uncontrolled ${name2} element for the lifetime of the component.`, "The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.", "More info: https://fb.me/react-controlled-components"].join("\n"));
        }
      }, [state2, name2, controlled]);
      const {
        current: defaultValue2
      } = React.useRef(defaultProp);
      React.useEffect(() => {
        if (!isControlled && serializeToDevModeString(defaultValue2) !== serializeToDevModeString(defaultProp)) {
          error([`A component is changing the default ${state2} state of an uncontrolled ${name2} after being initialized. To suppress this warning opt to use a controlled ${name2}.`].join("\n"));
        }
      }, [defaultProp]);
    }
    const setValueIfUncontrolled = React.useCallback((newValue) => {
      if (!isControlled) {
        setValue(newValue);
      }
    }, []);
    return [value, setValueIfUncontrolled];
  }
  function serializeToDevModeString(input) {
    let nextId2 = 0;
    const seen = /* @__PURE__ */ new WeakMap();
    try {
      const result = JSON.stringify(input, function replacer(key, value) {
        if (key === "_owner" && this != null && typeof this === "object" && "$$typeof" in this) {
          return void 0;
        }
        if (typeof value === "bigint") {
          return `__bigint__:${value}`;
        }
        if (value !== null && typeof value === "object") {
          const id = seen.get(value);
          if (id !== void 0) {
            return `__object__:${id}`;
          }
          seen.set(value, nextId2);
          nextId2 += 1;
        }
        return value;
      });
      return result ?? `__top__:${typeof input}`;
    } catch {
      return "__unserializable__";
    }
  }

  // node_modules/@base-ui/utils/safeReact.mjs
  var React2 = __toESM(require_react(), 1);
  var SafeReact = {
    ...React2
  };

  // node_modules/@base-ui/utils/useRefWithInit.mjs
  var React3 = __toESM(require_react(), 1);
  var UNINITIALIZED = {};
  function useRefWithInit(init2, initArg) {
    const ref = React3.useRef(UNINITIALIZED);
    if (ref.current === UNINITIALIZED) {
      ref.current = init2(initArg);
    }
    return ref;
  }

  // node_modules/@base-ui/utils/useStableCallback.mjs
  var useInsertionEffect = SafeReact.useInsertionEffect;
  var useSafeInsertionEffect = (
    // React 17 doesn't have useInsertionEffect.
    useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late.
    useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn()
  );
  function useStableCallback(callback) {
    const stable = useRefWithInit(createStableCallback).current;
    stable.next = callback;
    useSafeInsertionEffect(stable.effect);
    return stable.trampoline;
  }
  function createStableCallback() {
    const stable = {
      next: void 0,
      callback: assertNotCalled,
      trampoline: (...args) => stable.callback?.(...args),
      effect: () => {
        stable.callback = stable.next;
      }
    };
    return stable;
  }
  function assertNotCalled() {
    if (true) {
      throw (
        /* minify-error-disabled */
        new Error("Base UI: Cannot call an event handler while rendering.")
      );
    }
  }

  // node_modules/@base-ui/utils/warn.mjs
  var warn = createLogOnce("warn", "Base UI");

  // node_modules/@base-ui/utils/empty.mjs
  function NOOP() {
  }
  var EMPTY_ARRAY3 = Object.freeze([]);
  var EMPTY_OBJECT2 = Object.freeze({});

  // node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs
  var React6 = __toESM(require_react(), 1);

  // node_modules/@base-ui/utils/useIsoLayoutEffect.mjs
  var React4 = __toESM(require_react(), 1);
  var noop = () => {
  };
  var useIsoLayoutEffect = typeof document !== "undefined" ? React4.useLayoutEffect : noop;

  // node_modules/@base-ui/react/internals/composite/list/CompositeListContext.mjs
  var React5 = __toESM(require_react(), 1);
  var CompositeListContext = /* @__PURE__ */ React5.createContext({
    register: () => {
    },
    unregister: () => {
    },
    subscribeMapChange: () => () => {
    },
    nextIndexRef: {
      current: 0
    }
  });
  if (true) CompositeListContext.displayName = "CompositeListContext";
  function useCompositeListContext() {
    return React5.useContext(CompositeListContext);
  }

  // node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs
  var import_jsx_runtime96 = __toESM(require_jsx_runtime(), 1);
  function CompositeList(props) {
    const {
      children,
      elementsRef,
      labelsRef,
      onMapChange: onMapChangeProp
    } = props;
    const onMapChange = useStableCallback(onMapChangeProp);
    const [, setMapTick] = React6.useState(false);
    const listeners2 = useRefWithInit(createListeners).current;
    const map = useRefWithInit(createMap).current;
    const nextIndexRef = React6.useRef(0);
    const isDirtyRef = React6.useRef(true);
    const itemsRef = React6.useRef(null);
    const mutationObserverRef = React6.useRef(null);
    const scheduleMapUpdate = useStableCallback(() => {
      if (isDirtyRef.current) {
        return;
      }
      isDirtyRef.current = true;
      setMapTick((tick) => !tick);
    });
    const register5 = useStableCallback((node, registration) => {
      map.set(node, registration);
      scheduleMapUpdate();
    });
    const unregister = useStableCallback((node) => {
      map.delete(node);
      scheduleMapUpdate();
    });
    const syncRefs = useStableCallback((items) => {
      const nextMap = /* @__PURE__ */ new Map();
      elementsRef.current.length = 0;
      if (labelsRef) {
        labelsRef.current.length = 0;
      }
      items.forEach((item) => {
        nextMap.set(item.element, {
          ...item.registration.metadata ?? {},
          index: item.index
        });
        elementsRef.current[item.index] = item.element;
        if (labelsRef) {
          labelsRef.current[item.index] = item.registration.label !== void 0 ? item.registration.label : item.registration.textRef?.current?.textContent ?? item.element.textContent;
        }
      });
      nextIndexRef.current = elementsRef.current.length;
      return nextMap;
    });
    function observe(sortedNodes) {
      mutationObserverRef.current?.disconnect();
      mutationObserverRef.current = null;
      if (typeof MutationObserver !== "function" || sortedNodes.length < 2) {
        return;
      }
      const mutationObserver = new MutationObserver((entries) => {
        if (!hasMovedNode(entries)) {
          return;
        }
        let previousConnectedNode = null;
        for (const node of sortedNodes) {
          if (!node.isConnected) {
            continue;
          }
          if (previousConnectedNode && sortByDocumentPosition(previousConnectedNode, node) > 0) {
            mutationObserver.disconnect();
            scheduleMapUpdate();
            return;
          }
          previousConnectedNode = node;
        }
      });
      mutationObserverRef.current = mutationObserver;
      const roots = /* @__PURE__ */ new Set();
      for (let i2 = 1; i2 < sortedNodes.length; i2 += 1) {
        const root = getCommonAncestor(sortedNodes[i2 - 1], sortedNodes[i2]);
        if (root) {
          roots.add(root);
        }
      }
      roots.forEach((root) => mutationObserver.observe(root, {
        childList: true
      }));
    }
    const flush2 = useStableCallback(() => {
      const [items, automaticNodes] = getCompositeListSnapshot(map);
      const nextMap = syncRefs(items);
      const previousItems = itemsRef.current;
      const changed = !previousItems || previousItems.length !== items.length || items.some((item, index3) => {
        const previousItem = previousItems[index3];
        return item.index !== previousItem.index || item.element !== previousItem.element || item.registration.index !== previousItem.registration.index || item.registration.metadata !== previousItem.registration.metadata;
      });
      observe(automaticNodes);
      itemsRef.current = items;
      isDirtyRef.current = false;
      if (!changed) {
        return;
      }
      listeners2.forEach((listener) => listener(nextMap));
      onMapChange(nextMap);
    });
    useIsoLayoutEffect(() => {
      if (!isDirtyRef.current && itemsRef.current) {
        syncRefs(itemsRef.current);
      }
      return () => {
        elementsRef.current = [];
        if (labelsRef) {
          labelsRef.current = [];
        }
      };
    }, [elementsRef, labelsRef, syncRefs]);
    useIsoLayoutEffect(() => {
      if (isDirtyRef.current) {
        flush2();
      }
    });
    useIsoLayoutEffect(() => {
      return () => {
        mutationObserverRef.current?.disconnect();
        isDirtyRef.current = true;
      };
    }, []);
    const subscribeMapChange = useStableCallback((fn) => {
      listeners2.add(fn);
      return () => {
        listeners2.delete(fn);
      };
    });
    const contextValue = React6.useMemo(() => ({
      register: register5,
      unregister,
      subscribeMapChange,
      nextIndexRef
    }), [register5, unregister, subscribeMapChange, nextIndexRef]);
    return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(CompositeListContext.Provider, {
      value: contextValue,
      children
    });
  }
  function createMap() {
    return /* @__PURE__ */ new Map();
  }
  function createListeners() {
    return /* @__PURE__ */ new Set();
  }
  function getCompositeListSnapshot(map) {
    const reservedIndices = /* @__PURE__ */ new Set();
    const items = [];
    const automaticItems = [];
    map.forEach((registration, node) => {
      if (!node.isConnected) {
        return;
      }
      const index3 = registration.index;
      const item = {
        index: index3 ?? -1,
        element: node,
        registration
      };
      if (index3 === null) {
        automaticItems.push(item);
      } else if (index3 >= 0) {
        reservedIndices.add(index3);
        items.push(item);
      }
    });
    let nextAutomaticIndex = 0;
    automaticItems.sort((a2, b2) => sortByDocumentPosition(a2.element, b2.element));
    automaticItems.forEach((item) => {
      while (reservedIndices.has(nextAutomaticIndex)) {
        nextAutomaticIndex += 1;
      }
      item.index = nextAutomaticIndex;
      items.push(item);
      nextAutomaticIndex += 1;
    });
    if (reservedIndices.size > 0) {
      items.sort((a2, b2) => a2.index - b2.index);
    }
    return [items, automaticItems.map((item) => item.element)];
  }
  function getCommonAncestor(firstNode, lastNode) {
    let ancestor = firstNode.parentElement;
    while (ancestor && !ancestor.contains(lastNode)) {
      ancestor = ancestor.parentElement;
    }
    return ancestor;
  }
  function hasMovedNode(entries) {
    for (const entry of entries) {
      for (let i2 = 0; i2 < entry.removedNodes.length; i2 += 1) {
        if (entry.removedNodes[i2].isConnected) {
          return true;
        }
      }
    }
    return false;
  }
  function sortByDocumentPosition(a2, b2) {
    return a2.compareDocumentPosition(b2) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
  }

  // node_modules/@base-ui/react/internals/useRenderElement.mjs
  var React9 = __toESM(require_react(), 1);

  // node_modules/@base-ui/utils/useMergedRefs.mjs
  function useMergedRefs(a2, b2, c6, d2) {
    const forkRef = useRefWithInit(createForkRef).current;
    if (didChange(forkRef, a2, b2, c6, d2)) {
      update(forkRef, [a2, b2, c6, d2]);
    }
    return forkRef.callback;
  }
  function useMergedRefsN(refs) {
    const forkRef = useRefWithInit(createForkRef).current;
    if (didChangeN(forkRef, refs)) {
      update(forkRef, refs);
    }
    return forkRef.callback;
  }
  function createForkRef() {
    return {
      callback: null,
      cleanup: null,
      refs: []
    };
  }
  function didChange(forkRef, a2, b2, c6, d2) {
    return forkRef.refs[0] !== a2 || forkRef.refs[1] !== b2 || forkRef.refs[2] !== c6 || forkRef.refs[3] !== d2;
  }
  function didChangeN(forkRef, newRefs) {
    return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index3) => ref !== newRefs[index3]);
  }
  function update(forkRef, refs) {
    forkRef.refs = refs;
    if (refs.every((ref) => ref == null)) {
      forkRef.callback = null;
      return;
    }
    forkRef.callback = (instance) => {
      if (forkRef.cleanup) {
        forkRef.cleanup();
        forkRef.cleanup = null;
      }
      if (instance != null) {
        const cleanupCallbacks = Array(refs.length).fill(null);
        for (let i2 = 0; i2 < refs.length; i2 += 1) {
          const ref = refs[i2];
          if (ref == null) {
            continue;
          }
          switch (typeof ref) {
            case "function": {
              const refCleanup = ref(instance);
              if (typeof refCleanup === "function") {
                cleanupCallbacks[i2] = refCleanup;
              }
              break;
            }
            case "object": {
              ref.current = instance;
              break;
            }
            default:
          }
        }
        forkRef.cleanup = () => {
          for (let i2 = 0; i2 < refs.length; i2 += 1) {
            const ref = refs[i2];
            if (ref == null) {
              continue;
            }
            switch (typeof ref) {
              case "function": {
                const cleanupCallback = cleanupCallbacks[i2];
                if (typeof cleanupCallback === "function") {
                  cleanupCallback();
                } else {
                  void ref(null);
                }
                break;
              }
              case "object": {
                ref.current = null;
                break;
              }
              default:
            }
          }
        };
      }
    };
  }

  // node_modules/@base-ui/utils/getReactElementRef.mjs
  var React8 = __toESM(require_react(), 1);

  // node_modules/@base-ui/utils/reactVersion.mjs
  var React7 = __toESM(require_react(), 1);
  var majorVersion = parseInt(React7.version, 10);
  function isReactVersionAtLeast(reactVersionToCheck) {
    return majorVersion >= reactVersionToCheck;
  }

  // node_modules/@base-ui/utils/getReactElementRef.mjs
  function getReactElementRef(element) {
    if (!/* @__PURE__ */ React8.isValidElement(element)) {
      return null;
    }
    const reactElement = element;
    const propsWithRef = reactElement.props;
    return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null;
  }

  // node_modules/@base-ui/utils/mergeObjects.mjs
  function mergeObjects(a2, b2) {
    if (a2 && !b2) {
      return a2;
    }
    if (!a2 && b2) {
      return b2;
    }
    if (a2 || b2) {
      return {
        ...a2,
        ...b2
      };
    }
    return void 0;
  }

  // node_modules/@base-ui/react/internals/getStateAttributesProps.mjs
  function getStateAttributesProps(state2, customMapping) {
    const props = {};
    for (const key in state2) {
      const value = state2[key];
      if (customMapping?.hasOwnProperty(key)) {
        const customProps = customMapping[key](value);
        if (customProps != null) {
          Object.assign(props, customProps);
        }
        continue;
      }
      if (value === true) {
        props[`data-${key.toLowerCase()}`] = "";
      } else if (value) {
        props[`data-${key.toLowerCase()}`] = value.toString();
      }
    }
    return props;
  }

  // node_modules/@base-ui/react/utils/resolveClassName.mjs
  function resolveClassName(className, state2) {
    return typeof className === "function" ? className(state2) : className;
  }

  // node_modules/@base-ui/react/utils/resolveStyle.mjs
  function resolveStyle2(style, state2) {
    return typeof style === "function" ? style(state2) : style;
  }

  // node_modules/@base-ui/react/merge-props/mergeProps.mjs
  var EMPTY_PROPS = {};
  function mergeProps(a2, b2, c6, d2, e2) {
    if (!c6 && !d2 && !e2 && !a2) {
      return createInitialMergedProps(b2);
    }
    let merged = createInitialMergedProps(a2);
    if (b2) {
      merged = mergeInto(merged, b2);
    }
    if (c6) {
      merged = mergeInto(merged, c6);
    }
    if (d2) {
      merged = mergeInto(merged, d2);
    }
    if (e2) {
      merged = mergeInto(merged, e2);
    }
    return merged;
  }
  function mergePropsN(props) {
    if (props.length === 0) {
      return EMPTY_PROPS;
    }
    if (props.length === 1) {
      return createInitialMergedProps(props[0]);
    }
    let merged = createInitialMergedProps(props[0]);
    for (let i2 = 1; i2 < props.length; i2 += 1) {
      merged = mergeInto(merged, props[i2]);
    }
    return merged;
  }
  function createInitialMergedProps(inputProps) {
    if (isPropsGetter(inputProps)) {
      return {
        ...resolvePropsGetter(inputProps, EMPTY_PROPS)
      };
    }
    return copyInitialProps(inputProps);
  }
  function mergeInto(merged, inputProps) {
    if (isPropsGetter(inputProps)) {
      return resolvePropsGetter(inputProps, merged);
    }
    return mutablyMergeInto(merged, inputProps);
  }
  function copyInitialProps(inputProps) {
    const copiedProps = {
      ...inputProps
    };
    for (const propName in copiedProps) {
      const propValue = copiedProps[propName];
      if (isEventHandler(propName, propValue)) {
        copiedProps[propName] = wrapEventHandler(propValue);
      }
    }
    return copiedProps;
  }
  function mutablyMergeInto(mergedProps, externalProps) {
    if (!externalProps) {
      return mergedProps;
    }
    for (const propName in externalProps) {
      const externalPropValue = externalProps[propName];
      switch (propName) {
        case "style": {
          mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue);
          break;
        }
        case "className": {
          mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue);
          break;
        }
        default: {
          if (isEventHandler(propName, externalPropValue)) {
            mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue);
          } else {
            mergedProps[propName] = externalPropValue;
          }
        }
      }
    }
    return mergedProps;
  }
  function isEventHandler(key, value) {
    const code0 = key.charCodeAt(0);
    const code1 = key.charCodeAt(1);
    const code2 = key.charCodeAt(2);
    return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined");
  }
  function isPropsGetter(inputProps) {
    return typeof inputProps === "function";
  }
  function resolvePropsGetter(inputProps, previousProps) {
    if (isPropsGetter(inputProps)) {
      return inputProps(previousProps);
    }
    return inputProps ?? EMPTY_PROPS;
  }
  function mergeEventHandlers(ourHandler, theirHandler) {
    if (!theirHandler) {
      return ourHandler;
    }
    if (!ourHandler) {
      return wrapEventHandler(theirHandler);
    }
    return (...args) => {
      const event = args[0];
      if (isSyntheticEvent(event)) {
        const baseUIEvent = event;
        makeEventPreventable(baseUIEvent);
        const result2 = theirHandler(...args);
        if (!baseUIEvent.baseUIHandlerPrevented) {
          ourHandler?.(...args);
        }
        return result2;
      }
      const result = theirHandler(...args);
      ourHandler?.(...args);
      return result;
    };
  }
  function wrapEventHandler(handler) {
    if (!handler) {
      return handler;
    }
    return (...args) => {
      const event = args[0];
      if (isSyntheticEvent(event)) {
        makeEventPreventable(event);
      }
      return handler(...args);
    };
  }
  function makeEventPreventable(event) {
    event.preventBaseUIHandler = () => {
      event.baseUIHandlerPrevented = true;
    };
    return event;
  }
  function mergeClassNames(ourClassName, theirClassName) {
    if (theirClassName) {
      if (ourClassName) {
        return theirClassName + " " + ourClassName;
      }
      return theirClassName;
    }
    return ourClassName;
  }
  function isSyntheticEvent(event) {
    return event != null && typeof event === "object" && "nativeEvent" in event;
  }

  // node_modules/@base-ui/react/internals/useRenderElement.mjs
  var import_react = __toESM(require_react(), 1);
  function useRenderElement(element, componentProps, params = {}) {
    let renderProp = componentProps.render;
    if (params.enabled !== false) {
      renderProp = unwrapLazyRenderProp(renderProp);
    }
    const outProps = useRenderElementProps(componentProps, params, renderProp);
    if (params.enabled === false) {
      return null;
    }
    const state2 = params.state ?? EMPTY_OBJECT2;
    return evaluateRenderProp(element, renderProp, outProps, state2);
  }
  function useRenderElementProps(componentProps, params, renderProp) {
    const {
      className: classNameProp,
      style: styleProp
    } = componentProps;
    const {
      state: state2 = EMPTY_OBJECT2,
      ref,
      props,
      stateAttributesMapping: stateAttributesMapping8,
      enabled = true
    } = params;
    const className = enabled ? resolveClassName(classNameProp, state2) : void 0;
    const style = enabled ? resolveStyle2(styleProp, state2) : void 0;
    const stateProps = enabled ? getStateAttributesProps(state2, stateAttributesMapping8) : EMPTY_OBJECT2;
    const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0;
    const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT2;
    if (typeof document !== "undefined") {
      if (!enabled) {
        void useMergedRefs(null, null);
      } else if (Array.isArray(ref)) {
        outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]);
      } else {
        outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref);
      }
    }
    if (!enabled) {
      return EMPTY_OBJECT2;
    }
    if (className !== void 0) {
      outProps.className = mergeClassNames(outProps.className, className);
    }
    if (style !== void 0) {
      outProps.style = mergeObjects(outProps.style, style);
    }
    return outProps;
  }
  function resolveRenderFunctionProps(props) {
    if (Array.isArray(props)) {
      return mergePropsN(props);
    }
    return mergeProps(void 0, props);
  }
  var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy");
  var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/;
  var LOWERCASE_CHARACTER_PATTERN = /[a-z]/;
  function unwrapLazyRenderProp(render5) {
    if (render5?.$$typeof !== REACT_LAZY_TYPE) {
      return render5;
    }
    const unwrapped = React9.Children.toArray(render5)[0];
    return /* @__PURE__ */ React9.isValidElement(unwrapped) ? unwrapped : render5;
  }
  function evaluateRenderProp(element, render5, props, state2) {
    if (render5) {
      if (typeof render5 === "function") {
        if (true) {
          warnIfRenderPropLooksLikeComponent(render5);
        }
        return render5(props, state2);
      }
      const mergedProps = mergeProps(props, render5.props);
      mergedProps.ref = props.ref;
      if (true) {
        if (!/* @__PURE__ */ React9.isValidElement(render5)) {
          throw new Error(["Base UI: The `render` prop was provided an invalid React element as `React.isValidElement(render)` is `false`.", "A valid React element must be provided to the `render` prop because it is cloned with props to replace the default element.", "https://base-ui.com/r/invalid-render-prop"].join("\n"));
        }
      }
      return /* @__PURE__ */ React9.cloneElement(render5, mergedProps);
    }
    if (element) {
      if (typeof element === "string") {
        return renderTag(element, props);
      }
    }
    throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage_default(8));
  }
  function warnIfRenderPropLooksLikeComponent(renderFn) {
    const functionName = renderFn.name;
    if (functionName.length === 0) {
      return;
    }
    if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) {
      return;
    }
    if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) {
      return;
    }
    warn(`The \`render\` prop received a function named \`${functionName}\` that starts with an uppercase letter.`, "This usually means a React component was passed directly as `render={Component}`.", "Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.", "If this is an intentional render callback, rename it to start with a lowercase letter.", "Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.", "https://base-ui.com/r/invalid-render-prop");
  }
  function renderTag(Tag, props) {
    if (Tag === "button") {
      return /* @__PURE__ */ (0, import_react.createElement)("button", {
        type: "button",
        ...props,
        key: props.key
      });
    }
    if (Tag === "img") {
      return /* @__PURE__ */ (0, import_react.createElement)("img", {
        alt: "",
        ...props,
        key: props.key
      });
    }
    return /* @__PURE__ */ React9.createElement(Tag, props);
  }

  // node_modules/@base-ui/utils/useId.mjs
  var React10 = __toESM(require_react(), 1);
  var globalId = 0;
  function useGlobalId(idOverride, prefix2 = "mui") {
    const [defaultId, setDefaultId] = React10.useState(idOverride);
    const id = idOverride || defaultId;
    React10.useEffect(() => {
      if (defaultId == null) {
        globalId += 1;
        setDefaultId(`${prefix2}-${globalId}`);
      }
    }, [defaultId, prefix2]);
    return id;
  }
  var maybeReactUseId = SafeReact.useId;
  function useId(idOverride, prefix2) {
    if (maybeReactUseId !== void 0) {
      const reactId = maybeReactUseId();
      return idOverride ?? (prefix2 ? `${prefix2}-${reactId}` : reactId);
    }
    return useGlobalId(idOverride, prefix2);
  }

  // node_modules/@base-ui/react/internals/useBaseUiId.mjs
  function useBaseUiId(idOverride) {
    return useId(idOverride, "base-ui");
  }

  // node_modules/@base-ui/react/collapsible/root/useCollapsibleRoot.mjs
  var React13 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/internals/reason-parts.mjs
  var reason_parts_exports = {};
  __export(reason_parts_exports, {
    cancelOpen: () => cancelOpen,
    chipRemovePress: () => chipRemovePress,
    clearPress: () => clearPress,
    closePress: () => closePress,
    closeWatcher: () => closeWatcher,
    decrementPress: () => decrementPress,
    disabled: () => disabled,
    drag: () => drag,
    escapeKey: () => escapeKey,
    focusOut: () => focusOut,
    imperativeAction: () => imperativeAction,
    incrementPress: () => incrementPress,
    initial: () => initial,
    inputBlur: () => inputBlur,
    inputChange: () => inputChange,
    inputClear: () => inputClear,
    inputPaste: () => inputPaste,
    inputPress: () => inputPress,
    itemPress: () => itemPress,
    keyboard: () => keyboard,
    linkPress: () => linkPress,
    listNavigation: () => listNavigation,
    missing: () => missing,
    none: () => none,
    outsidePress: () => outsidePress,
    pointer: () => pointer,
    scrub: () => scrub,
    siblingOpen: () => siblingOpen,
    swipe: () => swipe,
    trackPress: () => trackPress,
    triggerFocus: () => triggerFocus,
    triggerHover: () => triggerHover,
    triggerPress: () => triggerPress,
    wheel: () => wheel,
    windowResize: () => windowResize
  });
  var none = "none";
  var triggerPress = "trigger-press";
  var triggerHover = "trigger-hover";
  var triggerFocus = "trigger-focus";
  var outsidePress = "outside-press";
  var itemPress = "item-press";
  var closePress = "close-press";
  var linkPress = "link-press";
  var clearPress = "clear-press";
  var chipRemovePress = "chip-remove-press";
  var trackPress = "track-press";
  var incrementPress = "increment-press";
  var decrementPress = "decrement-press";
  var inputChange = "input-change";
  var inputClear = "input-clear";
  var inputBlur = "input-blur";
  var inputPaste = "input-paste";
  var inputPress = "input-press";
  var focusOut = "focus-out";
  var escapeKey = "escape-key";
  var closeWatcher = "close-watcher";
  var listNavigation = "list-navigation";
  var keyboard = "keyboard";
  var pointer = "pointer";
  var drag = "drag";
  var wheel = "wheel";
  var scrub = "scrub";
  var cancelOpen = "cancel-open";
  var siblingOpen = "sibling-open";
  var disabled = "disabled";
  var missing = "missing";
  var initial = "initial";
  var imperativeAction = "imperative-action";
  var swipe = "swipe";
  var windowResize = "window-resize";

  // node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs
  function createChangeEventDetails(reason, event, trigger, customProperties) {
    let canceled = false;
    let allowPropagation = false;
    const custom = customProperties ?? EMPTY_OBJECT2;
    const details = {
      reason,
      event: event ?? new Event("base-ui"),
      cancel() {
        canceled = true;
      },
      allowPropagation() {
        allowPropagation = true;
      },
      get isCanceled() {
        return canceled;
      },
      get isPropagationAllowed() {
        return allowPropagation;
      },
      trigger,
      ...custom
    };
    return details;
  }
  function createGenericEventDetails(reason, event, customProperties) {
    const custom = customProperties ?? EMPTY_OBJECT2;
    const details = {
      reason,
      event: event ?? new Event("base-ui"),
      ...custom
    };
    return details;
  }

  // node_modules/@base-ui/react/internals/useTransitionStatus.mjs
  var React12 = __toESM(require_react(), 1);

  // node_modules/@base-ui/utils/useOnMount.mjs
  var React11 = __toESM(require_react(), 1);
  function useOnMount(fn) {
    React11.useEffect(fn, EMPTY_ARRAY3);
  }

  // node_modules/@base-ui/utils/useAnimationFrame.mjs
  var EMPTY = null;
  var LAST_RAF = globalThis.requestAnimationFrame;
  var Scheduler = class {
    /* This implementation uses an array as a backing data-structure for frame callbacks.
     * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it
     * never calls the native `cancelAnimationFrame` if there are no frames left. This can
     * be much more efficient if there is a call pattern that alterns as
     * "request-cancel-request-cancel-…".
     * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation
     * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */
    callbacks = [];
    callbacksCount = 0;
    nextId = 1;
    startId = 1;
    isScheduled = false;
    tick = (timestamp) => {
      this.isScheduled = false;
      const currentCallbacks = this.callbacks;
      const currentCallbacksCount = this.callbacksCount;
      this.callbacks = [];
      this.callbacksCount = 0;
      this.startId = this.nextId;
      if (currentCallbacksCount > 0) {
        for (let i2 = 0; i2 < currentCallbacks.length; i2 += 1) {
          currentCallbacks[i2]?.(timestamp);
        }
      }
    };
    request(fn) {
      const id = this.nextId;
      this.nextId += 1;
      this.callbacks.push(fn);
      this.callbacksCount += 1;
      const didRAFChange = LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true);
      if (!this.isScheduled || didRAFChange) {
        requestAnimationFrame(this.tick);
        this.isScheduled = true;
      }
      return id;
    }
    cancel(id) {
      const index3 = id - this.startId;
      if (index3 < 0 || index3 >= this.callbacks.length) {
        return;
      }
      if (this.callbacks[index3] === null) {
        return;
      }
      this.callbacks[index3] = null;
      this.callbacksCount -= 1;
    }
  };
  var scheduler = new Scheduler();
  var AnimationFrame = class _AnimationFrame {
    static create() {
      return new _AnimationFrame();
    }
    static request(fn) {
      return scheduler.request(fn);
    }
    static cancel(id) {
      return scheduler.cancel(id);
    }
    currentId = EMPTY;
    /**
     * Executes `fn` after `delay`, clearing any previously scheduled call.
     */
    request(fn) {
      this.cancel();
      this.currentId = scheduler.request(() => {
        this.currentId = EMPTY;
        fn();
      });
    }
    cancel = () => {
      if (this.currentId !== EMPTY) {
        scheduler.cancel(this.currentId);
        this.currentId = EMPTY;
      }
    };
    disposeEffect = () => {
      return this.cancel;
    };
  };
  function useAnimationFrame() {
    const timeout = useRefWithInit(AnimationFrame.create).current;
    useOnMount(timeout.disposeEffect);
    return timeout;
  }

  // node_modules/@base-ui/react/internals/useTransitionStatus.mjs
  function useTransitionStatus(open3, enableIdleState = false, deferEndingState = false, animateInitialOpen = false) {
    const [transitionStatus, setTransitionStatus] = React12.useState(open3 && enableIdleState ? "idle" : void 0);
    const [mounted, setMounted] = React12.useState(open3 && !animateInitialOpen);
    if (open3 && !mounted) {
      setMounted(true);
      setTransitionStatus("starting");
    }
    if (!open3 && mounted && transitionStatus !== "ending" && !deferEndingState) {
      setTransitionStatus("ending");
    }
    if (!open3 && !mounted && transitionStatus === "ending") {
      setTransitionStatus(void 0);
    }
    useIsoLayoutEffect(() => {
      if (!open3 && mounted && transitionStatus !== "ending" && deferEndingState) {
        const frame = AnimationFrame.request(() => {
          setTransitionStatus("ending");
        });
        return () => {
          AnimationFrame.cancel(frame);
        };
      }
      return void 0;
    }, [open3, mounted, transitionStatus, deferEndingState]);
    useIsoLayoutEffect(() => {
      if (!open3 || enableIdleState) {
        return void 0;
      }
      const frame = AnimationFrame.request(() => {
        setTransitionStatus(void 0);
      });
      return () => {
        AnimationFrame.cancel(frame);
      };
    }, [enableIdleState, open3]);
    useIsoLayoutEffect(() => {
      if (!open3 || !enableIdleState) {
        return void 0;
      }
      if (open3 && mounted && transitionStatus !== "idle") {
        setTransitionStatus("starting");
      }
      const frame = AnimationFrame.request(() => {
        setTransitionStatus("idle");
      });
      return () => {
        AnimationFrame.cancel(frame);
      };
    }, [enableIdleState, open3, mounted, transitionStatus]);
    return {
      mounted,
      setMounted,
      transitionStatus
    };
  }

  // node_modules/@base-ui/react/collapsible/root/useCollapsibleRoot.mjs
  function useCollapsibleRoot(parameters) {
    const {
      open: openParam,
      defaultOpen = false,
      onOpenChange,
      disabled: disabled2
    } = parameters;
    const [open3, setOpen] = useControlled({
      controlled: openParam,
      default: defaultOpen,
      name: "Collapsible",
      state: "open"
    });
    const {
      mounted,
      setMounted,
      transitionStatus
    } = useTransitionStatus(open3, true, true);
    const defaultPanelId = useBaseUiId();
    const [registeredPanelId, setPanelIdState] = React13.useState();
    const panelId = registeredPanelId === null ? void 0 : registeredPanelId ?? defaultPanelId;
    const handleTrigger = useStableCallback((event) => {
      const nextOpen = !open3;
      const eventDetails = createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent);
      onOpenChange(nextOpen, eventDetails);
      if (eventDetails.isCanceled) {
        return;
      }
      setOpen(nextOpen);
    });
    return React13.useMemo(() => ({
      defaultPanelId,
      disabled: disabled2,
      handleTrigger,
      mounted,
      open: open3,
      panelId,
      setMounted,
      setOpen,
      setPanelIdState,
      transitionStatus
    }), [defaultPanelId, disabled2, handleTrigger, mounted, open3, panelId, setMounted, setOpen, setPanelIdState, transitionStatus]);
  }

  // node_modules/@base-ui/react/collapsible/root/CollapsibleRootContext.mjs
  var React14 = __toESM(require_react(), 1);
  var CollapsibleRootContext = /* @__PURE__ */ React14.createContext(void 0);
  if (true) CollapsibleRootContext.displayName = "CollapsibleRootContext";
  function useCollapsibleRootContext() {
    const context = React14.useContext(CollapsibleRootContext);
    if (context === void 0) {
      throw new Error(true ? "Base UI: CollapsibleRootContext is missing. Collapsible parts must be placed within <Collapsible.Root>." : formatErrorMessage_default(15));
    }
    return context;
  }

  // node_modules/@base-ui/react/internals/composite/list/useCompositeListItem.mjs
  var React15 = __toESM(require_react(), 1);
  function useCompositeListItem(params = {}) {
    const {
      guess,
      label,
      metadata,
      textRef,
      index: externalIndex
    } = params;
    const {
      register: register5,
      unregister,
      subscribeMapChange,
      nextIndexRef
    } = useCompositeListContext();
    const indexRef = React15.useRef(-1);
    const [internalIndex, setInternalIndex] = React15.useState(externalIndex == null && guess ? () => {
      if (indexRef.current === -1) {
        const newIndex = nextIndexRef.current;
        nextIndexRef.current += 1;
        indexRef.current = newIndex;
      }
      return indexRef.current;
    } : -1);
    const index3 = externalIndex ?? internalIndex;
    const componentRef = React15.useRef(null);
    const ref = React15.useCallback((node) => {
      const previousNode = componentRef.current;
      if (previousNode) {
        unregister(previousNode);
      }
      componentRef.current = node;
      if (node) {
        register5(node, {
          metadata: metadata ?? null,
          index: externalIndex ?? null,
          label,
          textRef
        });
      }
    }, [externalIndex, register5, unregister, metadata, label, textRef]);
    useIsoLayoutEffect(() => {
      if (externalIndex != null) {
        return void 0;
      }
      return subscribeMapChange((map) => {
        const i2 = componentRef.current ? map.get(componentRef.current)?.index : null;
        if (i2 != null) {
          setInternalIndex(i2);
        }
      });
    }, [externalIndex, subscribeMapChange]);
    return {
      ref,
      index: index3
    };
  }

  // node_modules/@base-ui/react/internals/TransitionStatusDataAttributes.mjs
  var TransitionStatusDataAttributes_exports = {};
  __export(TransitionStatusDataAttributes_exports, {
    endingStyle: () => endingStyle,
    startingStyle: () => startingStyle
  });
  var startingStyle = "data-starting-style";
  var endingStyle = "data-ending-style";

  // node_modules/@base-ui/react/internals/stateAttributesMapping.mjs
  var STARTING_HOOK = {
    [startingStyle]: ""
  };
  var ENDING_HOOK = {
    [endingStyle]: ""
  };
  var transitionStatusMapping = {
    transitionStatus(value) {
      if (value === "starting") {
        return STARTING_HOOK;
      }
      if (value === "ending") {
        return ENDING_HOOK;
      }
      return null;
    }
  };

  // node_modules/@base-ui/react/collapsible/panel/CollapsiblePanelDataAttributes.mjs
  var open = "data-open";
  var closed = "data-closed";
  var startingStyle2 = TransitionStatusDataAttributes_exports.startingStyle;
  var endingStyle2 = TransitionStatusDataAttributes_exports.endingStyle;

  // node_modules/@base-ui/react/collapsible/trigger/CollapsibleTriggerDataAttributes.mjs
  var panelOpen = "data-panel-open";

  // node_modules/@base-ui/react/utils/collapsibleOpenStateMapping.mjs
  var PANEL_OPEN_HOOK = {
    [open]: ""
  };
  var PANEL_CLOSED_HOOK = {
    [closed]: ""
  };
  var triggerOpenStateMapping = {
    open(value) {
      if (value) {
        return {
          [panelOpen]: ""
        };
      }
      return null;
    }
  };
  var collapsibleOpenStateMapping = {
    open(value) {
      if (value) {
        return PANEL_OPEN_HOOK;
      }
      return PANEL_CLOSED_HOOK;
    }
  };

  // node_modules/@base-ui/react/internals/use-button/useButton.mjs
  var React18 = __toESM(require_react(), 1);

  // node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
  function hasWindow() {
    return typeof window !== "undefined";
  }
  function getNodeName(node) {
    if (isNode(node)) {
      return (node.nodeName || "").toLowerCase();
    }
    return "#document";
  }
  function getWindow(node) {
    var _node$ownerDocument;
    return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
  }
  function getDocumentElement(node) {
    var _ref;
    return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;
  }
  function isNode(value) {
    if (!hasWindow()) {
      return false;
    }
    return value instanceof Node || value instanceof getWindow(value).Node;
  }
  function isElement(value) {
    if (!hasWindow()) {
      return false;
    }
    return value instanceof Element || value instanceof getWindow(value).Element;
  }
  function isHTMLElement(value) {
    if (!hasWindow()) {
      return false;
    }
    return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;
  }
  function isShadowRoot(value) {
    if (!hasWindow() || typeof ShadowRoot === "undefined") {
      return false;
    }
    return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
  }
  function isOverflowElement(element) {
    const {
      overflow,
      overflowX,
      overflowY,
      display
    } = getComputedStyle2(element);
    return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents";
  }
  function isTableElement(element) {
    return /^(table|td|th)$/.test(getNodeName(element));
  }
  function isTopLayer(element) {
    try {
      if (element.matches(":popover-open")) {
        return true;
      }
    } catch (_e) {
    }
    try {
      return element.matches(":modal");
    } catch (_e) {
      return false;
    }
  }
  var willChangeRe = /transform|translate|scale|rotate|perspective|filter/;
  var containRe = /paint|layout|strict|content/;
  var isNotNone = (value) => !!value && value !== "none";
  var isWebKitValue;
  function isContainingBlock(elementOrCss) {
    const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss;
    return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || "") || containRe.test(css.contain || "");
  }
  function getContainingBlock(element) {
    let currentNode = getParentNode(element);
    while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
      if (isContainingBlock(currentNode)) {
        return currentNode;
      } else if (isTopLayer(currentNode)) {
        return null;
      }
      currentNode = getParentNode(currentNode);
    }
    return null;
  }
  function isWebKit() {
    if (isWebKitValue == null) {
      isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none");
    }
    return isWebKitValue;
  }
  function isLastTraversableNode(node) {
    return /^(html|body|#document)$/.test(getNodeName(node));
  }
  function getComputedStyle2(element) {
    return getWindow(element).getComputedStyle(element);
  }
  function getNodeScroll(element) {
    if (isElement(element)) {
      return {
        scrollLeft: element.scrollLeft,
        scrollTop: element.scrollTop
      };
    }
    return {
      scrollLeft: element.scrollX,
      scrollTop: element.scrollY
    };
  }
  function getParentNode(node) {
    if (getNodeName(node) === "html") {
      return node;
    }
    const result = (
      // Step into the shadow DOM of the parent of a slotted node.
      node.assignedSlot || // DOM Element detected.
      node.parentNode || // ShadowRoot detected.
      isShadowRoot(node) && node.host || // Fallback.
      getDocumentElement(node)
    );
    return isShadowRoot(result) ? result.host : result;
  }
  function getNearestOverflowAncestor(node) {
    const parentNode = getParentNode(node);
    if (isLastTraversableNode(parentNode)) {
      return (node.ownerDocument || node).body;
    }
    if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
      return parentNode;
    }
    return getNearestOverflowAncestor(parentNode);
  }
  function getOverflowAncestors(node, list, traverseIframes) {
    var _node$ownerDocument2;
    if (list === void 0) {
      list = [];
    }
    if (traverseIframes === void 0) {
      traverseIframes = true;
    }
    const scrollableAncestor = getNearestOverflowAncestor(node);
    const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);
    const win = getWindow(scrollableAncestor);
    if (isBody) {
      const frameElement = getFrameElement(win);
      return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
    } else {
      return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
    }
  }
  function getFrameElement(win) {
    return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
  }

  // node_modules/@base-ui/react/internals/composite/root/CompositeRootContext.mjs
  var React16 = __toESM(require_react(), 1);
  var CompositeRootContext = /* @__PURE__ */ React16.createContext(void 0);
  if (true) CompositeRootContext.displayName = "CompositeRootContext";
  function useCompositeRootContext(optional = false) {
    const context = React16.useContext(CompositeRootContext);
    if (context === void 0 && !optional) {
      throw new Error(true ? "Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>." : formatErrorMessage_default(16));
    }
    return context;
  }

  // node_modules/@base-ui/react/utils/useFocusableWhenDisabled.mjs
  var React17 = __toESM(require_react(), 1);
  function useFocusableWhenDisabled(parameters) {
    const {
      focusableWhenDisabled,
      disabled: disabled2,
      composite = false,
      tabIndex: tabIndexProp = 0,
      isNativeButton
    } = parameters;
    const isFocusableComposite = composite && focusableWhenDisabled !== false;
    const isNonFocusableComposite = composite && focusableWhenDisabled === false;
    const props = React17.useMemo(() => {
      const additionalProps = {
        // allow Tabbing away from focusableWhenDisabled elements
        onKeyDown(event) {
          if (disabled2 && focusableWhenDisabled && event.key !== "Tab") {
            event.preventDefault();
          }
        }
      };
      if (!composite) {
        additionalProps.tabIndex = tabIndexProp;
        if (!isNativeButton && disabled2) {
          additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1;
        }
      }
      if (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled2) {
        additionalProps["aria-disabled"] = disabled2;
      }
      if (isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite)) {
        additionalProps.disabled = disabled2;
      }
      return additionalProps;
    }, [composite, disabled2, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp]);
    return {
      props
    };
  }

  // node_modules/@base-ui/utils/owner.mjs
  function ownerDocument(node) {
    return node?.ownerDocument || document;
  }

  // node_modules/@base-ui/react/utils/dispatchClickWithModifiers.mjs
  function dispatchClickWithModifiers(target, sourceEvent, {
    detail = 0
  } = {}) {
    target.dispatchEvent(new (getWindow(target)).PointerEvent("click", {
      bubbles: true,
      cancelable: true,
      composed: true,
      detail,
      shiftKey: sourceEvent.shiftKey,
      ctrlKey: sourceEvent.ctrlKey,
      altKey: sourceEvent.altKey,
      metaKey: sourceEvent.metaKey
    }));
  }

  // node_modules/@base-ui/react/internals/use-button/useButton.mjs
  function useButton(parameters = {}) {
    const {
      disabled: disabled2 = false,
      focusableWhenDisabled,
      tabIndex = 0,
      native: isNativeButton = true,
      composite: compositeProp
    } = parameters;
    const elementRef = React18.useRef(null);
    const compositeRootContext = useCompositeRootContext(true);
    const isCompositeItem = compositeProp ?? compositeRootContext !== void 0;
    const {
      props: focusableWhenDisabledProps
    } = useFocusableWhenDisabled({
      focusableWhenDisabled,
      disabled: disabled2,
      composite: isCompositeItem,
      tabIndex,
      isNativeButton
    });
    if (true) {
      React18.useEffect(() => {
        if (!elementRef.current) {
          return;
        }
        const isButtonTag = isButtonElement(elementRef.current);
        if (isNativeButton) {
          if (!isButtonTag) {
            const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
            const message2 = "A component that acts as a button expected a native <button> because the `nativeButton` prop is true. Rendering a non-<button> removes native button semantics, which can impact forms and accessibility. Use a real <button> in the `render` prop, or set `nativeButton` to `false`.";
            error(`${message2}${ownerStackMessage}`);
          }
        } else if (isButtonTag) {
          const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
          const message2 = "A component that acts as a button expected a non-<button> because the `nativeButton` prop is false. Rendering a <button> keeps native behavior while Base UI applies non-native attributes and handlers, which can add unintended extra attributes (such as `role` or `aria-disabled`). Use a non-<button> in the `render` prop, or set `nativeButton` to `true`.";
          error(`${message2}${ownerStackMessage}`);
        }
      }, [isNativeButton]);
    }
    const updateDisabled = React18.useCallback(() => {
      const element = elementRef.current;
      if (!isButtonElement(element)) {
        return;
      }
      if (isCompositeItem && disabled2 && focusableWhenDisabledProps.disabled === void 0 && element.disabled) {
        element.disabled = false;
      }
    }, [disabled2, focusableWhenDisabledProps.disabled, isCompositeItem]);
    useIsoLayoutEffect(updateDisabled, [updateDisabled]);
    const getButtonProps = React18.useCallback((externalProps = {}) => {
      const {
        onClick: externalOnClick,
        onMouseDown: externalOnMouseDown,
        onKeyUp: externalOnKeyUp,
        onKeyDown: externalOnKeyDown,
        onPointerDown: externalOnPointerDown,
        ...otherExternalProps
      } = externalProps;
      return mergeProps({
        onClick(event) {
          if (disabled2) {
            event.preventDefault();
            return;
          }
          externalOnClick?.(event);
        },
        onMouseDown(event) {
          if (!disabled2) {
            externalOnMouseDown?.(event);
          }
        },
        onKeyDown(event) {
          if (disabled2) {
            return;
          }
          makeEventPreventable(event);
          externalOnKeyDown?.(event);
          if (event.baseUIHandlerPrevented) {
            return;
          }
          const isCurrentTarget = event.target === event.currentTarget;
          const currentTarget = event.currentTarget;
          const isButton2 = isButtonElement(currentTarget);
          const isLink = !isNativeButton && isValidLinkElement(currentTarget);
          const shouldClick = isCurrentTarget && (isNativeButton ? isButton2 : !isLink);
          const isEnterKey = event.key === "Enter";
          const isSpaceKey = event.key === " ";
          const role = currentTarget.getAttribute("role");
          const isTextNavigationRole = role?.startsWith("menuitem") || role === "option" || role === "gridcell";
          if (isCurrentTarget && isCompositeItem && isSpaceKey) {
            if (event.defaultPrevented && isTextNavigationRole) {
              return;
            }
            event.preventDefault();
            if (!isNativeButton || isButton2) {
              event.preventBaseUIHandler();
              dispatchClickWithModifiers(currentTarget, event);
            }
            return;
          }
          if (!shouldClick || isNativeButton || !isSpaceKey && !isEnterKey) {
            if (isCurrentTarget && isLink && isSpaceKey) {
              event.preventDefault();
            }
            return;
          }
          if (event.defaultPrevented) {
            return;
          }
          event.preventDefault();
          if (isEnterKey) {
            event.preventBaseUIHandler();
            dispatchClickWithModifiers(currentTarget, event);
          }
        },
        onKeyUp(event) {
          if (disabled2) {
            return;
          }
          makeEventPreventable(event);
          externalOnKeyUp?.(event);
          if (event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === " ") {
            event.preventDefault();
            return;
          }
          if (event.baseUIHandlerPrevented) {
            return;
          }
          if (event.target === event.currentTarget && !isNativeButton && !isCompositeItem && !event.defaultPrevented && event.key === " ") {
            event.preventBaseUIHandler();
            dispatchClickWithModifiers(event.currentTarget, event);
          }
        },
        onPointerDown(event) {
          if (disabled2) {
            event.preventDefault();
            return;
          }
          externalOnPointerDown?.(event);
        }
      }, isNativeButton ? {
        type: "button"
      } : {
        role: "button"
      }, focusableWhenDisabledProps, otherExternalProps);
    }, [disabled2, focusableWhenDisabledProps, isCompositeItem, isNativeButton]);
    const buttonRef = useStableCallback((element) => {
      elementRef.current = element;
      updateDisabled();
    });
    return {
      getButtonProps,
      buttonRef
    };
  }
  function isButtonElement(elem) {
    return isHTMLElement(elem) && elem.tagName === "BUTTON";
  }
  function isValidLinkElement(elem) {
    return isHTMLElement(elem) && elem.tagName === "A" && Boolean(elem.href);
  }

  // node_modules/@base-ui/react/collapsible/panel/useCollapsiblePanel.mjs
  var React20 = __toESM(require_react(), 1);

  // node_modules/@base-ui/utils/addEventListener.mjs
  function addEventListener(target, type, listener, options) {
    target.addEventListener(type, listener, options);
    return () => {
      target.removeEventListener(type, listener, options);
    };
  }

  // node_modules/@base-ui/utils/useValueAsRef.mjs
  function useValueAsRef(value) {
    const latest = useRefWithInit(createLatestRef, value).current;
    latest.next = value;
    useIsoLayoutEffect(latest.effect);
    return latest;
  }
  function createLatestRef(value) {
    const latest = {
      current: value,
      next: value,
      effect: () => {
        latest.current = latest.next;
      }
    };
    return latest;
  }

  // node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs
  var React19 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/internals/useAnimationsFinished.mjs
  var ReactDOM = __toESM(require_react_dom(), 1);

  // node_modules/@base-ui/react/utils/resolveRef.mjs
  function resolveRef(maybeRef) {
    if (maybeRef == null) {
      return maybeRef;
    }
    return "current" in maybeRef ? maybeRef.current : maybeRef;
  }

  // node_modules/@base-ui/react/internals/useAnimationsFinished.mjs
  var pendingCallbacks = null;
  function flushBeforePaint(fn) {
    if (!pendingCallbacks) {
      const callbacks = [];
      pendingCallbacks = callbacks;
      queueMicrotask(() => {
        pendingCallbacks = null;
        ReactDOM.flushSync(() => {
          for (const callback of callbacks) {
            callback();
          }
        });
      });
    }
    pendingCallbacks.push(fn);
  }
  function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, batch2 = false) {
    const frame = useAnimationFrame();
    return useStableCallback((fnToExecute, signal = null) => {
      frame.cancel();
      const element = resolveRef(elementOrRef);
      if (element == null) {
        return;
      }
      const resolvedElement = element;
      const done = () => {
        if (!batch2) {
          ReactDOM.flushSync(fnToExecute);
          return;
        }
        flushBeforePaint(() => {
          if (!signal?.aborted) {
            fnToExecute();
          }
        });
      };
      if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) {
        fnToExecute();
        return;
      }
      function exec() {
        Promise.all(resolvedElement.getAnimations().map((animation) => animation.finished)).then(() => {
          if (!signal?.aborted) {
            done();
          }
        }, () => {
          if (signal?.aborted) {
            return;
          }
          const currentAnimations = resolvedElement.getAnimations();
          if (currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) {
            exec();
            return;
          }
          done();
        });
      }
      if (waitForStartingStyleRemoved) {
        const startingStyleAttribute = startingStyle;
        if (!resolvedElement.hasAttribute(startingStyleAttribute)) {
          frame.request(exec);
          return;
        }
        const attributeObserver = new MutationObserver(() => {
          if (!resolvedElement.hasAttribute(startingStyleAttribute)) {
            attributeObserver.disconnect();
            exec();
          }
        });
        attributeObserver.observe(resolvedElement, {
          attributes: true,
          attributeFilter: [startingStyleAttribute]
        });
        signal?.addEventListener("abort", () => attributeObserver.disconnect(), {
          once: true
        });
        return;
      }
      frame.request(exec);
    });
  }

  // node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs
  function useOpenChangeComplete(parameters) {
    const {
      enabled = true,
      open: open3,
      ref,
      batch: batch2 = false,
      onComplete: onCompleteParam
    } = parameters;
    const onComplete = useStableCallback(onCompleteParam);
    const runOnceAnimationsFinish = useAnimationsFinished(ref, open3, batch2);
    React19.useEffect(() => {
      if (!enabled) {
        return void 0;
      }
      const abortController = new AbortController();
      runOnceAnimationsFinish(onComplete, abortController.signal);
      return () => {
        abortController.abort();
      };
    }, [enabled, open3, onComplete, runOnceAnimationsFinish]);
  }

  // node_modules/@base-ui/react/collapsible/panel/useCollapsiblePanel.mjs
  var EMPTY_DIMENSIONS = {
    height: void 0,
    width: void 0
  };
  function useCollapsiblePanel(parameters) {
    const {
      externalRef,
      hiddenUntilFound,
      id: idParam,
      keepMounted,
      mounted,
      onOpenChange,
      open: open3,
      setMounted,
      setOpen,
      transitionStatus
    } = parameters;
    const panelRef = React20.useRef(null);
    const animationTypeRef = React20.useRef(null);
    const [dimensions, setDimensionsUnwrapped] = React20.useState(EMPTY_DIMENSIONS);
    const lastMeasuredDimensionsRef = React20.useRef(EMPTY_DIMENSIONS);
    const shouldSkipNextOpenRef = React20.useRef(false);
    const shouldPreventMountAnimationRef = React20.useRef(open3);
    const shouldPreventActivityResumeAnimationRef = React20.useRef(false);
    const [forcePanelIdle, setForcePanelIdle] = React20.useState(false);
    const pendingTemporaryStyleRestoreRef = React20.useRef(null);
    const mergedPanelRef = useMergedRefs(externalRef, panelRef);
    const latestOpenRef = useValueAsRef(open3);
    const runOnceCloseAnimationsFinish = useAnimationsFinished(panelRef);
    const hidden = !open3 && !mounted;
    const panelTransitionStatus = forcePanelIdle ? "idle" : transitionStatus;
    const shouldPreventOpenAnimation = open3 && // These 2 refs are safe to read in render, they are only written from committed
    // layout/effect paths and gate one-shot motion suppression for the next open
    // lifecycle. They intentionally expose the last committed motion snapshot.
    (shouldPreventMountAnimationRef.current || shouldPreventActivityResumeAnimationRef.current);
    const renderedDimensions = !open3 && mounted && // These 2 refs are also safe to read in render, both hold the last committed
    // animation mode and measurement. This fallback only restores a previously
    // measured pixel size after the live dimensions state has been reset back to `auto`.
    animationTypeRef.current === "css-animation" && dimensions.height === void 0 && dimensions.width === void 0 ? lastMeasuredDimensionsRef.current : dimensions;
    const shouldPersistHiddenTransitionStyles = hiddenUntilFound && hidden && animationTypeRef.current !== "css-animation";
    const setDimensions = useStableCallback((nextDimensions, shouldCacheMeasurement = true) => {
      if (shouldCacheMeasurement) {
        lastMeasuredDimensionsRef.current = nextDimensions;
      }
      setDimensionsUnwrapped(nextDimensions);
    });
    const restorePendingTemporaryStyle = useStableCallback(() => {
      pendingTemporaryStyleRestoreRef.current?.();
      pendingTemporaryStyleRestoreRef.current = null;
    });
    const setPendingTemporaryStyleRestore = useStableCallback((restore) => {
      restorePendingTemporaryStyle();
      pendingTemporaryStyleRestoreRef.current = () => {
        pendingTemporaryStyleRestoreRef.current = null;
        restore();
      };
    });
    const markActivityResumeAnimationSuppressed = useStableCallback(() => {
      if (open3 && mounted && animationTypeRef.current === "css-animation") {
        shouldPreventActivityResumeAnimationRef.current = true;
      }
    });
    useIsoLayoutEffect(() => {
      if (!forcePanelIdle || transitionStatus === "starting") {
        return;
      }
      setForcePanelIdle(false);
    }, [forcePanelIdle, transitionStatus]);
    React20.useEffect(() => {
      return () => {
        markActivityResumeAnimationSuppressed();
        restorePendingTemporaryStyle();
      };
    }, [markActivityResumeAnimationSuppressed, restorePendingTemporaryStyle]);
    useIsoLayoutEffect(() => {
      const panel = panelRef.current;
      if (!panel) {
        return void 0;
      }
      if (!open3 && pendingTemporaryStyleRestoreRef.current) {
        restorePendingTemporaryStyle();
      }
      const animationType = getAnimationType(panel, shouldPreventOpenAnimation);
      animationTypeRef.current = animationType;
      if (open3 && transitionStatus === "idle" && shouldPreventMountAnimationRef.current && animationType === "css-animation") {
        lastMeasuredDimensionsRef.current = getDimensions(panel);
        return void 0;
      }
      if (open3 && transitionStatus === "starting") {
        const skipNextOpen = shouldSkipNextOpenRef.current;
        shouldSkipNextOpenRef.current = false;
        if (animationType === "none") {
          setDimensions(getDimensions(panel));
          setForcePanelIdle(true);
          return void 0;
        }
        if (animationType === "css-transition") {
          const restoreLayoutStyles = resetLayoutStyles(panel);
          setDimensions(getDimensions(panel));
          if (!skipNextOpen) {
            return restoreLayoutStyles;
          }
          const restoreTransitionDuration = setTemporaryStyle(panel, "transition-duration", "0s");
          setPendingTemporaryStyleRestore(restoreTransitionDuration);
          setForcePanelIdle(true);
          return restoreLayoutStyles;
        }
        setDimensions(getDimensions(panel));
        const restoreAnimationName = setTemporaryStyle(panel, "animation-name", "none");
        if (!skipNextOpen) {
          restoreAnimationName();
          return void 0;
        }
        const restoreAnimationDuration = setTemporaryStyle(panel, "animation-duration", "0s");
        restoreAnimationName();
        setPendingTemporaryStyleRestore(restoreAnimationDuration);
        setForcePanelIdle(true);
        return void 0;
      }
      if (!open3 && mounted && (transitionStatus === "idle" || transitionStatus === "starting")) {
        shouldPreventMountAnimationRef.current = false;
        shouldPreventActivityResumeAnimationRef.current = false;
        if (animationType === "none") {
          setDimensions(EMPTY_DIMENSIONS, false);
          setMounted(false);
          return void 0;
        }
        setDimensions(getDimensions(panel));
        return void 0;
      }
      if (transitionStatus !== "ending") {
        return void 0;
      }
      if (animationType === "none") {
        setMounted(false);
        return void 0;
      }
      const nextDimensions = getDimensions(panel);
      const hasMeasuredSize = nextDimensions.height > 0 || nextDimensions.width > 0;
      if (!hasMeasuredSize) {
        setMounted(false);
        return void 0;
      }
      setDimensions(nextDimensions);
      if (animationType === "css-animation") {
        const restoreAnimationName = setTemporaryStyle(panel, "animation-name", "none");
        restoreAnimationName();
      }
      return void 0;
    }, [mounted, open3, restorePendingTemporaryStyle, setDimensions, setMounted, setPendingTemporaryStyleRestore, shouldPreventOpenAnimation, transitionStatus]);
    useOpenChangeComplete({
      enabled: open3 && mounted && panelTransitionStatus === "idle",
      open: true,
      ref: panelRef,
      onComplete() {
        if (!open3) {
          return;
        }
        setDimensions(EMPTY_DIMENSIONS, false);
      }
    });
    React20.useEffect(() => {
      if (open3 || !mounted || panelTransitionStatus !== "ending") {
        return void 0;
      }
      const panel = panelRef.current;
      if (!panel) {
        return void 0;
      }
      const abortController = new AbortController();
      let endingStyleFrame = -1;
      function handleComplete() {
        if (latestOpenRef.current) {
          return;
        }
        setMounted(false);
        setDimensions(EMPTY_DIMENSIONS, false);
      }
      endingStyleFrame = AnimationFrame.request(() => {
        runOnceCloseAnimationsFinish(handleComplete, abortController.signal);
      });
      return () => {
        AnimationFrame.cancel(endingStyleFrame);
        abortController.abort();
      };
    }, [latestOpenRef, mounted, open3, panelTransitionStatus, runOnceCloseAnimationsFinish, setDimensions, setMounted]);
    useIsoLayoutEffect(() => {
      const panel = panelRef.current;
      if (!panel || !hiddenUntilFound || !hidden) {
        return;
      }
      panel.setAttribute("hidden", "until-found");
    }, [hidden, hiddenUntilFound]);
    React20.useEffect(function registerBeforeMatchListener() {
      const panel = panelRef.current;
      if (!panel) {
        return void 0;
      }
      function handleBeforeMatch(event) {
        const eventDetails = createChangeEventDetails(reason_parts_exports.none, event);
        onOpenChange(true, eventDetails);
        if (eventDetails.isCanceled) {
          return;
        }
        shouldSkipNextOpenRef.current = true;
        setOpen(true);
      }
      return addEventListener(panel, "beforematch", handleBeforeMatch);
    }, [onOpenChange, setOpen]);
    const shouldRender = keepMounted || hiddenUntilFound || mounted || open3;
    return {
      height: renderedDimensions.height,
      props: {
        ...shouldPersistHiddenTransitionStyles ? {
          [startingStyle2]: ""
        } : void 0,
        hidden,
        id: idParam
      },
      ref: mergedPanelRef,
      shouldPreventOpenAnimation,
      shouldRender,
      transitionStatus: panelTransitionStatus,
      width: renderedDimensions.width
    };
  }
  function getDimensions(element) {
    return {
      height: element.scrollHeight,
      width: element.scrollWidth
    };
  }
  function getAnimationType(element, hasSuppressedMountAnimation) {
    const panelStyles = getWindow(element).getComputedStyle(element);
    const hasAnimation = (panelStyles.animationName.split(",").map((name2) => name2.trim()).some((name2) => name2 !== "" && name2 !== "none") || hasSuppressedMountAnimation) && hasNonZeroDuration(panelStyles.animationDuration);
    const hasTransition = hasNonZeroDuration(panelStyles.transitionDuration);
    if (hasAnimation && hasTransition) {
      if (true) {
        warn("CSS transitions and CSS animations both detected on Collapsible or Accordion panel.", "Only one of either animation type should be used.");
      }
      return "css-transition";
    }
    if (hasTransition) {
      return "css-transition";
    }
    if (hasAnimation) {
      return "css-animation";
    }
    return "none";
  }
  function hasNonZeroDuration(value) {
    return value.split(",").map((part) => part.trim()).some((part) => part !== "" && Number.parseFloat(part) > 0);
  }
  function setTemporaryStyle(element, property, value) {
    const previousValue = element.style.getPropertyValue(property);
    const previousPriority = element.style.getPropertyPriority(property);
    element.style.setProperty(property, value);
    return () => {
      if (previousValue === "") {
        element.style.removeProperty(property);
        return;
      }
      element.style.setProperty(property, previousValue, previousPriority);
    };
  }
  function resetLayoutStyles(element) {
    const originalLayoutStyles = {
      "justify-content": element.style.justifyContent,
      "align-items": element.style.alignItems,
      "align-content": element.style.alignContent,
      "justify-items": element.style.justifyItems
    };
    Object.keys(originalLayoutStyles).forEach((key) => {
      element.style.setProperty(key, "initial", "important");
    });
    function restoreLayoutStyles() {
      Object.entries(originalLayoutStyles).forEach(([key, value]) => {
        if (value === "") {
          element.style.removeProperty(key);
          return;
        }
        element.style.setProperty(key, value);
      });
    }
    const frame = AnimationFrame.request(restoreLayoutStyles);
    return () => {
      AnimationFrame.cancel(frame);
      restoreLayoutStyles();
    };
  }

  // node_modules/@base-ui/utils/platform/parts.mjs
  var parts_exports = {};
  __export(parts_exports, {
    engine: () => engine_exports,
    env: () => env_exports,
    mediaQuery: () => media_query_exports,
    os: () => os_exports,
    screenReader: () => screen_reader_exports
  });

  // node_modules/@base-ui/utils/platform/os.mjs
  var os_exports = {};
  __export(os_exports, {
    android: () => android,
    apple: () => apple,
    ios: () => ios,
    linux: () => linux,
    mac: () => mac,
    windows: () => windows
  });

  // node_modules/@base-ui/utils/platform/shared.mjs
  function readRawData() {
    if (typeof navigator === "undefined") {
      return {
        userAgent: "",
        platform: "",
        maxTouchPoints: 0
      };
    }
    if (true) {
      const uaData = navigator.userAgentData;
      if (uaData && Array.isArray(uaData.brands)) {
        return {
          userAgent: uaData.brands.map(({
            brand,
            version: version2
          }) => `${brand}/${version2}`).join(" "),
          platform: uaData.platform ?? navigator.platform ?? "",
          maxTouchPoints: navigator.maxTouchPoints ?? 0
        };
      }
    }
    return {
      userAgent: navigator.userAgent,
      platform: navigator.platform ?? "",
      maxTouchPoints: navigator.maxTouchPoints ?? 0
    };
  }
  var {
    userAgent,
    platform,
    maxTouchPoints
  } = readRawData();
  var lowerUserAgent = userAgent.toLowerCase();
  var lowerPlatform = platform.toLowerCase();

  // node_modules/@base-ui/utils/platform/os.mjs
  var ios = /^i(os$|p)/.test(lowerPlatform) || lowerPlatform === "macintel" && maxTouchPoints > 1;
  var ANDROID_STRING = "android";
  var android = lowerPlatform === ANDROID_STRING || lowerUserAgent.includes(ANDROID_STRING);
  var mac = !ios && lowerPlatform.startsWith("mac");
  var windows = lowerPlatform.startsWith("win");
  var linux = !android && /^(linux|chrome os)/.test(lowerPlatform);
  var apple = mac || ios;

  // node_modules/@base-ui/utils/platform/engine.mjs
  var engine_exports = {};
  __export(engine_exports, {
    blink: () => blink,
    gecko: () => gecko,
    webkit: () => webkit
  });
  var webkit = typeof CSS !== "undefined" && !!CSS.supports?.("-webkit-backdrop-filter:none");
  var gecko = !webkit && lowerUserAgent.includes("firefox");
  var blink = !webkit && lowerUserAgent.includes("chrom");

  // node_modules/@base-ui/utils/platform/screen-reader.mjs
  var screen_reader_exports = {};
  __export(screen_reader_exports, {
    voiceOver: () => voiceOver
  });
  var voiceOver = apple;

  // node_modules/@base-ui/utils/platform/env.mjs
  var env_exports = {};
  __export(env_exports, {
    jsdom: () => jsdom
  });
  var jsdom = /jsdom|happydom/.test(lowerUserAgent);

  // node_modules/@base-ui/utils/platform/media-query.mjs
  var media_query_exports = {};
  __export(media_query_exports, {
    iOS: () => iOS
  });
  var iOS = "@supports (-webkit-touch-callout: none)";

  // node_modules/@base-ui/utils/useTimeout.mjs
  var EMPTY2 = 0;
  var Timeout = class _Timeout {
    static create() {
      return new _Timeout();
    }
    currentId = EMPTY2;
    /**
     * Executes `fn` after `delay`, clearing any previously scheduled call.
     */
    start(delay, fn) {
      this.clear();
      this.currentId = setTimeout(() => {
        this.currentId = EMPTY2;
        fn();
      }, delay);
    }
    isStarted() {
      return this.currentId !== EMPTY2;
    }
    clear = () => {
      if (this.currentId !== EMPTY2) {
        clearTimeout(this.currentId);
        this.currentId = EMPTY2;
      }
    };
    disposeEffect = () => {
      return this.clear;
    };
  };
  function useTimeout() {
    const timeout = useRefWithInit(Timeout.create).current;
    useOnMount(timeout.disposeEffect);
    return timeout;
  }

  // node_modules/@base-ui/utils/useScrollLock.mjs
  var originalHtmlStyles = {};
  var originalBodyStyles = {};
  var originalHtmlScrollBehavior = "";
  function getViewportScroller(html, body) {
    return isOverflowElement(html) ? html : body;
  }
  function isPageScrollLocked(win, html, body) {
    return /hidden|clip/.test(win.getComputedStyle(getViewportScroller(html, body)).overflowY);
  }
  function hasInsetScrollbars(referenceElement) {
    if (typeof document === "undefined") {
      return false;
    }
    const doc = ownerDocument(referenceElement);
    const win = getWindow(doc);
    return win.innerWidth - doc.documentElement.clientWidth > 0;
  }
  function supportsStableScrollbarGutter(referenceElement) {
    const supported = typeof CSS !== "undefined" && CSS.supports && CSS.supports("scrollbar-gutter", "stable");
    if (!supported || typeof document === "undefined") {
      return false;
    }
    const doc = ownerDocument(referenceElement);
    const html = doc.documentElement;
    const body = doc.body;
    const scrollContainer = getViewportScroller(html, body);
    const originalScrollContainerOverflowY = scrollContainer.style.overflowY;
    const originalHtmlStyleGutter = html.style.scrollbarGutter;
    html.style.scrollbarGutter = "stable";
    scrollContainer.style.overflowY = "scroll";
    const before = scrollContainer.offsetWidth;
    scrollContainer.style.overflowY = "hidden";
    const after = scrollContainer.offsetWidth;
    scrollContainer.style.overflowY = originalScrollContainerOverflowY;
    html.style.scrollbarGutter = originalHtmlStyleGutter;
    return before === after;
  }
  function preventScrollOverlayScrollbars(referenceElement) {
    const doc = ownerDocument(referenceElement);
    const html = doc.documentElement;
    const body = doc.body;
    const elementToLock = getViewportScroller(html, body);
    const originalElementToLockStyles = {
      overflowY: elementToLock.style.overflowY,
      overflowX: elementToLock.style.overflowX
    };
    Object.assign(elementToLock.style, {
      overflowY: "hidden",
      overflowX: "hidden"
    });
    return () => {
      Object.assign(elementToLock.style, originalElementToLockStyles);
    };
  }
  function preventScrollInsetScrollbars(referenceElement) {
    const doc = ownerDocument(referenceElement);
    const html = doc.documentElement;
    const body = doc.body;
    const win = getWindow(html);
    let scrollTop = 0;
    let scrollLeft = 0;
    let updateGutterOnly = false;
    const resizeFrame = AnimationFrame.create();
    if (parts_exports.engine.webkit && (win.visualViewport?.scale ?? 1) !== 1) {
      return () => {
      };
    }
    function lockScroll() {
      const htmlStyles = win.getComputedStyle(html);
      const bodyStyles = win.getComputedStyle(body);
      const htmlScrollbarGutterValue = htmlStyles.scrollbarGutter || "";
      const hasBothEdges = htmlScrollbarGutterValue.includes("both-edges");
      const scrollbarGutterValue = hasBothEdges ? "stable both-edges" : "stable";
      scrollTop = html.scrollTop;
      scrollLeft = html.scrollLeft;
      originalHtmlStyles = {
        scrollbarGutter: html.style.scrollbarGutter,
        overflowY: html.style.overflowY,
        overflowX: html.style.overflowX
      };
      originalHtmlScrollBehavior = html.style.scrollBehavior;
      originalBodyStyles = {
        position: body.style.position,
        height: body.style.height,
        width: body.style.width,
        boxSizing: body.style.boxSizing,
        overflowY: body.style.overflowY,
        overflowX: body.style.overflowX,
        scrollBehavior: body.style.scrollBehavior
      };
      const isScrollableY2 = html.scrollHeight > html.clientHeight;
      const isScrollableX = html.scrollWidth > html.clientWidth;
      const hasConstantOverflowY = htmlStyles.overflowY === "scroll" || bodyStyles.overflowY === "scroll";
      const hasConstantOverflowX = htmlStyles.overflowX === "scroll" || bodyStyles.overflowX === "scroll";
      const scrollbarWidth = Math.max(0, win.innerWidth - body.clientWidth);
      const scrollbarHeight = Math.max(0, win.innerHeight - body.clientHeight);
      const marginY = parseFloat(bodyStyles.marginTop) + parseFloat(bodyStyles.marginBottom);
      const marginX = parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight);
      const elementToLock = getViewportScroller(html, body);
      updateGutterOnly = supportsStableScrollbarGutter(referenceElement);
      if (updateGutterOnly) {
        html.style.scrollbarGutter = scrollbarGutterValue;
        elementToLock.style.overflowY = "hidden";
        elementToLock.style.overflowX = "hidden";
        return;
      }
      Object.assign(html.style, {
        scrollbarGutter: scrollbarGutterValue,
        overflowY: "hidden",
        overflowX: "hidden"
      });
      if (isScrollableY2 || hasConstantOverflowY) {
        html.style.overflowY = "scroll";
      }
      if (isScrollableX || hasConstantOverflowX) {
        html.style.overflowX = "scroll";
      }
      Object.assign(body.style, {
        position: "relative",
        height: marginY || scrollbarHeight ? `calc(100dvh - ${marginY + scrollbarHeight}px)` : "100dvh",
        width: marginX || scrollbarWidth ? `calc(100vw - ${marginX + scrollbarWidth}px)` : "100vw",
        boxSizing: "border-box",
        // Assign the longhands that `cleanup` restores, so nothing is left behind.
        overflowY: "hidden",
        overflowX: "hidden",
        scrollBehavior: "unset"
      });
      body.scrollTop = scrollTop;
      body.scrollLeft = scrollLeft;
      html.setAttribute("data-base-ui-scroll-locked", "");
      html.style.scrollBehavior = "unset";
    }
    function cleanup() {
      Object.assign(html.style, originalHtmlStyles);
      Object.assign(body.style, originalBodyStyles);
      if (!updateGutterOnly) {
        html.scrollTop = scrollTop;
        html.scrollLeft = scrollLeft;
        html.removeAttribute("data-base-ui-scroll-locked");
        html.style.scrollBehavior = originalHtmlScrollBehavior;
      }
    }
    function handleResize() {
      cleanup();
      resizeFrame.request(lockScroll);
    }
    lockScroll();
    const unsubscribeResize = addEventListener(win, "resize", handleResize);
    return () => {
      resizeFrame.cancel();
      cleanup();
      if (typeof win.removeEventListener === "function") {
        unsubscribeResize();
      }
    };
  }
  var ScrollLocker = class {
    lockCount = 0;
    restore = null;
    timeoutLock = Timeout.create();
    timeoutUnlock = Timeout.create();
    acquire(referenceElement) {
      this.lockCount += 1;
      if (this.lockCount === 1 && this.restore === null) {
        this.timeoutLock.start(0, () => this.lock(referenceElement));
      }
      return this.release;
    }
    release = () => {
      this.lockCount -= 1;
      if (this.lockCount === 0 && this.restore) {
        this.timeoutUnlock.start(0, this.unlock);
      }
    };
    unlock = () => {
      if (this.lockCount === 0 && this.restore) {
        this.restore?.();
        this.restore = null;
      }
    };
    lock(referenceElement) {
      if (this.lockCount === 0 || this.restore !== null) {
        return;
      }
      const doc = ownerDocument(referenceElement);
      const html = doc.documentElement;
      const body = doc.body;
      const win = getWindow(html);
      if (isPageScrollLocked(win, html, body)) {
        const observer = new win.MutationObserver(() => {
          if (isPageScrollLocked(win, html, body)) {
            return;
          }
          observer.disconnect();
          this.restore = null;
          this.lock(referenceElement);
        });
        const options = {
          attributes: true
        };
        observer.observe(html, options);
        observer.observe(body, options);
        this.restore = () => observer.disconnect();
        return;
      }
      const hasOverlayScrollbars = parts_exports.os.ios || !hasInsetScrollbars(referenceElement);
      this.restore = hasOverlayScrollbars ? preventScrollOverlayScrollbars(referenceElement) : preventScrollInsetScrollbars(referenceElement);
    }
  };
  var SCROLL_LOCKER = new ScrollLocker();
  function useScrollLock(enabled = true, referenceElement = null) {
    useIsoLayoutEffect(() => {
      if (!enabled) {
        return void 0;
      }
      return SCROLL_LOCKER.acquire(referenceElement);
    }, [enabled, referenceElement]);
  }

  // node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs
  var React21 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/floating-ui-react/utils/event.mjs
  function stopEvent(event) {
    event.preventDefault();
    event.stopPropagation();
  }
  function isReactEvent(event) {
    return "nativeEvent" in event;
  }
  function isVirtualClick(event) {
    if (event.pointerType === "" && event.isTrusted) {
      return true;
    }
    if (parts_exports.os.android && event.pointerType) {
      return event.type === "click" && event.buttons === 1;
    }
    return event.detail === 0 && !event.pointerType;
  }
  function isVirtualPointerEvent(event) {
    if (parts_exports.env.jsdom) {
      return false;
    }
    return !parts_exports.os.android && event.width === 0 && event.height === 0 || parts_exports.os.android && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "mouse" || // iOS VoiceOver returns 0.333• for width/height.
    event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "touch";
  }
  function isMouseLikePointerType(pointerType, strict) {
    const values = ["mouse", "pen"];
    if (!strict) {
      values.push("", void 0);
    }
    return values.includes(pointerType);
  }
  function isClickLikeEvent(event) {
    const type = event.type;
    return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup";
  }

  // node_modules/@base-ui/utils/shadowDom.mjs
  function activeElement(doc) {
    let element = doc.activeElement;
    while (element?.shadowRoot?.activeElement != null) {
      element = element.shadowRoot.activeElement;
    }
    return element;
  }
  function contains(parent, child) {
    if (!parent || !child) {
      return false;
    }
    const rootNode = child.getRootNode?.();
    if (parent.contains(child)) {
      return true;
    }
    if (rootNode && isShadowRoot(rootNode)) {
      let next = child;
      while (next) {
        if (parent === next) {
          return true;
        }
        next = next.parentNode || next.host;
      }
    }
    return false;
  }
  function getTarget(event) {
    if ("composedPath" in event) {
      return event.composedPath()[0] ?? event.target;
    }
    return event.target;
  }

  // node_modules/@base-ui/react/floating-ui-react/utils/constants.mjs
  var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable";
  var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";
  var ARROW_LEFT = "ArrowLeft";
  var ARROW_RIGHT = "ArrowRight";
  var ARROW_UP = "ArrowUp";
  var ARROW_DOWN = "ArrowDown";

  // node_modules/@base-ui/react/utils/CommonPopupDataAttributes.mjs
  var open2 = "data-open";
  var closed2 = "data-closed";
  var anchorHidden = "data-anchor-hidden";

  // node_modules/@base-ui/react/utils/CommonTriggerDataAttributes.mjs
  var CommonTriggerDataAttributes_exports = {};
  __export(CommonTriggerDataAttributes_exports, {
    popupOpen: () => popupOpen,
    pressed: () => pressed
  });
  var popupOpen = "data-popup-open";
  var pressed = "data-pressed";

  // node_modules/@base-ui/react/utils/popupStateMapping.mjs
  var TRIGGER_HOOK = {
    [popupOpen]: ""
  };
  var PRESSABLE_TRIGGER_HOOK = {
    [popupOpen]: "",
    [pressed]: ""
  };
  var POPUP_OPEN_HOOK = {
    [open2]: ""
  };
  var POPUP_CLOSED_HOOK = {
    [closed2]: ""
  };
  var ANCHOR_HIDDEN_HOOK = {
    [anchorHidden]: ""
  };
  var triggerOpenStateMapping2 = {
    open(value) {
      if (value) {
        return TRIGGER_HOOK;
      }
      return null;
    }
  };
  var pressableTriggerOpenStateMapping = {
    open(value) {
      if (value) {
        return PRESSABLE_TRIGGER_HOOK;
      }
      return null;
    }
  };
  var popupStateMapping = {
    open(value) {
      if (value) {
        return POPUP_OPEN_HOOK;
      }
      return POPUP_CLOSED_HOOK;
    },
    anchorHidden(value) {
      if (value) {
        return ANCHOR_HIDDEN_HOOK;
      }
      return null;
    }
  };
  var popupTransitionStateMapping = {
    ...popupStateMapping,
    ...transitionStatusMapping
  };

  // node_modules/@base-ui/react/tooltip/trigger/TooltipTriggerDataAttributes.mjs
  var popupOpen2 = CommonTriggerDataAttributes_exports.popupOpen;
  var triggerDisabled = "data-trigger-disabled";

  // node_modules/@base-ui/react/floating-ui-react/utils/element.mjs
  function isTargetInsideEnabledTrigger(target, triggerElements) {
    if (!isElement(target)) {
      return false;
    }
    const targetElement = target;
    if (triggerElements.hasElement(targetElement)) {
      return !targetElement.hasAttribute(triggerDisabled);
    }
    for (const [, trigger] of triggerElements.entries()) {
      if (contains(trigger, targetElement)) {
        return !trigger.hasAttribute(triggerDisabled);
      }
    }
    return false;
  }
  function isEventTargetWithin(event, node) {
    if (node == null) {
      return false;
    }
    if ("composedPath" in event) {
      return event.composedPath().includes(node);
    }
    const eventAgain = event;
    return eventAgain.target != null && node.contains(eventAgain.target);
  }
  function isRootElement(element) {
    return element.matches("html,body");
  }
  function isTypeableElement(element) {
    return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);
  }
  function isInteractiveElement(element) {
    return element?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${TYPEABLE_SELECTOR}`) != null;
  }
  function isTypeableCombobox(element) {
    if (!element) {
      return false;
    }
    return element.getAttribute("role") === "combobox" && isTypeableElement(element);
  }
  function matchesFocusVisible(element) {
    if (!element || parts_exports.env.jsdom) {
      return true;
    }
    try {
      return element.matches(":focus-visible");
    } catch (_e) {
      return true;
    }
  }
  function getFloatingFocusElement(floatingElement) {
    if (!floatingElement) {
      return null;
    }
    return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(`[${FOCUSABLE_ATTRIBUTE}]`) || floatingElement;
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/useHoverShared.mjs
  function resolveValue(value, pointerType) {
    if (pointerType != null && !isMouseLikePointerType(pointerType)) {
      return 0;
    }
    if (typeof value === "function") {
      return value();
    }
    return value;
  }
  function getDelay(value, prop, pointerType) {
    const result = resolveValue(value, pointerType);
    if (typeof result === "number") {
      return result;
    }
    return result?.[prop];
  }
  function getRestMs(value) {
    if (typeof value === "function") {
      return value();
    }
    return value;
  }
  function isClickLikeOpenEvent(openEventType, interactedInside) {
    return interactedInside || openEventType === "click" || openEventType === "mousedown";
  }
  function isHoverOpenEvent(openEventType) {
    return openEventType?.includes("mouse") && openEventType !== "mousedown";
  }

  // node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs
  var import_jsx_runtime97 = __toESM(require_jsx_runtime(), 1);
  var FloatingDelayGroupContext = /* @__PURE__ */ React21.createContext({
    hasProvider: false,
    timeoutMs: 0,
    delayRef: {
      current: 0
    },
    initialDelayRef: {
      current: 0
    },
    timeout: new Timeout(),
    currentIdRef: {
      current: null
    },
    currentContextRef: {
      current: null
    }
  });
  if (true) FloatingDelayGroupContext.displayName = "FloatingDelayGroupContext";
  function resetDelayRef(delayRef, initialDelayRef) {
    delayRef.current = initialDelayRef.current;
  }
  function FloatingDelayGroup(props) {
    const {
      children,
      delay,
      timeoutMs = 0
    } = props;
    const delayRef = React21.useRef(delay);
    const initialDelayRef = React21.useRef(delay);
    const currentIdRef = React21.useRef(null);
    const currentContextRef = React21.useRef(null);
    const timeout = useTimeout();
    useIsoLayoutEffect(() => {
      initialDelayRef.current = delay;
      if (!currentIdRef.current) {
        delayRef.current = delay;
        return;
      }
      delayRef.current = {
        open: getDelay(delayRef.current, "open"),
        close: getDelay(delay, "close")
      };
    }, [delay, currentIdRef, delayRef, initialDelayRef]);
    return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(FloatingDelayGroupContext.Provider, {
      value: React21.useMemo(() => ({
        hasProvider: true,
        delayRef,
        initialDelayRef,
        currentIdRef,
        timeoutMs,
        currentContextRef,
        timeout
      }), [timeoutMs, timeout]),
      children
    });
  }
  function useDelayGroup(context, options = {
    open: false
  }) {
    const {
      open: open3
    } = options;
    const store4 = "rootStore" in context ? context.rootStore : context;
    const floatingId = store4.useState("floatingId");
    const groupContext = React21.useContext(FloatingDelayGroupContext);
    const {
      currentIdRef,
      delayRef,
      timeoutMs,
      initialDelayRef,
      currentContextRef,
      hasProvider,
      timeout
    } = groupContext;
    const [isInstantPhase, setIsInstantPhase] = React21.useState(false);
    const openRef = React21.useRef(open3);
    useIsoLayoutEffect(() => {
      openRef.current = open3;
    }, [open3]);
    useIsoLayoutEffect(() => {
      function unset() {
        currentContextRef.current?.setIsInstantPhase(false);
        currentIdRef.current = null;
        currentContextRef.current = null;
        delayRef.current = initialDelayRef.current;
        timeout.clear();
      }
      if (!currentIdRef.current) {
        return void 0;
      }
      if (!open3 && currentIdRef.current === floatingId) {
        setIsInstantPhase(false);
        if (timeoutMs) {
          const closingId = floatingId;
          timeout.start(timeoutMs, () => {
            if (store4.select("open") || currentIdRef.current && currentIdRef.current !== closingId) {
              return;
            }
            unset();
          });
          return () => {
            if (openRef.current || currentIdRef.current !== closingId) {
              timeout.clear();
            }
          };
        }
        unset();
      }
      return void 0;
    }, [open3, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeout, store4]);
    useIsoLayoutEffect(() => {
      if (!open3) {
        return;
      }
      const prevContext = currentContextRef.current;
      const prevId = currentIdRef.current;
      timeout.clear();
      currentContextRef.current = {
        onOpenChange: store4.setOpen,
        setIsInstantPhase
      };
      currentIdRef.current = floatingId;
      delayRef.current = {
        open: 0,
        close: getDelay(initialDelayRef.current, "close")
      };
      if (prevId !== null && prevId !== floatingId) {
        setIsInstantPhase(true);
        prevContext?.setIsInstantPhase(true);
        prevContext?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.none));
      } else {
        setIsInstantPhase(false);
        prevContext?.setIsInstantPhase(false);
      }
    }, [open3, floatingId, store4, currentIdRef, delayRef, initialDelayRef, currentContextRef, timeout]);
    useIsoLayoutEffect(() => {
      return () => {
        if (currentIdRef.current === floatingId) {
          currentContextRef.current = null;
          if (!openRef.current) {
            return;
          }
          currentIdRef.current = null;
          resetDelayRef(delayRef, initialDelayRef);
          timeout.clear();
        }
      };
    }, [currentContextRef, currentIdRef, delayRef, floatingId, initialDelayRef, timeout]);
    return React21.useMemo(() => ({
      activeIdRef: currentIdRef,
      hasProvider,
      delayRef,
      isInstantPhase
    }), [currentIdRef, hasProvider, delayRef, isInstantPhase]);
  }

  // node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs
  var React25 = __toESM(require_react(), 1);

  // node_modules/@base-ui/utils/mergeCleanups.mjs
  function mergeCleanups(...cleanups) {
    return () => {
      for (let i2 = 0; i2 < cleanups.length; i2 += 1) {
        const cleanup = cleanups[i2];
        if (cleanup) {
          cleanup();
        }
      }
    };
  }

  // node_modules/@base-ui/react/utils/FocusGuard.mjs
  var React22 = __toESM(require_react(), 1);

  // node_modules/@base-ui/utils/visuallyHidden.mjs
  var visuallyHiddenBase = {
    clipPath: "inset(50%)",
    overflow: "hidden",
    whiteSpace: "nowrap",
    border: 0,
    padding: 0,
    width: 1,
    height: 1,
    margin: -1
  };
  var visuallyHidden = {
    ...visuallyHiddenBase,
    position: "fixed",
    top: 0,
    left: 0
  };
  var visuallyHiddenInput = {
    ...visuallyHiddenBase,
    position: "absolute"
  };

  // node_modules/@base-ui/react/utils/FocusGuard.mjs
  var import_jsx_runtime98 = __toESM(require_jsx_runtime(), 1);
  var FocusGuard = /* @__PURE__ */ React22.forwardRef(function FocusGuard2(props, ref) {
    const [role, setRole] = React22.useState();
    useIsoLayoutEffect(() => {
      if (parts_exports.screenReader.voiceOver && parts_exports.engine.webkit) {
        setRole("button");
      }
    }, []);
    const restProps = {
      tabIndex: 0,
      // Role is only for VoiceOver
      role
    };
    return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", {
      ...props,
      ref,
      style: visuallyHidden,
      "aria-hidden": role ? void 0 : true,
      ...restProps,
      "data-base-ui-focus-guard": ""
    });
  });
  if (true) FocusGuard.displayName = "FocusGuard";

  // node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
  var min = Math.min;
  var max = Math.max;
  var round = Math.round;
  var floor = Math.floor;
  var createCoords = (v3) => ({
    x: v3,
    y: v3
  });
  var oppositeSideMap = {
    left: "right",
    right: "left",
    bottom: "top",
    top: "bottom"
  };
  function clamp(start2, value, end) {
    return max(start2, min(value, end));
  }
  function evaluate(value, param) {
    return typeof value === "function" ? value(param) : value;
  }
  function getSide(placement) {
    return placement.split("-")[0];
  }
  function getAlignment(placement) {
    return placement.split("-")[1];
  }
  function getOppositeAxis(axis) {
    return axis === "x" ? "y" : "x";
  }
  function getAxisLength(axis) {
    return axis === "y" ? "height" : "width";
  }
  function getSideAxis(placement) {
    const firstChar = placement[0];
    return firstChar === "t" || firstChar === "b" ? "y" : "x";
  }
  function getAlignmentAxis(placement) {
    return getOppositeAxis(getSideAxis(placement));
  }
  function getAlignmentSides(placement, rects, rtl) {
    if (rtl === void 0) {
      rtl = false;
    }
    const alignment = getAlignment(placement);
    const alignmentAxis = getAlignmentAxis(placement);
    const length2 = getAxisLength(alignmentAxis);
    let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top";
    if (rects.reference[length2] > rects.floating[length2]) {
      mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
    }
    return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
  }
  function getExpandedPlacements(placement) {
    const oppositePlacement = getOppositePlacement(placement);
    return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
  }
  function getOppositeAlignmentPlacement(placement) {
    return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start");
  }
  var lrPlacement = ["left", "right"];
  var rlPlacement = ["right", "left"];
  var tbPlacement = ["top", "bottom"];
  var btPlacement = ["bottom", "top"];
  function getSideList(side, isStart, rtl) {
    switch (side) {
      case "top":
      case "bottom":
        if (rtl) return isStart ? rlPlacement : lrPlacement;
        return isStart ? lrPlacement : rlPlacement;
      case "left":
      case "right":
        return isStart ? tbPlacement : btPlacement;
      default:
        return [];
    }
  }
  function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
    const alignment = getAlignment(placement);
    let list = getSideList(getSide(placement), direction === "start", rtl);
    if (alignment) {
      list = list.map((side) => side + "-" + alignment);
      if (flipAlignment) {
        list = list.concat(list.map(getOppositeAlignmentPlacement));
      }
    }
    return list;
  }
  function getOppositePlacement(placement) {
    const side = getSide(placement);
    return oppositeSideMap[side] + placement.slice(side.length);
  }
  function expandPaddingObject(padding) {
    var _padding$top, _padding$right, _padding$bottom, _padding$left;
    return {
      top: (_padding$top = padding.top) != null ? _padding$top : 0,
      right: (_padding$right = padding.right) != null ? _padding$right : 0,
      bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0,
      left: (_padding$left = padding.left) != null ? _padding$left : 0
    };
  }
  function getPaddingObject(padding) {
    return typeof padding !== "number" ? expandPaddingObject(padding) : {
      top: padding,
      right: padding,
      bottom: padding,
      left: padding
    };
  }
  function rectToClientRect(rect) {
    const {
      x: x2,
      y: y3,
      width,
      height
    } = rect;
    return {
      width,
      height,
      top: y3,
      left: x2,
      right: x2 + width,
      bottom: y3 + height,
      x: x2,
      y: y3
    };
  }

  // node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs
  function isDifferentGridRow(index3, cols, prevRow) {
    return Math.floor(index3 / cols) !== prevRow;
  }
  function isIndexOutOfListBounds(list, index3) {
    return index3 < 0 || index3 >= list.length;
  }
  function getMinListIndex(listRef, disabledIndices) {
    return findNonDisabledListIndex(listRef.current, {
      disabledIndices
    });
  }
  function getMaxListIndex(listRef, disabledIndices) {
    return findNonDisabledListIndex(listRef.current, {
      decrement: true,
      startingIndex: listRef.current.length,
      disabledIndices
    });
  }
  function findNonDisabledListIndex(list, {
    startingIndex = -1,
    decrement = false,
    disabledIndices,
    amount = 1
  } = {}) {
    let index3 = startingIndex;
    do {
      index3 += decrement ? -amount : amount;
    } while (index3 >= 0 && index3 <= list.length - 1 && isListIndexDisabled(list, index3, disabledIndices));
    return index3;
  }
  function getGridNavigatedIndex(list, {
    event,
    orientation,
    loopFocus,
    onLoop,
    rtl,
    cols,
    disabledIndices,
    minIndex,
    maxIndex,
    prevIndex,
    stopEvent: stop2 = false
  }) {
    let nextIndex = prevIndex;
    let verticalDirection;
    if (event.key === ARROW_UP) {
      verticalDirection = "up";
    } else if (event.key === ARROW_DOWN) {
      verticalDirection = "down";
    }
    if (verticalDirection) {
      const rows = [];
      const rowIndexMap = [];
      let hasRoleRow = false;
      let visibleItemCount = 0;
      {
        let currentRowEl = null;
        let currentRowIndex = -1;
        list.forEach((el, idx) => {
          if (el == null) {
            return;
          }
          visibleItemCount += 1;
          const rowEl = el.closest('[role="row"]');
          if (rowEl) {
            hasRoleRow = true;
          }
          if (rowEl !== currentRowEl || currentRowIndex === -1) {
            currentRowEl = rowEl;
            currentRowIndex += 1;
            rows[currentRowIndex] = [];
          }
          rows[currentRowIndex].push(idx);
          rowIndexMap[idx] = currentRowIndex;
        });
      }
      let hasDomRows = false;
      let inferredDomCols = 0;
      if (hasRoleRow) {
        for (const row of rows) {
          const rowLength = row.length;
          if (rowLength > inferredDomCols) {
            inferredDomCols = rowLength;
          }
          if (rowLength !== cols) {
            hasDomRows = true;
          }
        }
      }
      const hasVirtualizedGaps = hasDomRows && visibleItemCount < list.length;
      const verticalCols = inferredDomCols || cols;
      const navigateVertically = (direction) => {
        if (!hasDomRows || prevIndex === -1) {
          return void 0;
        }
        const currentRow = rowIndexMap[prevIndex];
        if (currentRow == null) {
          return void 0;
        }
        const colInRow = rows[currentRow].indexOf(prevIndex);
        const step = direction === "up" ? -1 : 1;
        for (let nextRow = currentRow + step, i2 = 0; i2 < rows.length; i2 += 1, nextRow += step) {
          if (nextRow < 0 || nextRow >= rows.length) {
            if (!loopFocus || hasVirtualizedGaps) {
              return void 0;
            }
            nextRow = nextRow < 0 ? rows.length - 1 : 0;
            if (onLoop) {
              const clampedCol = Math.min(colInRow, rows[nextRow].length - 1);
              const targetItemIndex = rows[nextRow][clampedCol] ?? rows[nextRow][0];
              const returnedItemIndex = onLoop(event, prevIndex, targetItemIndex);
              nextRow = rowIndexMap[returnedItemIndex] ?? nextRow;
            }
          }
          const targetRow = rows[nextRow];
          for (let col = Math.min(colInRow, targetRow.length - 1); col >= 0; col -= 1) {
            const candidate = targetRow[col];
            if (!isListIndexDisabled(list, candidate, disabledIndices)) {
              return candidate;
            }
          }
        }
        return void 0;
      };
      const navigateVerticallyWithInferredRows = (direction) => {
        if (!hasVirtualizedGaps || prevIndex === -1) {
          return void 0;
        }
        const colInRow = prevIndex % verticalCols;
        const rowStep = direction === "up" ? -verticalCols : verticalCols;
        const lastRowStart = maxIndex - maxIndex % verticalCols;
        const rowCount = floor(maxIndex / verticalCols) + 1;
        for (let rowStart = prevIndex - colInRow + rowStep, i2 = 0; i2 < rowCount; i2 += 1, rowStart += rowStep) {
          if (rowStart < 0 || rowStart > maxIndex) {
            if (!loopFocus) {
              return void 0;
            }
            rowStart = rowStart < 0 ? lastRowStart : 0;
          }
          const rowEnd = Math.min(rowStart + verticalCols - 1, maxIndex);
          for (let candidate = Math.min(rowStart + colInRow, rowEnd); candidate >= rowStart; candidate -= 1) {
            if (!isListIndexDisabled(list, candidate, disabledIndices)) {
              return candidate;
            }
          }
        }
        return void 0;
      };
      if (stop2) {
        stopEvent(event);
      }
      const verticalCandidate = navigateVertically(verticalDirection) ?? navigateVerticallyWithInferredRows(verticalDirection);
      if (verticalCandidate !== void 0) {
        nextIndex = verticalCandidate;
      } else if (prevIndex === -1) {
        nextIndex = verticalDirection === "up" ? maxIndex : minIndex;
      } else {
        nextIndex = findNonDisabledListIndex(list, {
          startingIndex: prevIndex,
          amount: verticalCols,
          decrement: verticalDirection === "up",
          disabledIndices
        });
        if (loopFocus) {
          if (verticalDirection === "up" && (prevIndex - verticalCols < minIndex || nextIndex < 0)) {
            const col = prevIndex % verticalCols;
            const maxCol = maxIndex % verticalCols;
            const offset4 = maxIndex - (maxCol - col);
            if (maxCol === col) {
              nextIndex = maxIndex;
            } else {
              nextIndex = maxCol > col ? offset4 : offset4 - verticalCols;
            }
            if (onLoop) {
              nextIndex = onLoop(event, prevIndex, nextIndex);
            }
          }
          if (verticalDirection === "down" && prevIndex + verticalCols > maxIndex) {
            nextIndex = findNonDisabledListIndex(list, {
              startingIndex: prevIndex % verticalCols - verticalCols,
              amount: verticalCols,
              disabledIndices
            });
            if (onLoop) {
              nextIndex = onLoop(event, prevIndex, nextIndex);
            }
          }
        }
      }
      if (isIndexOutOfListBounds(list, nextIndex)) {
        nextIndex = prevIndex;
      }
    }
    if (orientation === "both") {
      const prevRow = floor(prevIndex / cols);
      if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) {
        if (stop2) {
          stopEvent(event);
        }
        if (prevIndex % cols !== cols - 1) {
          nextIndex = findNonDisabledListIndex(list, {
            startingIndex: prevIndex,
            disabledIndices
          });
          if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) {
            nextIndex = findNonDisabledListIndex(list, {
              startingIndex: prevIndex - prevIndex % cols - 1,
              disabledIndices
            });
            if (onLoop) {
              nextIndex = onLoop(event, prevIndex, nextIndex);
            }
          }
        } else if (loopFocus) {
          nextIndex = findNonDisabledListIndex(list, {
            startingIndex: prevIndex - prevIndex % cols - 1,
            disabledIndices
          });
          if (onLoop) {
            nextIndex = onLoop(event, prevIndex, nextIndex);
          }
        }
        if (isDifferentGridRow(nextIndex, cols, prevRow)) {
          nextIndex = prevIndex;
        }
      }
      if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {
        if (stop2) {
          stopEvent(event);
        }
        if (prevIndex % cols !== 0) {
          nextIndex = findNonDisabledListIndex(list, {
            startingIndex: prevIndex,
            decrement: true,
            disabledIndices
          });
          if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) {
            nextIndex = findNonDisabledListIndex(list, {
              startingIndex: prevIndex + (cols - prevIndex % cols),
              decrement: true,
              disabledIndices
            });
            if (onLoop) {
              nextIndex = onLoop(event, prevIndex, nextIndex);
            }
          }
        } else if (loopFocus) {
          nextIndex = findNonDisabledListIndex(list, {
            startingIndex: prevIndex + (cols - prevIndex % cols),
            decrement: true,
            disabledIndices
          });
          if (onLoop) {
            nextIndex = onLoop(event, prevIndex, nextIndex);
          }
        }
        if (isDifferentGridRow(nextIndex, cols, prevRow)) {
          nextIndex = prevIndex;
        }
      }
      const lastRow = floor(maxIndex / cols) === prevRow;
      if (isIndexOutOfListBounds(list, nextIndex)) {
        if (loopFocus && lastRow) {
          nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledListIndex(list, {
            startingIndex: prevIndex - prevIndex % cols - 1,
            disabledIndices
          });
          if (onLoop) {
            nextIndex = onLoop(event, prevIndex, nextIndex);
          }
        } else {
          nextIndex = prevIndex;
        }
      }
    }
    return nextIndex;
  }
  function isListIndexDisabled(list, index3, disabledIndices) {
    const isExplicitlyDisabled = typeof disabledIndices === "function" ? disabledIndices(index3) : disabledIndices?.includes(index3) ?? false;
    if (isExplicitlyDisabled) {
      return true;
    }
    const element = list[index3];
    if (!element) {
      return false;
    }
    if (!isElementVisible(element)) {
      return true;
    }
    if (element.matches(":disabled")) {
      return true;
    }
    return !disabledIndices && (element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true");
  }
  function isHiddenByStyles(styles) {
    return styles.visibility === "hidden" || styles.visibility === "collapse";
  }
  function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) {
    if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) {
      return false;
    }
    if (typeof element.checkVisibility === "function") {
      return element.checkVisibility();
    }
    return styles.display !== "none" && styles.display !== "contents";
  }

  // node_modules/@base-ui/react/floating-ui-react/utils/tabbable.mjs
  var CANDIDATE_SELECTOR = 'a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]';
  function getParentElement(element) {
    const assignedSlot = element.assignedSlot;
    if (assignedSlot) {
      return assignedSlot;
    }
    if (element.parentElement) {
      return element.parentElement;
    }
    const rootNode = element.getRootNode();
    return isShadowRoot(rootNode) ? rootNode.host : null;
  }
  function getDetailsSummary(details) {
    for (const child of Array.from(details.children)) {
      if (getNodeName(child) === "summary") {
        return child;
      }
    }
    return null;
  }
  function isWithinOpenDetailsSummary(element, details) {
    const summary = getDetailsSummary(details);
    return !!summary && (element === summary || contains(summary, element));
  }
  function isFocusableCandidate(element) {
    const nodeName = element ? getNodeName(element) : "";
    return element != null && element.matches(CANDIDATE_SELECTOR) && (nodeName !== "summary" || element.parentElement != null && getNodeName(element.parentElement) === "details" && getDetailsSummary(element.parentElement) === element) && (nodeName !== "details" || getDetailsSummary(element) == null) && (nodeName !== "input" || element.type !== "hidden");
  }
  function isFocusableElement(element) {
    if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled")) {
      return false;
    }
    for (let current = element; current; current = getParentElement(current)) {
      const isAncestor = current !== element;
      const isSlot = getNodeName(current) === "slot";
      if (current.hasAttribute("inert")) {
        return false;
      }
      if (isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor)) {
        return false;
      }
    }
    return true;
  }
  function isVisibleInTabbableTree(element, isAncestor) {
    const styles = getComputedStyle2(element);
    if (!isAncestor) {
      return isElementVisible(element, styles);
    }
    return styles.display !== "none";
  }
  function getTabIndex(element) {
    const tabIndex = element.tabIndex;
    if (tabIndex < 0) {
      const nodeName = getNodeName(element);
      if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable) {
        return 0;
      }
    }
    return tabIndex;
  }
  function getNamedRadioInput(element) {
    if (getNodeName(element) !== "input") {
      return null;
    }
    const input = element;
    return input.type === "radio" && input.name !== "" ? input : null;
  }
  function isTabbableRadio(element, candidates) {
    const input = getNamedRadioInput(element);
    if (!input) {
      return true;
    }
    const checkedRadio = candidates.find((candidate) => {
      const radio = getNamedRadioInput(candidate);
      return radio?.name === input.name && radio.form === input.form && radio.checked;
    });
    if (checkedRadio) {
      return checkedRadio === input;
    }
    return candidates.find((candidate) => {
      const radio = getNamedRadioInput(candidate);
      return radio?.name === input.name && radio.form === input.form;
    }) === input;
  }
  function getComposedChildren(container) {
    if (isHTMLElement(container) && getNodeName(container) === "slot") {
      const assignedElements = container.assignedElements({
        flatten: true
      });
      if (assignedElements.length > 0) {
        return assignedElements;
      }
    }
    if (isHTMLElement(container) && container.shadowRoot) {
      return Array.from(container.shadowRoot.children);
    }
    return Array.from(container.children);
  }
  function appendCandidates(container, list) {
    getComposedChildren(container).forEach((child) => {
      if (isFocusableCandidate(child)) {
        list.push(child);
      }
      appendCandidates(child, list);
    });
  }
  function appendMatchingElements(container, selector2, list) {
    getComposedChildren(container).forEach((child) => {
      if (isHTMLElement(child) && child.matches(selector2)) {
        list.push(child);
      }
      appendMatchingElements(child, selector2, list);
    });
  }
  function isTabbable(element) {
    return isFocusableElement(element) && getTabIndex(element) >= 0;
  }
  function focusable(container) {
    const candidates = [];
    appendCandidates(container, candidates);
    return candidates.filter(isFocusableElement);
  }
  function tabbable(container) {
    const candidates = focusable(container);
    return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates));
  }
  function getTabbableIn(container, dir) {
    const list = tabbable(container);
    const len2 = list.length;
    if (len2 === 0) {
      return void 0;
    }
    const active = activeElement(ownerDocument(container));
    const index3 = list.indexOf(active);
    const nextIndex = index3 === -1 ? dir === 1 ? 0 : len2 - 1 : index3 + dir;
    return list[nextIndex];
  }
  function getNextTabbable(referenceElement) {
    return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement;
  }
  function getPreviousTabbable(referenceElement) {
    return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement;
  }
  function getTabbableNearElement(referenceElement, dir) {
    if (!referenceElement) {
      return null;
    }
    const list = tabbable(ownerDocument(referenceElement).body);
    const elementCount = list.length;
    if (elementCount === 0) {
      return null;
    }
    const index3 = list.indexOf(referenceElement);
    if (index3 === -1) {
      return null;
    }
    const nextIndex = (index3 + dir + elementCount) % elementCount;
    return list[nextIndex];
  }
  function getTabbableAfterElement(referenceElement) {
    return getTabbableNearElement(referenceElement, 1);
  }
  function getTabbableBeforeElement(referenceElement) {
    return getTabbableNearElement(referenceElement, -1);
  }
  function isOutsideEvent(event, container) {
    const containerElement = container || event.currentTarget;
    const relatedTarget = event.relatedTarget;
    return !relatedTarget || !contains(containerElement, relatedTarget);
  }
  function disableFocusInside(container) {
    const tabbableElements = tabbable(container);
    tabbableElements.forEach((element) => {
      element.dataset.tabindex = element.getAttribute("tabindex") || "";
      element.setAttribute("tabindex", "-1");
    });
  }
  function enableFocusInside(container) {
    const elements2 = [];
    appendMatchingElements(container, "[data-tabindex]", elements2);
    elements2.forEach((element) => {
      const tabindex = element.dataset.tabindex;
      delete element.dataset.tabindex;
      if (tabindex) {
        element.setAttribute("tabindex", tabindex);
      } else {
        element.removeAttribute("tabindex");
      }
    });
  }

  // node_modules/@base-ui/react/floating-ui-react/utils/nodes.mjs
  function getNodeChildren(nodes, id, onlyOpenChildren = true) {
    const directChildren = nodes.filter((node) => node.parentId === id);
    return directChildren.flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);
  }
  function getNodeAncestors(nodes, id) {
    let allAncestors = [];
    let currentParentId = nodes.find((node) => node.id === id)?.parentId;
    while (currentParentId) {
      const currentNode = nodes.find((node) => node.id === currentParentId);
      currentParentId = currentNode?.parentId;
      if (currentNode) {
        allAncestors = allAncestors.concat(currentNode);
      }
    }
    return allAncestors;
  }

  // node_modules/@base-ui/react/floating-ui-react/utils/createAttribute.mjs
  function createAttribute(name2) {
    return `data-base-ui-${name2}`;
  }

  // node_modules/@base-ui/react/floating-ui-react/utils/enqueueFocus.mjs
  var rafId = 0;
  function enqueueFocus(el, options = {}) {
    const {
      preventScroll = false,
      sync: sync3 = false,
      shouldFocus
    } = options;
    cancelAnimationFrame(rafId);
    function exec() {
      if (shouldFocus && !shouldFocus()) {
        return;
      }
      el?.focus({
        preventScroll
      });
    }
    if (sync3) {
      exec();
      return NOOP;
    }
    const currentRafId = requestAnimationFrame(exec);
    rafId = currentRafId;
    return () => {
      if (rafId === currentRafId) {
        cancelAnimationFrame(currentRafId);
        rafId = 0;
      }
    };
  }

  // node_modules/@base-ui/react/floating-ui-react/utils/markOthers.mjs
  var counters = {
    inert: /* @__PURE__ */ new WeakMap(),
    "aria-hidden": /* @__PURE__ */ new WeakMap()
  };
  var markerName = "data-base-ui-inert";
  var uncontrolledElementsSets = {
    inert: /* @__PURE__ */ new WeakSet(),
    "aria-hidden": /* @__PURE__ */ new WeakSet()
  };
  var markerCounterMap = /* @__PURE__ */ new WeakMap();
  var lockCount = 0;
  function getUncontrolledElementsSet(controlAttribute) {
    return uncontrolledElementsSets[controlAttribute];
  }
  function unwrapHost(node) {
    if (!node) {
      return null;
    }
    return isShadowRoot(node) ? node.host : unwrapHost(node.parentNode);
  }
  var correctElements = (parent, targets) => targets.map((target) => {
    if (parent.contains(target)) {
      return target;
    }
    const correctedTarget = unwrapHost(target);
    if (parent.contains(correctedTarget)) {
      return correctedTarget;
    }
    return null;
  }).filter((x2) => x2 != null);
  var buildKeepSet = (targets) => {
    const keep = /* @__PURE__ */ new Set();
    targets.forEach((target) => {
      let node = target;
      while (node && !keep.has(node)) {
        keep.add(node);
        node = node.parentNode;
      }
    });
    return keep;
  };
  var collectOutsideElements = (root, keepElements, stopElements) => {
    const outside = [];
    const walk = (parent) => {
      if (!parent || stopElements.has(parent)) {
        return;
      }
      Array.from(parent.children).forEach((node) => {
        if (getNodeName(node) === "script") {
          return;
        }
        if (keepElements.has(node)) {
          walk(node);
        } else {
          outside.push(node);
        }
      });
    };
    walk(root);
    return outside;
  };
  function applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert, {
    mark = true
  }) {
    let controlAttribute = null;
    if (inert) {
      controlAttribute = "inert";
    } else if (ariaHidden) {
      controlAttribute = "aria-hidden";
    }
    let counterMap = null;
    let uncontrolledElementsSet = null;
    const avoidElements = correctElements(body, uncorrectedAvoidElements);
    const markerTargets = mark ? collectOutsideElements(body, buildKeepSet(avoidElements), new Set(avoidElements)) : [];
    const hiddenElements = [];
    const markedElements = [];
    if (controlAttribute) {
      const map = counters[controlAttribute];
      const currentUncontrolledElementsSet = getUncontrolledElementsSet(controlAttribute);
      uncontrolledElementsSet = currentUncontrolledElementsSet;
      counterMap = map;
      const ariaLiveElements = correctElements(body, Array.from(body.querySelectorAll("[aria-live]")));
      const controlElements = avoidElements.concat(ariaLiveElements);
      const controlTargets = collectOutsideElements(body, buildKeepSet(controlElements), new Set(controlElements));
      controlTargets.forEach((node) => {
        const attr2 = node.getAttribute(controlAttribute);
        const alreadyHidden = attr2 !== null && attr2 !== "false";
        const counterValue = (map.get(node) || 0) + 1;
        map.set(node, counterValue);
        hiddenElements.push(node);
        if (counterValue === 1 && alreadyHidden) {
          currentUncontrolledElementsSet.add(node);
        }
        if (!alreadyHidden) {
          node.setAttribute(controlAttribute, controlAttribute === "inert" ? "" : "true");
        }
      });
    }
    if (mark) {
      markerTargets.forEach((node) => {
        const markerValue = (markerCounterMap.get(node) || 0) + 1;
        markerCounterMap.set(node, markerValue);
        markedElements.push(node);
        if (markerValue === 1) {
          node.setAttribute(markerName, "");
        }
      });
    }
    lockCount += 1;
    return () => {
      if (counterMap) {
        hiddenElements.forEach((element) => {
          const currentCounterValue = counterMap.get(element) || 0;
          const counterValue = currentCounterValue - 1;
          counterMap.set(element, counterValue);
          if (!counterValue) {
            if (!uncontrolledElementsSet?.has(element) && controlAttribute) {
              element.removeAttribute(controlAttribute);
            }
            uncontrolledElementsSet?.delete(element);
          }
        });
      }
      if (mark) {
        markedElements.forEach((element) => {
          const markerValue = (markerCounterMap.get(element) || 0) - 1;
          markerCounterMap.set(element, markerValue);
          if (!markerValue) {
            element.removeAttribute(markerName);
          }
        });
      }
      lockCount -= 1;
      if (!lockCount) {
        counters.inert = /* @__PURE__ */ new WeakMap();
        counters["aria-hidden"] = /* @__PURE__ */ new WeakMap();
        uncontrolledElementsSets.inert = /* @__PURE__ */ new WeakSet();
        uncontrolledElementsSets["aria-hidden"] = /* @__PURE__ */ new WeakSet();
        markerCounterMap = /* @__PURE__ */ new WeakMap();
      }
    };
  }
  function markOthers(avoidElements, options = {}) {
    const {
      ariaHidden = false,
      inert = false,
      mark = true
    } = options;
    const body = ownerDocument(avoidElements[0]).body;
    return applyAttributeToOthers(avoidElements, body, ariaHidden, inert, {
      mark
    });
  }

  // node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs
  var React23 = __toESM(require_react(), 1);
  var ReactDOM2 = __toESM(require_react_dom(), 1);

  // node_modules/@base-ui/react/internals/constants.mjs
  var TYPEAHEAD_RESET_MS = 500;
  var PATIENT_CLICK_THRESHOLD = 500;
  var DISABLED_TRANSITIONS_STYLE = {
    style: {
      transition: "none"
    }
  };
  var CLICK_TRIGGER_IDENTIFIER = "data-base-ui-click-trigger";
  var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore";
  var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore";
  var BASE_UI_SWIPE_IGNORE_SELECTOR = `[${BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`;
  var LEGACY_SWIPE_IGNORE_SELECTOR = `[${LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`;
  var DROPDOWN_COLLISION_AVOIDANCE = {
    fallbackAxisSide: "none"
  };
  var POPUP_COLLISION_AVOIDANCE = {
    fallbackAxisSide: "end"
  };
  var ownerVisuallyHidden = {
    clipPath: "inset(50%)",
    position: "fixed",
    top: 0,
    left: 0
  };

  // node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs
  var import_jsx_runtime99 = __toESM(require_jsx_runtime(), 1);
  var PortalContext = /* @__PURE__ */ React23.createContext(null);
  if (true) PortalContext.displayName = "PortalContext";
  var usePortalContext = () => React23.useContext(PortalContext);
  var attr = createAttribute("portal");
  function useFloatingPortalNode(props = {}) {
    const {
      ref,
      container: containerProp,
      componentProps = EMPTY_OBJECT2,
      elementProps
    } = props;
    const uniqueId = useId();
    const portalContext = usePortalContext();
    const parentPortalNode = portalContext?.portalNode;
    const [containerElement, setContainerElement] = React23.useState(null);
    const [portalNode, setPortalNode] = React23.useState(null);
    const setPortalNodeRef = useStableCallback((node) => {
      if (node !== null) {
        setPortalNode(node);
      }
    });
    const containerRef = React23.useRef(null);
    useIsoLayoutEffect(() => {
      if (containerProp === null) {
        if (containerRef.current) {
          containerRef.current = null;
          setPortalNode(null);
          setContainerElement(null);
        }
        return;
      }
      const resolvedContainer = (containerProp && (isNode(containerProp) ? containerProp : containerProp.current)) ?? parentPortalNode ?? document.body;
      if (resolvedContainer == null) {
        if (containerRef.current) {
          containerRef.current = null;
          setPortalNode(null);
          setContainerElement(null);
        }
        return;
      }
      if (containerRef.current !== resolvedContainer) {
        containerRef.current = resolvedContainer;
        setPortalNode(null);
        setContainerElement(resolvedContainer);
      }
    }, [containerProp, parentPortalNode]);
    const portalElement = useRenderElement("div", componentProps, {
      ref: [ref, setPortalNodeRef],
      props: [{
        id: uniqueId,
        [attr]: ""
      }, elementProps]
    });
    const portalSubtree = containerElement && portalElement ? /* @__PURE__ */ ReactDOM2.createPortal(portalElement, containerElement) : null;
    return {
      node: portalNode,
      // `id` and `render` props can override or remove the generated ID. Use the exact
      // rendered value so `aria-owns` never points at an ID absent from the DOM.
      nodeId: /* @__PURE__ */ React23.isValidElement(portalElement) ? portalElement.props.id : void 0,
      subtree: portalSubtree
    };
  }
  var FloatingPortal = /* @__PURE__ */ React23.forwardRef(function FloatingPortal2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      children,
      container,
      portalOwnerRole,
      ...elementProps
    } = componentProps;
    const {
      node: portalNode,
      nodeId: portalNodeId,
      subtree: portalSubtree
    } = useFloatingPortalNode({
      container,
      ref: forwardedRef,
      componentProps,
      elementProps
    });
    const beforeOutsideRef = React23.useRef(null);
    const afterOutsideRef = React23.useRef(null);
    const beforeInsideRef = React23.useRef(null);
    const afterInsideRef = React23.useRef(null);
    const [focusManagerState, setFocusManagerState] = React23.useState(null);
    const focusInsideDisabledRef = React23.useRef(false);
    const modal = focusManagerState?.modal;
    const open3 = focusManagerState?.open;
    const shouldRenderGuards = !!focusManagerState && !focusManagerState.modal && focusManagerState.open && !!portalNode;
    React23.useEffect(() => {
      if (!portalNode || modal) {
        return void 0;
      }
      function onFocus(event) {
        if (portalNode && event.relatedTarget && isOutsideEvent(event)) {
          if (event.type === "focusin") {
            if (focusInsideDisabledRef.current) {
              enableFocusInside(portalNode);
              focusInsideDisabledRef.current = false;
            }
          } else {
            disableFocusInside(portalNode);
            focusInsideDisabledRef.current = true;
          }
        }
      }
      return mergeCleanups(addEventListener(portalNode, "focusin", onFocus, true), addEventListener(portalNode, "focusout", onFocus, true));
    }, [portalNode, modal]);
    useIsoLayoutEffect(() => {
      if (!portalNode || open3 !== true || !focusInsideDisabledRef.current) {
        return;
      }
      enableFocusInside(portalNode);
      focusInsideDisabledRef.current = false;
    }, [open3, portalNode]);
    const portalContextValue = React23.useMemo(() => ({
      beforeOutsideRef,
      afterOutsideRef,
      beforeInsideRef,
      afterInsideRef,
      portalNode,
      setFocusManagerState
    }), [portalNode]);
    return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(React23.Fragment, {
      children: [portalSubtree, /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(PortalContext.Provider, {
        value: portalContextValue,
        children: [shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(FocusGuard, {
          "data-type": "outside",
          ref: beforeOutsideRef,
          onFocus: (event) => {
            if (isOutsideEvent(event, portalNode)) {
              beforeInsideRef.current?.focus();
            } else {
              const domReference = focusManagerState ? focusManagerState.domReference : null;
              const prevTabbable = getPreviousTabbable(domReference);
              prevTabbable?.focus();
            }
          }
        }), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", {
          role: portalOwnerRole,
          "aria-owns": portalNodeId,
          style: ownerVisuallyHidden
        }), portalNode && /* @__PURE__ */ ReactDOM2.createPortal(children, portalNode), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(FocusGuard, {
          "data-type": "outside",
          ref: afterOutsideRef,
          onFocus: (event) => {
            if (isOutsideEvent(event, portalNode)) {
              afterInsideRef.current?.focus();
            } else {
              const domReference = focusManagerState ? focusManagerState.domReference : null;
              const nextTabbable = getNextTabbable(domReference);
              nextTabbable?.focus();
              if (focusManagerState?.closeOnFocusOut) {
                focusManagerState?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent));
              }
            }
          }
        })]
      })]
    });
  });
  if (true) FloatingPortal.displayName = "FloatingPortal";

  // node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs
  var React24 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/floating-ui-react/utils/createEventEmitter.mjs
  function createEventEmitter() {
    const map = /* @__PURE__ */ new Map();
    return {
      emit(event, data) {
        map.get(event)?.forEach((listener) => listener(data));
      },
      on(event, listener) {
        if (!map.has(event)) {
          map.set(event, /* @__PURE__ */ new Set());
        }
        map.get(event).add(listener);
      },
      off(event, listener) {
        map.get(event)?.delete(listener);
      }
    };
  }

  // node_modules/@base-ui/react/floating-ui-react/components/FloatingTreeStore.mjs
  var FloatingTreeStore = class {
    nodesRef = {
      current: []
    };
    events = createEventEmitter();
    addNode(node) {
      this.nodesRef.current.push(node);
    }
    removeNode(node) {
      const index3 = this.nodesRef.current.findIndex((n2) => n2 === node);
      if (index3 !== -1) {
        this.nodesRef.current.splice(index3, 1);
      }
    }
  };

  // node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs
  var import_jsx_runtime100 = __toESM(require_jsx_runtime(), 1);
  var FloatingNodeContext = /* @__PURE__ */ React24.createContext(null);
  if (true) FloatingNodeContext.displayName = "FloatingNodeContext";
  var FloatingTreeContext = /* @__PURE__ */ React24.createContext(null);
  if (true) FloatingTreeContext.displayName = "FloatingTreeContext";
  var useFloatingParentNodeId = () => React24.useContext(FloatingNodeContext)?.id || null;
  var useFloatingTree = (externalTree) => {
    const contextTree = React24.useContext(FloatingTreeContext);
    return externalTree ?? contextTree;
  };
  function useFloatingNodeId(externalTree) {
    const id = useId();
    const tree = useFloatingTree(externalTree);
    const parentId = useFloatingParentNodeId();
    useIsoLayoutEffect(() => {
      if (!id) {
        return void 0;
      }
      const node = {
        id,
        parentId
      };
      tree?.addNode(node);
      return () => {
        tree?.removeNode(node);
      };
    }, [tree, id, parentId]);
    return id;
  }
  function FloatingNode(props) {
    const {
      children,
      id
    } = props;
    const parentId = useFloatingParentNodeId();
    return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(FloatingNodeContext.Provider, {
      value: React24.useMemo(() => ({
        id,
        parentId
      }), [id, parentId]),
      children
    });
  }
  function FloatingTree(props) {
    const {
      children,
      externalTree
    } = props;
    const tree = useRefWithInit(() => externalTree ?? new FloatingTreeStore()).current;
    return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(FloatingTreeContext.Provider, {
      value: tree,
      children
    });
  }

  // node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs
  var import_jsx_runtime101 = __toESM(require_jsx_runtime(), 1);
  function getEventType(event, lastInteractionType) {
    const win = getWindow(getTarget(event));
    if (event instanceof win.KeyboardEvent) {
      return "keyboard";
    }
    if (event instanceof win.FocusEvent) {
      return lastInteractionType || "keyboard";
    }
    if ("pointerType" in event) {
      return event.pointerType || "keyboard";
    }
    if ("touches" in event) {
      return "touch";
    }
    if (event instanceof win.MouseEvent) {
      return lastInteractionType || (event.detail === 0 ? "keyboard" : "mouse");
    }
    return "";
  }
  var LIST_LIMIT = 20;
  var previouslyFocusedElements = [];
  function clearDisconnectedPreviouslyFocusedElements() {
    previouslyFocusedElements = previouslyFocusedElements.filter((entry) => {
      return entry.deref()?.isConnected;
    });
  }
  function addPreviouslyFocusedElement(element) {
    clearDisconnectedPreviouslyFocusedElements();
    if (element && getNodeName(element) !== "body") {
      previouslyFocusedElements.push(new WeakRef(element));
      if (previouslyFocusedElements.length > LIST_LIMIT) {
        previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT);
      }
    }
  }
  function getPreviouslyFocusedElement() {
    clearDisconnectedPreviouslyFocusedElements();
    return previouslyFocusedElements[previouslyFocusedElements.length - 1]?.deref();
  }
  function getFirstTabbableElement(container) {
    if (!container) {
      return null;
    }
    if (isTabbable(container)) {
      return container;
    }
    return tabbable(container)[0] || container;
  }
  function handleTabIndex(floatingFocusElement) {
    if (floatingFocusElement.hasAttribute("tabindex") && !floatingFocusElement.hasAttribute("data-tabindex")) {
      return;
    }
    if (!floatingFocusElement.getAttribute("role")?.includes("dialog")) {
      return;
    }
    const focusableElements = focusable(floatingFocusElement);
    const tabbableContent = focusableElements.filter((element) => {
      const dataTabIndex = element.getAttribute("data-tabindex") || "";
      return isTabbable(element) || element.hasAttribute("data-tabindex") && !dataTabIndex.startsWith("-");
    });
    const tabIndex = floatingFocusElement.getAttribute("tabindex");
    if (tabbableContent.length === 0) {
      if (tabIndex !== "0") {
        floatingFocusElement.setAttribute("tabindex", "0");
        floatingFocusElement.setAttribute("data-tabindex", "0");
      }
    } else if (tabIndex !== "-1" || floatingFocusElement.hasAttribute("data-tabindex") && floatingFocusElement.getAttribute("data-tabindex") !== "-1") {
      floatingFocusElement.setAttribute("tabindex", "-1");
      floatingFocusElement.setAttribute("data-tabindex", "-1");
    }
  }
  function FloatingFocusManager(props) {
    const {
      context,
      children,
      disabled: disabled2 = false,
      initialFocus = true,
      returnFocus = true,
      restoreFocus = false,
      modal = true,
      closeOnFocusOut = true,
      openInteractionType = "",
      nextFocusableElement,
      previousFocusableElement,
      beforeContentFocusGuardRef,
      externalTree,
      getInsideElements
    } = props;
    const store4 = "rootStore" in context ? context.rootStore : context;
    const open3 = store4.useState("open");
    const domReference = store4.useState("domReferenceElement");
    const floating = store4.useState("floatingElement");
    const {
      events,
      dataRef
    } = store4.context;
    const getNodeId = useStableCallback(() => dataRef.current.floatingContext?.nodeId);
    const ignoreInitialFocus = initialFocus === false;
    const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;
    const initialFocusRef = useValueAsRef(initialFocus);
    const returnFocusRef = useValueAsRef(returnFocus);
    const openInteractionTypeRef = useValueAsRef(openInteractionType);
    const openRef = useValueAsRef(open3);
    const tree = useFloatingTree(externalTree);
    const portalContext = usePortalContext();
    const preventReturnFocusRef = React25.useRef(false);
    const isPointerDownRef = React25.useRef(false);
    const pointerDownOutsideRef = React25.useRef(false);
    const lastFocusedTabbableRef = React25.useRef(null);
    const closeTypeRef = React25.useRef("");
    const lastInteractionTypeRef = React25.useRef("");
    const beforeGuardRef = React25.useRef(null);
    const afterGuardRef = React25.useRef(null);
    const mergedBeforeGuardRef = useMergedRefs(beforeGuardRef, beforeContentFocusGuardRef, portalContext?.beforeInsideRef);
    const mergedAfterGuardRef = useMergedRefs(afterGuardRef, portalContext?.afterInsideRef);
    const blurTimeout = useTimeout();
    const pointerDownTimeout = useTimeout();
    const restoreFocusFrame = useAnimationFrame();
    const isInsidePortal = portalContext != null;
    const floatingFocusElement = getFloatingFocusElement(floating);
    const getTabbableContent = useStableCallback((container = floatingFocusElement) => {
      return container ? tabbable(container) : [];
    });
    const getResolvedInsideElements = useStableCallback(() => getInsideElements?.().filter((element) => element != null) ?? []);
    React25.useEffect(() => {
      if (disabled2 || !modal) {
        return void 0;
      }
      function onKeyDown(event) {
        if (event.key === "Tab") {
          if (contains(floatingFocusElement, activeElement(ownerDocument(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {
            stopEvent(event);
          }
        }
      }
      const doc = ownerDocument(floatingFocusElement);
      return addEventListener(doc, "keydown", onKeyDown);
    }, [disabled2, floatingFocusElement, modal, isUntrappedTypeableCombobox, getTabbableContent]);
    React25.useEffect(() => {
      if (disabled2 || !open3) {
        return void 0;
      }
      const doc = ownerDocument(floatingFocusElement);
      function clearPointerDownOutside() {
        pointerDownOutsideRef.current = false;
      }
      function onPointerDown(event) {
        const target = getTarget(event);
        const insideElements = getResolvedInsideElements();
        const pointerTargetInside = contains(floating, target) || contains(domReference, target) || contains(portalContext?.portalNode, target) || insideElements.some((element) => element === target || contains(element, target));
        pointerDownOutsideRef.current = !pointerTargetInside;
        lastInteractionTypeRef.current = event.pointerType || "keyboard";
        if (target?.closest(`[${CLICK_TRIGGER_IDENTIFIER}]`)) {
          isPointerDownRef.current = true;
          pointerDownTimeout.start(0, () => {
            isPointerDownRef.current = false;
          });
        }
      }
      function onKeyDown() {
        lastInteractionTypeRef.current = "keyboard";
      }
      return mergeCleanups(
        addEventListener(doc, "pointerdown", onPointerDown, true),
        addEventListener(doc, "pointerup", clearPointerDownOutside, true),
        addEventListener(doc, "pointercancel", clearPointerDownOutside, true),
        addEventListener(doc, "keydown", onKeyDown, true),
        // Avoid a stale `true` leaking into the next open (e.g. keep-mounted popups)
        // if the popup dismissed between pointerdown and pointerup.
        clearPointerDownOutside
      );
    }, [disabled2, floating, domReference, floatingFocusElement, open3, portalContext, pointerDownTimeout, getResolvedInsideElements]);
    React25.useEffect(() => {
      if (disabled2 || !closeOnFocusOut) {
        return void 0;
      }
      const doc = ownerDocument(floatingFocusElement);
      function handlePointerDown() {
        isPointerDownRef.current = true;
        pointerDownTimeout.start(0, () => {
          isPointerDownRef.current = false;
        });
      }
      function handleFocusIn(event) {
        const target = getTarget(event);
        if (isTabbable(target)) {
          lastFocusedTabbableRef.current = target;
        }
      }
      function handleFocusOutside(event) {
        const relatedTarget = event.relatedTarget;
        const currentTarget = event.currentTarget;
        const target = getTarget(event);
        if (modal && relatedTarget == null && target != null && contains(floating, target)) {
          addPreviouslyFocusedElement(target);
        }
        queueMicrotask(() => {
          const nodeId = getNodeId();
          const triggers = store4.context.triggerElements;
          const insideElements = getResolvedInsideElements();
          const isRelatedFocusGuard = relatedTarget?.hasAttribute(createAttribute("focus-guard")) && [beforeGuardRef.current, afterGuardRef.current, portalContext?.beforeInsideRef.current, portalContext?.afterInsideRef.current, portalContext?.beforeOutsideRef.current, portalContext?.afterOutsideRef.current, resolveRef(previousFocusableElement), resolveRef(nextFocusableElement)].includes(relatedTarget);
          const movedToUnrelatedNode = !(contains(domReference, relatedTarget) || contains(floating, relatedTarget) || contains(relatedTarget, floating) || contains(portalContext?.portalNode, relatedTarget) || insideElements.some((element) => element === relatedTarget || contains(element, relatedTarget)) || triggers.hasMatchingElement((trigger) => contains(trigger, relatedTarget)) || isRelatedFocusGuard || tree && (getNodeChildren(tree.nodesRef.current, nodeId).find((node) => contains(node.context?.elements.floating, relatedTarget) || contains(node.context?.elements.domReference, relatedTarget)) || getNodeAncestors(tree.nodesRef.current, nodeId).find((node) => [node.context?.elements.floating, getFloatingFocusElement(node.context?.elements.floating)].includes(relatedTarget) || node.context?.elements.domReference === relatedTarget)));
          if (currentTarget === domReference && floatingFocusElement) {
            handleTabIndex(floatingFocusElement);
          }
          if (restoreFocus && currentTarget !== domReference && !isElementVisible(target) && activeElement(doc) === doc.body) {
            if (isHTMLElement(floatingFocusElement)) {
              floatingFocusElement.focus();
              if (restoreFocus === "popup") {
                restoreFocusFrame.request(() => {
                  floatingFocusElement.focus();
                });
                return;
              }
            }
            const tabbableContent = getTabbableContent();
            const prevTabbable = lastFocusedTabbableRef.current;
            const nodeToFocus = (prevTabbable && tabbableContent.includes(prevTabbable) ? prevTabbable : null) || tabbableContent[tabbableContent.length - 1] || floatingFocusElement;
            if (isHTMLElement(nodeToFocus)) {
              nodeToFocus.focus();
            }
          }
          if (dataRef.current.insideReactTree) {
            dataRef.current.insideReactTree = false;
            return;
          }
          if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current && // Fix React 18 Strict Mode returnFocus due to double rendering.
          // For an "untrapped" typeable combobox (input role=combobox with
          // initialFocus=false), re-opening the popup and tabbing out should still close it even
          // when the previously focused element (e.g. the next tabbable outside the popup) is
          // focused again. Otherwise, the popup remains open on the second Tab sequence:
          // click input -> Tab (closes) -> click input -> Tab.
          // Allow closing when `isUntrappedTypeableCombobox` regardless of the previously focused element.
          (isUntrappedTypeableCombobox || relatedTarget !== getPreviouslyFocusedElement())) {
            preventReturnFocusRef.current = true;
            store4.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event));
          }
        });
      }
      function markInsideReactTree() {
        if (pointerDownOutsideRef.current) {
          return;
        }
        dataRef.current.insideReactTree = true;
        blurTimeout.start(0, () => {
          dataRef.current.insideReactTree = false;
        });
      }
      const domReferenceElement = isHTMLElement(domReference) ? domReference : null;
      if (!floating && !domReferenceElement) {
        return void 0;
      }
      return mergeCleanups(domReferenceElement && addEventListener(domReferenceElement, "focusout", handleFocusOutside), domReferenceElement && addEventListener(domReferenceElement, "pointerdown", handlePointerDown), floating && addEventListener(floating, "focusin", handleFocusIn), floating && addEventListener(floating, "focusout", handleFocusOutside), floating && portalContext && addEventListener(floating, "focusout", markInsideReactTree, true));
    }, [disabled2, domReference, floating, floatingFocusElement, modal, tree, portalContext, store4, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox, getNodeId, dataRef, blurTimeout, pointerDownTimeout, restoreFocusFrame, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]);
    React25.useEffect(() => {
      if (disabled2 || !floating || !open3) {
        return void 0;
      }
      const portalNodes = Array.from(portalContext?.portalNode?.querySelectorAll(`[${createAttribute("portal")}]`) || []);
      const ancestors = tree ? getNodeAncestors(tree.nodesRef.current, getNodeId()) : [];
      const rootAncestorComboboxDomReference = ancestors.find((node) => isTypeableCombobox(node.context?.elements.domReference || null))?.context?.elements.domReference;
      const controlInsideElements = [floating, ...portalNodes, beforeGuardRef.current, afterGuardRef.current, portalContext?.beforeOutsideRef.current, portalContext?.afterOutsideRef.current, ...getResolvedInsideElements()];
      const insideElements = [...controlInsideElements, rootAncestorComboboxDomReference, resolveRef(previousFocusableElement), resolveRef(nextFocusableElement), isUntrappedTypeableCombobox ? domReference : null].filter((x2) => x2 != null);
      const ariaHiddenCleanup = markOthers(insideElements, {
        ariaHidden: modal || isUntrappedTypeableCombobox,
        mark: false
      });
      const markerInsideElements = [floating, ...portalNodes].filter((x2) => x2 != null);
      const markerCleanup = markOthers(markerInsideElements);
      return () => {
        markerCleanup();
        ariaHiddenCleanup();
      };
    }, [open3, disabled2, domReference, floating, modal, portalContext, isUntrappedTypeableCombobox, tree, getNodeId, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]);
    useIsoLayoutEffect(() => {
      if (!open3 || disabled2 || !isHTMLElement(floatingFocusElement)) {
        return;
      }
      closeTypeRef.current = "";
      lastInteractionTypeRef.current = "";
      const doc = ownerDocument(floatingFocusElement);
      const previouslyFocusedElement = activeElement(doc);
      queueMicrotask(() => {
        const initialFocusValueOrFn = initialFocusRef.current;
        const resolvedInitialFocus = typeof initialFocusValueOrFn === "function" ? initialFocusValueOrFn(openInteractionTypeRef.current || "") : initialFocusValueOrFn;
        if (resolvedInitialFocus === void 0 || resolvedInitialFocus === false) {
          return;
        }
        const focusAlreadyInsideFloatingEl = contains(floatingFocusElement, previouslyFocusedElement);
        if (focusAlreadyInsideFloatingEl) {
          return;
        }
        let focusableElements = null;
        const getDefaultFocusElement = () => {
          if (focusableElements == null) {
            focusableElements = getTabbableContent(floatingFocusElement);
          }
          return focusableElements[0] || floatingFocusElement;
        };
        let elToFocus;
        if (resolvedInitialFocus === true || resolvedInitialFocus === null) {
          elToFocus = getDefaultFocusElement();
        } else {
          elToFocus = resolveRef(resolvedInitialFocus);
        }
        elToFocus = elToFocus || getDefaultFocusElement();
        const hadFocusInside = contains(floatingFocusElement, activeElement(doc));
        void enqueueFocus(elToFocus, {
          preventScroll: elToFocus === floatingFocusElement,
          shouldFocus() {
            if (!openRef.current) {
              return false;
            }
            if (hadFocusInside) {
              return true;
            }
            const currentActiveElement = activeElement(doc);
            const focusMovedInside = currentActiveElement !== elToFocus && contains(floatingFocusElement, currentActiveElement);
            return !focusMovedInside;
          }
        });
      });
    }, [disabled2, open3, floatingFocusElement, getTabbableContent, initialFocusRef, openInteractionTypeRef, openRef]);
    useIsoLayoutEffect(() => {
      if (disabled2 || !floatingFocusElement) {
        return void 0;
      }
      const doc = ownerDocument(floatingFocusElement);
      const elementFocusedBeforeOpen = activeElement(doc);
      const preferPreviousFocus = openInteractionTypeRef.current == null;
      addPreviouslyFocusedElement(elementFocusedBeforeOpen);
      function onOpenChangeLocal(details) {
        if (!details.open) {
          closeTypeRef.current = getEventType(details.nativeEvent, lastInteractionTypeRef.current);
        }
        if (details.reason === reason_parts_exports.triggerHover && details.nativeEvent.type === "mouseleave") {
          preventReturnFocusRef.current = true;
        }
        if (details.reason !== reason_parts_exports.outsidePress) {
          return;
        }
        if (details.nested) {
          preventReturnFocusRef.current = false;
        } else if (isVirtualClick(details.nativeEvent) || isVirtualPointerEvent(details.nativeEvent)) {
          preventReturnFocusRef.current = false;
        } else {
          let isPreventScrollSupported = false;
          ownerDocument(floatingFocusElement).createElement("div").focus({
            get preventScroll() {
              isPreventScrollSupported = true;
              return false;
            }
          });
          if (isPreventScrollSupported) {
            preventReturnFocusRef.current = false;
          } else {
            preventReturnFocusRef.current = true;
          }
        }
      }
      events.on("openchange", onOpenChangeLocal);
      function getReturnElement(closeType) {
        const returnFocusValueOrFn = returnFocusRef.current;
        let resolvedReturnFocusValue = typeof returnFocusValueOrFn === "function" ? returnFocusValueOrFn(closeType) : returnFocusValueOrFn;
        if (resolvedReturnFocusValue === void 0 || resolvedReturnFocusValue === false) {
          return null;
        }
        if (resolvedReturnFocusValue === null) {
          resolvedReturnFocusValue = true;
        }
        const referenceReturnElement = domReference?.isConnected ? domReference : null;
        const previousReturnElement = elementFocusedBeforeOpen?.isConnected && getNodeName(elementFocusedBeforeOpen) !== "body" ? elementFocusedBeforeOpen : null;
        let defaultReturnElement = preferPreviousFocus ? previousReturnElement || referenceReturnElement : referenceReturnElement || previousReturnElement;
        if (!defaultReturnElement) {
          defaultReturnElement = getPreviouslyFocusedElement() || null;
        }
        if (typeof resolvedReturnFocusValue === "boolean") {
          return defaultReturnElement;
        }
        return resolveRef(resolvedReturnFocusValue) || defaultReturnElement || null;
      }
      return () => {
        events.off("openchange", onOpenChangeLocal);
        const activeEl = activeElement(doc);
        const insideElements = getResolvedInsideElements();
        const isFocusInsideFloatingTree = contains(floating, activeEl) || insideElements.some((element) => element === activeEl || contains(element, activeEl)) || tree && getNodeChildren(tree.nodesRef.current, getNodeId(), false).some((node) => contains(node.context?.elements.floating, activeEl));
        const returnFocusValueOrFn = returnFocusRef.current;
        const closeType = closeTypeRef.current;
        const returnElement = getReturnElement(closeType);
        queueMicrotask(() => {
          const tabbableReturnElement = getFirstTabbableElement(returnElement);
          const hasExplicitReturnFocus = typeof returnFocusValueOrFn !== "boolean";
          if (returnFocusValueOrFn && !preventReturnFocusRef.current && isHTMLElement(tabbableReturnElement) && // If the focus moved somewhere else after mount, avoid returning focus
          // since it likely entered a different element which should be
          // respected: https://github.com/floating-ui/floating-ui/issues/2607
          (!hasExplicitReturnFocus && tabbableReturnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {
            const focusOptions = {
              preventScroll: true
            };
            if (closeType === "keyboard") {
              focusOptions.focusVisible = true;
            }
            tabbableReturnElement.focus(focusOptions);
          }
          preventReturnFocusRef.current = false;
        });
      };
    }, [disabled2, floating, floatingFocusElement, returnFocusRef, openInteractionTypeRef, events, tree, domReference, getNodeId, getResolvedInsideElements]);
    useIsoLayoutEffect(() => {
      if (!parts_exports.engine.webkit || open3 || !floating) {
        return;
      }
      const activeEl = activeElement(ownerDocument(floating));
      if (!isHTMLElement(activeEl) || !isTypeableElement(activeEl)) {
        return;
      }
      if (contains(floating, activeEl)) {
        activeEl.blur();
      }
    }, [open3, floating]);
    useIsoLayoutEffect(() => {
      if (disabled2 || !portalContext) {
        return void 0;
      }
      portalContext.setFocusManagerState({
        modal,
        closeOnFocusOut,
        open: open3,
        onOpenChange: store4.setOpen,
        domReference
      });
      return () => {
        portalContext.setFocusManagerState(null);
      };
    }, [disabled2, portalContext, modal, open3, store4, closeOnFocusOut, domReference]);
    useIsoLayoutEffect(() => {
      if (disabled2 || !floatingFocusElement) {
        return void 0;
      }
      handleTabIndex(floatingFocusElement);
      return () => {
        queueMicrotask(clearDisconnectedPreviouslyFocusedElements);
      };
    }, [disabled2, floatingFocusElement]);
    const shouldRenderGuards = !disabled2 && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal);
    return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(React25.Fragment, {
      children: [shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(FocusGuard, {
        "data-type": "inside",
        ref: mergedBeforeGuardRef,
        onFocus: (event) => {
          if (modal) {
            const els = getTabbableContent();
            void enqueueFocus(els[els.length - 1]);
          } else if (portalContext?.portalNode) {
            preventReturnFocusRef.current = false;
            if (isOutsideEvent(event, portalContext.portalNode)) {
              const nextTabbable = getNextTabbable(domReference);
              nextTabbable?.focus();
            } else {
              resolveRef(previousFocusableElement ?? portalContext.beforeOutsideRef)?.focus();
            }
          }
        }
      }), children, shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(FocusGuard, {
        "data-type": "inside",
        ref: mergedAfterGuardRef,
        onFocus: (event) => {
          if (modal) {
            void enqueueFocus(getTabbableContent()[0]);
          } else if (portalContext?.portalNode) {
            if (closeOnFocusOut) {
              preventReturnFocusRef.current = true;
            }
            if (isOutsideEvent(event, portalContext.portalNode)) {
              const prevTabbable = getPreviousTabbable(domReference);
              prevTabbable?.focus();
            } else {
              resolveRef(nextFocusableElement ?? portalContext.afterOutsideRef)?.focus();
            }
          }
        }
      })]
    });
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/useClick.mjs
  var React26 = __toESM(require_react(), 1);
  function useClick(context, props = {}) {
    const {
      enabled = true,
      event: eventOption = "click",
      toggle = true,
      ignoreMouse = false,
      stickIfOpen = true,
      touchOpenDelay = 0,
      reason = reason_parts_exports.triggerPress
    } = props;
    const store4 = "rootStore" in context ? context.rootStore : context;
    const dataRef = store4.context.dataRef;
    const pointerTypeRef = React26.useRef(void 0);
    const frame = useAnimationFrame();
    const touchOpenTimeout = useTimeout();
    const reference = React26.useMemo(() => {
      function setOpenWithTouchDelay(nextOpen, nativeEvent, target, pointerType) {
        const details = createChangeEventDetails(reason, nativeEvent, target);
        if (nextOpen && pointerType === "touch" && touchOpenDelay > 0) {
          touchOpenTimeout.start(touchOpenDelay, () => {
            store4.setOpen(true, details);
          });
        } else {
          store4.setOpen(nextOpen, details);
        }
      }
      function getNextOpen(open3, currentTarget, isClickLikeOpenEvent2) {
        const openEvent = dataRef.current.openEvent;
        const hasClickedOnInactiveTrigger = store4.select("domReferenceElement") !== currentTarget;
        if (open3 && hasClickedOnInactiveTrigger) {
          return true;
        }
        if (!open3) {
          return true;
        }
        if (!toggle) {
          return true;
        }
        if (openEvent && stickIfOpen) {
          return !isClickLikeOpenEvent2(openEvent.type);
        }
        return false;
      }
      return {
        onPointerDown(event) {
          pointerTypeRef.current = isMouseLikePointerType(event.pointerType, true) && isVirtualPointerEvent(event.nativeEvent) ? "virtual" : event.pointerType;
        },
        onMouseDown(event) {
          const pointerType = pointerTypeRef.current;
          const nativeEvent = event.nativeEvent;
          const open3 = store4.select("open");
          if (event.button !== 0 || eventOption === "click" || isMouseLikePointerType(pointerType, true) && ignoreMouse) {
            return;
          }
          const nextOpen = getNextOpen(open3, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown");
          const target = getTarget(nativeEvent);
          if (isTypeableElement(target)) {
            setOpenWithTouchDelay(nextOpen, nativeEvent, target, pointerType);
            return;
          }
          const eventCurrentTarget = event.currentTarget;
          frame.request(() => {
            setOpenWithTouchDelay(nextOpen, nativeEvent, eventCurrentTarget, pointerType);
          });
        },
        onClick(event) {
          if (eventOption === "mousedown-only") {
            return;
          }
          const pointerType = pointerTypeRef.current;
          if (eventOption === "mousedown" && pointerType) {
            pointerTypeRef.current = void 0;
            return;
          }
          if (isMouseLikePointerType(pointerType, true) && ignoreMouse) {
            return;
          }
          const open3 = store4.select("open");
          const nextOpen = getNextOpen(open3, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown" || openEventType === "keydown" || openEventType === "keyup");
          setOpenWithTouchDelay(nextOpen, event.nativeEvent, event.currentTarget, pointerType);
        },
        onKeyDown() {
          pointerTypeRef.current = void 0;
        }
      };
    }, [dataRef, eventOption, ignoreMouse, reason, store4, stickIfOpen, toggle, frame, touchOpenTimeout, touchOpenDelay]);
    return React26.useMemo(() => enabled ? {
      reference
    } : EMPTY_OBJECT2, [enabled, reference]);
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/useClientPoint.mjs
  var React27 = __toESM(require_react(), 1);
  function createVirtualElement(domElement, data) {
    let offsetX = null;
    let offsetY = null;
    let isAutoUpdateEvent = false;
    return {
      contextElement: domElement || void 0,
      getBoundingClientRect() {
        const domRect = domElement?.getBoundingClientRect() || {
          width: 0,
          height: 0,
          x: 0,
          y: 0
        };
        const isXAxis = data.axis === "x" || data.axis === "both";
        const isYAxis = data.axis === "y" || data.axis === "both";
        const canTrackCursorOnAutoUpdate = ["mouseenter", "mousemove"].includes(data.dataRef.current.openEvent?.type || "") && data.pointerType !== "touch";
        let width = domRect.width;
        let height = domRect.height;
        let x2 = domRect.x;
        let y3 = domRect.y;
        if (offsetX == null && data.x && isXAxis) {
          offsetX = domRect.x - data.x;
        }
        if (offsetY == null && data.y && isYAxis) {
          offsetY = domRect.y - data.y;
        }
        x2 -= offsetX || 0;
        y3 -= offsetY || 0;
        width = 0;
        height = 0;
        if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {
          width = data.axis === "y" ? domRect.width : 0;
          height = data.axis === "x" ? domRect.height : 0;
          x2 = isXAxis && data.x != null ? data.x : x2;
          y3 = isYAxis && data.y != null ? data.y : y3;
        } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {
          height = data.axis === "x" ? domRect.height : height;
          width = data.axis === "y" ? domRect.width : width;
        }
        isAutoUpdateEvent = true;
        return {
          width,
          height,
          x: x2,
          y: y3,
          top: y3,
          right: x2 + width,
          bottom: y3 + height,
          left: x2
        };
      }
    };
  }
  function isMouseBasedEvent(event) {
    return event != null && event.clientX != null;
  }
  function useClientPoint(context, props = {}) {
    const {
      enabled = true,
      axis = "both"
    } = props;
    const store4 = "rootStore" in context ? context.rootStore : context;
    const open3 = store4.useState("open");
    const floating = store4.useState("floatingElement");
    const domReference = store4.useState("domReferenceElement");
    const dataRef = store4.context.dataRef;
    const initialRef = React27.useRef(false);
    const cleanupListenerRef = React27.useRef(null);
    const [pointerType, setPointerType] = React27.useState();
    const [reactive, setReactive] = React27.useState([]);
    const resetReference = useStableCallback((reference2) => {
      store4.set("positionReference", reference2);
    });
    const setReference = useStableCallback((newX, newY, referenceElement) => {
      if (initialRef.current) {
        return;
      }
      if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {
        return;
      }
      store4.set("positionReference", createVirtualElement(referenceElement ?? domReference, {
        x: newX,
        y: newY,
        axis,
        dataRef,
        pointerType
      }));
    });
    const handleReferenceEnterOrMove = useStableCallback((event) => {
      if (!open3) {
        setReference(event.clientX, event.clientY, event.currentTarget);
      } else if (!cleanupListenerRef.current) {
        setReference(event.clientX, event.clientY, event.currentTarget);
        setReactive([]);
      }
    });
    const openCheck = isMouseLikePointerType(pointerType) ? floating : open3;
    React27.useEffect(() => {
      if (!enabled) {
        resetReference(domReference);
        return void 0;
      }
      if (!openCheck) {
        return void 0;
      }
      function cleanupListener() {
        cleanupListenerRef.current?.();
        cleanupListenerRef.current = null;
      }
      const win = getWindow(floating);
      function handleMouseMove(event) {
        const target = getTarget(event);
        if (!contains(floating, target)) {
          setReference(event.clientX, event.clientY);
        } else {
          cleanupListener();
        }
      }
      if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {
        cleanupListenerRef.current = addEventListener(win, "mousemove", handleMouseMove);
      } else {
        resetReference(domReference);
      }
      return cleanupListener;
    }, [openCheck, enabled, floating, dataRef, domReference, store4, setReference, resetReference, reactive]);
    React27.useEffect(() => () => {
      store4.set("positionReference", null);
    }, [store4]);
    React27.useEffect(() => {
      if (enabled && !floating) {
        initialRef.current = false;
      }
    }, [enabled, floating]);
    React27.useEffect(() => {
      if (!enabled && open3) {
        initialRef.current = true;
      }
    }, [enabled, open3]);
    const reference = React27.useMemo(() => {
      function setPointerTypeRef(event) {
        setPointerType(event.pointerType);
      }
      return {
        onPointerDown: setPointerTypeRef,
        onPointerEnter: setPointerTypeRef,
        onMouseMove: handleReferenceEnterOrMove,
        onMouseEnter: handleReferenceEnterOrMove
      };
    }, [handleReferenceEnterOrMove]);
    return React27.useMemo(() => enabled ? {
      reference,
      trigger: reference
    } : {}, [enabled, reference]);
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/useDismiss.mjs
  var React28 = __toESM(require_react(), 1);
  function alwaysFalse() {
    return false;
  }
  function normalizeProp(normalizable) {
    return {
      escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false,
      outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true
    };
  }
  function useDismiss(context, props = {}) {
    const {
      enabled = true,
      escapeKey: escapeKey2 = true,
      outsidePress: outsidePressProp = true,
      outsidePressEvent = "sloppy",
      referencePress = alwaysFalse,
      bubbles,
      externalTree
    } = props;
    const store4 = "rootStore" in context ? context.rootStore : context;
    const open3 = store4.useState("open");
    const floatingElement = store4.useState("floatingElement");
    const {
      dataRef,
      events
    } = store4.context;
    const tree = useFloatingTree(externalTree);
    const outsidePressFn = useStableCallback(typeof outsidePressProp === "function" ? outsidePressProp : () => false);
    const outsidePress2 = typeof outsidePressProp === "function" ? outsidePressFn : outsidePressProp;
    const outsidePressEnabled = outsidePress2 !== false;
    const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent);
    const {
      escapeKey: escapeKeyBubbles,
      outsidePress: outsidePressBubbles
    } = normalizeProp(bubbles);
    const pressStartedInsideRef = React28.useRef(false);
    const pressStartPreventedRef = React28.useRef(false);
    const suppressNextOutsideClickRef = React28.useRef(false);
    const sawPressWhileOpenRef = React28.useRef(false);
    const isComposingRef = React28.useRef(false);
    const currentPointerTypeRef = React28.useRef("");
    const touchStateRef = React28.useRef(null);
    const cancelDismissOnEndTimeout = useTimeout();
    const clearInsideReactTreeTimeout = useTimeout();
    const clearInsideReactTree = useStableCallback(() => {
      clearInsideReactTreeTimeout.clear();
      dataRef.current.insideReactTree = false;
    });
    const hasBlockingChild = useStableCallback((bubbleKey) => {
      const nodeId = dataRef.current.floatingContext?.nodeId;
      const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : [];
      return children.some((child) => child.context?.open && !child.context.dataRef.current[bubbleKey]);
    });
    const isEventWithinOwnElements = useStableCallback((event) => {
      return isEventTargetWithin(event, store4.select("floatingElement")) || isEventTargetWithin(event, store4.select("domReferenceElement"));
    });
    const closeOnReferencePress = useStableCallback((event) => {
      if (!referencePress()) {
        return;
      }
      store4.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent));
    });
    const closeOnEscapeKeyDown = useStableCallback((event) => {
      if (!open3 || !enabled || !escapeKey2 || event.key !== "Escape") {
        return;
      }
      if (isComposingRef.current) {
        return;
      }
      if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) {
        return;
      }
      const native = isReactEvent(event) ? event.nativeEvent : event;
      const eventDetails = createChangeEventDetails(reason_parts_exports.escapeKey, native);
      store4.setOpen(false, eventDetails);
      if (!eventDetails.isCanceled) {
        event.preventDefault();
      }
      if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) {
        event.stopPropagation();
      }
    });
    const markInsideReactTree = useStableCallback(() => {
      dataRef.current.insideReactTree = true;
      clearInsideReactTreeTimeout.start(0, clearInsideReactTree);
    });
    const markPressStartedInsideReactTree = useStableCallback((event) => {
      if (!open3 || !enabled || event.button !== 0) {
        return;
      }
      const target = getTarget(event.nativeEvent);
      if (!contains(store4.select("floatingElement"), target)) {
        return;
      }
      if (!pressStartedInsideRef.current) {
        pressStartedInsideRef.current = true;
        pressStartPreventedRef.current = false;
      }
    });
    const markInsidePressStartPrevented = useStableCallback((event) => {
      if (!open3 || !enabled) {
        return;
      }
      if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) {
        return;
      }
      if (pressStartedInsideRef.current) {
        pressStartPreventedRef.current = true;
      }
    });
    React28.useEffect(() => {
      function handleOpenChange(details) {
        if (!details.open) {
          sawPressWhileOpenRef.current = false;
        }
      }
      events.on("openchange", handleOpenChange);
      return () => {
        events.off("openchange", handleOpenChange);
      };
    }, [events]);
    React28.useEffect(() => {
      if (!open3 || !enabled) {
        if (!open3) {
          sawPressWhileOpenRef.current = false;
        }
        return clearInsideReactTree;
      }
      dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;
      dataRef.current.__outsidePressBubbles = outsidePressBubbles;
      const compositionTimeout = new Timeout();
      const preventedPressSuppressionTimeout = new Timeout();
      const doc = ownerDocument(floatingElement);
      function handleCompositionStart() {
        compositionTimeout.clear();
        isComposingRef.current = true;
      }
      function handleCompositionEnd() {
        compositionTimeout.start(
          // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.
          // Only apply to WebKit for the test to remain 0ms.
          parts_exports.engine.webkit ? 5 : 0,
          () => {
            isComposingRef.current = false;
          }
        );
      }
      function suppressImmediateOutsideClickAfterPreventedStart() {
        suppressNextOutsideClickRef.current = true;
        preventedPressSuppressionTimeout.start(0, () => {
          suppressNextOutsideClickRef.current = false;
        });
      }
      function resetPressStartState() {
        pressStartedInsideRef.current = false;
        pressStartPreventedRef.current = false;
      }
      function getOutsidePressEvent() {
        const type = currentPointerTypeRef.current;
        const computedType = type === "pen" || !type ? "mouse" : type;
        const outsidePressEventValue = getOutsidePressEventProp();
        const resolved = typeof outsidePressEventValue === "function" ? outsidePressEventValue() : outsidePressEventValue;
        if (typeof resolved === "string") {
          return resolved;
        }
        return resolved[computedType];
      }
      function shouldIgnoreEvent(event) {
        const computedOutsidePressEvent = getOutsidePressEvent();
        return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click";
      }
      function isEventWithinFloatingTree(event) {
        const nodeId = dataRef.current.floatingContext?.nodeId;
        const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some((node) => isEventTargetWithin(event, node.context?.elements.floating));
        return isEventWithinOwnElements(event) || targetIsInsideChildren;
      }
      function closeOnPressOutside(event) {
        if (shouldIgnoreEvent(event)) {
          if (event.type !== "click" && !isEventWithinOwnElements(event)) {
            preventedPressSuppressionTimeout.clear();
            suppressNextOutsideClickRef.current = false;
          }
          clearInsideReactTree();
          return;
        }
        if (dataRef.current.insideReactTree) {
          clearInsideReactTree();
          return;
        }
        const target = getTarget(event);
        const inertSelector = `[${createAttribute("inert")}]`;
        const targetRoot = isElement(target) ? target.getRootNode() : null;
        const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store4.select("floatingElement"))).querySelectorAll(inertSelector));
        const triggers = store4.context.triggerElements;
        if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => contains(trigger, target)))) {
          return;
        }
        let targetRootAncestor = isElement(target) ? target : null;
        while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {
          const nextParent = getParentNode(targetRootAncestor);
          if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {
            break;
          }
          targetRootAncestor = nextParent;
        }
        if (markers.length && isElement(target) && !isRootElement(target) && // Clicked on a direct ancestor (e.g. FloatingOverlay).
        !contains(target, store4.select("floatingElement")) && // If the target root element contains none of the markers, then the
        // element was injected after the floating element rendered.
        markers.every((marker) => !contains(targetRootAncestor, marker))) {
          return;
        }
        if (isHTMLElement(target) && !("touches" in event)) {
          const lastTraversableNode = isLastTraversableNode(target);
          const style = getComputedStyle2(target);
          const scrollRe = /auto|scroll/;
          const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX);
          const isScrollableY2 = lastTraversableNode || scrollRe.test(style.overflowY);
          const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;
          const canScrollY = isScrollableY2 && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;
          const isRTL27 = style.direction === "rtl";
          const pressedVerticalScrollbar = canScrollY && (isRTL27 ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth);
          const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight;
          if (pressedVerticalScrollbar || pressedHorizontalScrollbar) {
            return;
          }
        }
        if (isEventWithinFloatingTree(event)) {
          return;
        }
        if (getOutsidePressEvent() === "intentional") {
          if (event.detail !== 0 && !isVirtualClick(event) && !sawPressWhileOpenRef.current) {
            return;
          }
          if (suppressNextOutsideClickRef.current) {
            preventedPressSuppressionTimeout.clear();
            suppressNextOutsideClickRef.current = false;
            return;
          }
        }
        if (typeof outsidePress2 === "function" && !outsidePress2(event)) {
          return;
        }
        if (hasBlockingChild("__outsidePressBubbles")) {
          return;
        }
        store4.setOpen(false, createChangeEventDetails(reason_parts_exports.outsidePress, event));
        clearInsideReactTree();
      }
      function handlePointerDown(event) {
        if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store4.select("open") || !enabled || isEventWithinOwnElements(event)) {
          return;
        }
        closeOnPressOutside(event);
      }
      function handleTouchStart(event) {
        if (getOutsidePressEvent() !== "sloppy" || !store4.select("open") || !enabled || isEventWithinOwnElements(event)) {
          return;
        }
        const touch = event.touches[0];
        if (touch) {
          touchStateRef.current = {
            startTime: Date.now(),
            startX: touch.clientX,
            startY: touch.clientY,
            dismissOnTouchEnd: false,
            dismissOnMouseDown: true
          };
          cancelDismissOnEndTimeout.start(1e3, () => {
            if (touchStateRef.current) {
              touchStateRef.current.dismissOnTouchEnd = false;
              touchStateRef.current.dismissOnMouseDown = false;
            }
          });
        }
      }
      function addTargetEventListenerOnce(event, listener) {
        const target = getTarget(event);
        if (!target) {
          return;
        }
        const unsubscribe2 = addEventListener(target, event.type, () => {
          listener(event);
          unsubscribe2();
        });
      }
      function handleTouchStartCapture(event) {
        currentPointerTypeRef.current = "touch";
        addTargetEventListenerOnce(event, handleTouchStart);
      }
      function closeOnPressOutsideCapture(event) {
        cancelDismissOnEndTimeout.clear();
        if (event.type === "pointerdown") {
          if (event.button === 0) {
            sawPressWhileOpenRef.current = true;
          }
          currentPointerTypeRef.current = event.pointerType;
        }
        if (event.type === "mousedown" && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) {
          return;
        }
        addTargetEventListenerOnce(event, (targetEvent) => {
          if (targetEvent.type === "pointerdown") {
            handlePointerDown(targetEvent);
          } else {
            closeOnPressOutside(targetEvent);
          }
        });
      }
      function handlePressEndCapture(event) {
        if (event.type === "pointercancel") {
          sawPressWhileOpenRef.current = false;
        }
        if (!pressStartedInsideRef.current) {
          return;
        }
        const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current;
        resetPressStartState();
        if (getOutsidePressEvent() !== "intentional") {
          return;
        }
        if (event.type === "pointercancel") {
          if (pressStartedInsideDefaultPrevented) {
            suppressImmediateOutsideClickAfterPreventedStart();
          }
          return;
        }
        if (isEventWithinFloatingTree(event)) {
          return;
        }
        if (pressStartedInsideDefaultPrevented) {
          suppressImmediateOutsideClickAfterPreventedStart();
          return;
        }
        if (typeof outsidePress2 === "function" && !outsidePress2(event)) {
          return;
        }
        preventedPressSuppressionTimeout.clear();
        suppressNextOutsideClickRef.current = true;
        clearInsideReactTree();
      }
      function handleTouchMove(event) {
        if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) {
          return;
        }
        const touch = event.touches[0];
        if (!touch) {
          return;
        }
        const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX);
        const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY);
        const distance2 = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
        if (distance2 > 5) {
          touchStateRef.current.dismissOnTouchEnd = true;
        }
        if (distance2 > 10) {
          closeOnPressOutside(event);
          cancelDismissOnEndTimeout.clear();
          touchStateRef.current = null;
        }
      }
      function handleTouchMoveCapture(event) {
        addTargetEventListenerOnce(event, handleTouchMove);
      }
      function handleTouchEnd(event) {
        if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) {
          return;
        }
        if (touchStateRef.current.dismissOnTouchEnd) {
          closeOnPressOutside(event);
        }
        cancelDismissOnEndTimeout.clear();
        touchStateRef.current = null;
      }
      function handleTouchEndCapture(event) {
        addTargetEventListenerOnce(event, handleTouchEnd);
      }
      const unsubscribe = mergeCleanups(escapeKey2 && mergeCleanups(addEventListener(doc, "keydown", closeOnEscapeKeyDown), addEventListener(doc, "compositionstart", handleCompositionStart), addEventListener(doc, "compositionend", handleCompositionEnd)), outsidePressEnabled && mergeCleanups(addEventListener(doc, "click", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerdown", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerup", handlePressEndCapture, true), addEventListener(doc, "pointercancel", handlePressEndCapture, true), addEventListener(doc, "mousedown", closeOnPressOutsideCapture, true), addEventListener(doc, "mouseup", handlePressEndCapture, true), addEventListener(doc, "touchstart", handleTouchStartCapture, {
        capture: true,
        passive: true
      }), addEventListener(doc, "touchmove", handleTouchMoveCapture, {
        capture: true,
        passive: true
      }), addEventListener(doc, "touchend", handleTouchEndCapture, {
        capture: true,
        passive: true
      })));
      return () => {
        unsubscribe();
        compositionTimeout.clear();
        preventedPressSuppressionTimeout.clear();
        resetPressStartState();
        suppressNextOutsideClickRef.current = false;
        clearInsideReactTree();
      };
    }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open3, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, hasBlockingChild, isEventWithinOwnElements, tree, store4, cancelDismissOnEndTimeout]);
    const reference = React28.useMemo(() => ({
      onKeyDown: closeOnEscapeKeyDown,
      onPointerDown: closeOnReferencePress,
      onClick: closeOnReferencePress
    }), [closeOnEscapeKeyDown, closeOnReferencePress]);
    const floating = React28.useMemo(() => ({
      onKeyDown: closeOnEscapeKeyDown,
      // `onMouseDown` may be blocked if `event.preventDefault()` is called in
      // `onPointerDown`, such as with <NumberField.ScrubArea>.
      // See https://github.com/mui/base-ui/pull/3379
      onPointerDown: markInsidePressStartPrevented,
      onMouseDown: markInsidePressStartPrevented,
      onClickCapture: markInsideReactTree,
      onMouseDownCapture(event) {
        markInsideReactTree();
        markPressStartedInsideReactTree(event);
      },
      onPointerDownCapture(event) {
        markInsideReactTree();
        markPressStartedInsideReactTree(event);
      },
      onMouseUpCapture: markInsideReactTree,
      onTouchEndCapture: markInsideReactTree,
      onTouchMoveCapture: markInsideReactTree
    }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]);
    return React28.useMemo(() => enabled ? {
      reference,
      floating,
      trigger: reference
    } : {}, [enabled, reference, floating]);
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/useFloating.mjs
  var React37 = __toESM(require_react(), 1);

  // node_modules/@floating-ui/core/dist/floating-ui.core.mjs
  function computeCoordsFromPlacement(_ref, placement, rtl) {
    let {
      reference,
      floating
    } = _ref;
    const sideAxis = getSideAxis(placement);
    const alignmentAxis = getAlignmentAxis(placement);
    const alignLength = getAxisLength(alignmentAxis);
    const side = getSide(placement);
    const isVertical = sideAxis === "y";
    const commonX = reference.x + reference.width / 2 - floating.width / 2;
    const commonY = reference.y + reference.height / 2 - floating.height / 2;
    const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
    let coords;
    switch (side) {
      case "top":
        coords = {
          x: commonX,
          y: reference.y - floating.height
        };
        break;
      case "bottom":
        coords = {
          x: commonX,
          y: reference.y + reference.height
        };
        break;
      case "right":
        coords = {
          x: reference.x + reference.width,
          y: commonY
        };
        break;
      case "left":
        coords = {
          x: reference.x - floating.width,
          y: commonY
        };
        break;
      default:
        coords = {
          x: reference.x,
          y: reference.y
        };
    }
    const alignment = getAlignment(placement);
    if (alignment) {
      coords[alignmentAxis] += commonAlign * (alignment === "end" ? 1 : -1) * (rtl && isVertical ? -1 : 1);
    }
    return coords;
  }
  async function detectOverflow(state2, options) {
    var _await$platform$isEle;
    if (options === void 0) {
      options = {};
    }
    const {
      x: x2,
      y: y3,
      platform: platform3,
      rects,
      elements: elements2,
      strategy
    } = state2;
    const {
      boundary = "clippingAncestors",
      rootBoundary = "viewport",
      elementContext = "floating",
      altBoundary = false,
      padding = 0
    } = evaluate(options, state2);
    const paddingObject = getPaddingObject(padding);
    const altContext = elementContext === "floating" ? "reference" : "floating";
    const element = elements2[altBoundary ? altContext : elementContext];
    const clippingClientRect = rectToClientRect(await platform3.getClippingRect({
      element: ((_await$platform$isEle = await (platform3.isElement == null ? void 0 : platform3.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform3.getDocumentElement == null ? void 0 : platform3.getDocumentElement(elements2.floating)),
      boundary,
      rootBoundary,
      strategy
    }));
    const rect = elementContext === "floating" ? {
      x: x2,
      y: y3,
      width: rects.floating.width,
      height: rects.floating.height
    } : rects.reference;
    const offsetParent = await (platform3.getOffsetParent == null ? void 0 : platform3.getOffsetParent(elements2.floating));
    const offsetScale = await (platform3.isElement == null ? void 0 : platform3.isElement(offsetParent)) && await (platform3.getScale == null ? void 0 : platform3.getScale(offsetParent)) || {
      x: 1,
      y: 1
    };
    const elementClientRect = rectToClientRect(platform3.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform3.convertOffsetParentRelativeRectToViewportRelativeRect({
      elements: elements2,
      rect,
      offsetParent,
      strategy
    }) : rect);
    return {
      top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
      bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
      left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
      right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
    };
  }
  var MAX_RESET_COUNT = 50;
  var computePosition = async (reference, floating, config2) => {
    const {
      placement = "bottom",
      strategy = "absolute",
      middleware = [],
      platform: platform3
    } = config2;
    const platformWithDetectOverflow = platform3.detectOverflow ? platform3 : {
      ...platform3,
      detectOverflow
    };
    const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(floating));
    let rects = await platform3.getElementRects({
      reference,
      floating,
      strategy
    });
    let {
      x: x2,
      y: y3
    } = computeCoordsFromPlacement(rects, placement, rtl);
    let statefulPlacement = placement;
    let resetCount = 0;
    const middlewareData = {};
    for (let i2 = 0; i2 < middleware.length; i2++) {
      const currentMiddleware = middleware[i2];
      if (!currentMiddleware) {
        continue;
      }
      const {
        name: name2,
        fn
      } = currentMiddleware;
      const {
        x: nextX,
        y: nextY,
        data,
        reset
      } = await fn({
        x: x2,
        y: y3,
        initialPlacement: placement,
        placement: statefulPlacement,
        strategy,
        middlewareData,
        rects,
        platform: platformWithDetectOverflow,
        elements: {
          reference,
          floating
        }
      });
      x2 = nextX != null ? nextX : x2;
      y3 = nextY != null ? nextY : y3;
      middlewareData[name2] = {
        ...middlewareData[name2],
        ...data
      };
      if (reset && resetCount < MAX_RESET_COUNT) {
        resetCount++;
        if (typeof reset === "object") {
          if (reset.placement) {
            statefulPlacement = reset.placement;
          }
          if (reset.rects) {
            rects = reset.rects === true ? await platform3.getElementRects({
              reference,
              floating,
              strategy
            }) : reset.rects;
          }
          ({
            x: x2,
            y: y3
          } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
        }
        i2 = -1;
      }
    }
    return {
      x: x2,
      y: y3,
      placement: statefulPlacement,
      strategy,
      middlewareData
    };
  };
  var flip = function(options) {
    if (options === void 0) {
      options = {};
    }
    return {
      name: "flip",
      options,
      async fn(state2) {
        var _middlewareData$arrow, _middlewareData$flip;
        const {
          placement,
          middlewareData,
          rects,
          initialPlacement,
          platform: platform3,
          elements: elements2
        } = state2;
        const {
          mainAxis: checkMainAxis = true,
          crossAxis: checkCrossAxis = true,
          fallbackPlacements: specifiedFallbackPlacements,
          fallbackStrategy = "bestFit",
          fallbackAxisSideDirection = "none",
          flipAlignment = true,
          ...detectOverflowOptions
        } = evaluate(options, state2);
        if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
          return {};
        }
        const side = getSide(placement);
        const initialSideAxis = getSideAxis(initialPlacement);
        const isBasePlacement = getSide(initialPlacement) === initialPlacement;
        const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements2.floating));
        const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
        const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none";
        if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {
          fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
        }
        const placements2 = [initialPlacement, ...fallbackPlacements];
        const overflow = await platform3.detectOverflow(state2, detectOverflowOptions);
        const overflows = [];
        let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
        if (checkMainAxis) {
          overflows.push(overflow[side]);
        }
        if (checkCrossAxis) {
          const sides3 = getAlignmentSides(placement, rects, rtl);
          overflows.push(overflow[sides3[0]], overflow[sides3[1]]);
        }
        overflowsData = [...overflowsData, {
          placement,
          overflows
        }];
        if (!overflows.every((side2) => side2 <= 0)) {
          var _middlewareData$flip2, _overflowsData$filter;
          const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
          const nextPlacement = placements2[nextIndex];
          if (nextPlacement) {
            const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false;
            if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis
            // overflows the main axis.
            overflowsData.every((d2) => getSideAxis(d2.placement) === initialSideAxis ? d2.overflows[0] > 0 : true)) {
              return {
                data: {
                  index: nextIndex,
                  overflows: overflowsData
                },
                reset: {
                  placement: nextPlacement
                }
              };
            }
          }
          let resetPlacement = (_overflowsData$filter = overflowsData.filter((d2) => d2.overflows[0] <= 0).sort((a2, b2) => a2.overflows[1] - b2.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;
          if (!resetPlacement) {
            switch (fallbackStrategy) {
              case "bestFit": {
                var _overflowsData$filter2;
                const placement2 = (_overflowsData$filter2 = overflowsData.filter((d2) => {
                  if (hasFallbackAxisSideDirection) {
                    const currentSideAxis = getSideAxis(d2.placement);
                    return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal
                    // reading directions favoring greater width.
                    currentSideAxis === "y";
                  }
                  return true;
                }).map((d2) => [d2.placement, d2.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a2, b2) => a2[1] - b2[1])[0]) == null ? void 0 : _overflowsData$filter2[0];
                if (placement2) {
                  resetPlacement = placement2;
                }
                break;
              }
              case "initialPlacement":
                resetPlacement = initialPlacement;
                break;
            }
          }
          if (placement !== resetPlacement) {
            return {
              reset: {
                placement: resetPlacement
              }
            };
          }
        }
        return {};
      }
    };
  };
  var originSides = /* @__PURE__ */ new Set(["left", "top"]);
  async function convertValueToCoords(state2, options) {
    const {
      placement,
      platform: platform3,
      elements: elements2
    } = state2;
    const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements2.floating));
    const side = getSide(placement);
    const alignment = getAlignment(placement);
    const isVertical = getSideAxis(placement) === "y";
    const mainAxisMulti = originSides.has(side) ? -1 : 1;
    const crossAxisMulti = rtl && isVertical ? -1 : 1;
    const rawValue = evaluate(options, state2);
    let {
      mainAxis,
      crossAxis,
      alignmentAxis
    } = typeof rawValue === "number" ? {
      mainAxis: rawValue,
      crossAxis: 0,
      alignmentAxis: null
    } : {
      mainAxis: rawValue.mainAxis || 0,
      crossAxis: rawValue.crossAxis || 0,
      alignmentAxis: rawValue.alignmentAxis
    };
    if (alignment && typeof alignmentAxis === "number") {
      crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis;
    }
    return isVertical ? {
      x: crossAxis * crossAxisMulti,
      y: mainAxis * mainAxisMulti
    } : {
      x: mainAxis * mainAxisMulti,
      y: crossAxis * crossAxisMulti
    };
  }
  var offset = function(options) {
    if (options === void 0) {
      options = 0;
    }
    return {
      name: "offset",
      options,
      async fn(state2) {
        var _middlewareData$offse, _middlewareData$arrow;
        const {
          x: x2,
          y: y3,
          placement,
          middlewareData
        } = state2;
        const diffCoords = await convertValueToCoords(state2, options);
        if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
          return {};
        }
        return {
          x: x2 + diffCoords.x,
          y: y3 + diffCoords.y,
          data: {
            ...diffCoords,
            placement
          }
        };
      }
    };
  };
  var shift = function(options) {
    if (options === void 0) {
      options = {};
    }
    return {
      name: "shift",
      options,
      async fn(state2) {
        const {
          x: x2,
          y: y3,
          placement,
          platform: platform3
        } = state2;
        const {
          mainAxis: checkMainAxis = true,
          crossAxis: checkCrossAxis = false,
          limiter = {
            fn: (_ref) => {
              let {
                x: x3,
                y: y4
              } = _ref;
              return {
                x: x3,
                y: y4
              };
            }
          },
          ...detectOverflowOptions
        } = evaluate(options, state2);
        const coords = {
          x: x2,
          y: y3
        };
        const overflow = await platform3.detectOverflow(state2, detectOverflowOptions);
        const crossAxis = getSideAxis(placement);
        const mainAxis = getOppositeAxis(crossAxis);
        let mainAxisCoord = coords[mainAxis];
        let crossAxisCoord = coords[crossAxis];
        const clampCoord = (axis, coord) => clamp(coord + overflow[axis === "y" ? "top" : "left"], coord, coord - overflow[axis === "y" ? "bottom" : "right"]);
        if (checkMainAxis) {
          mainAxisCoord = clampCoord(mainAxis, mainAxisCoord);
        }
        if (checkCrossAxis) {
          crossAxisCoord = clampCoord(crossAxis, crossAxisCoord);
        }
        const limitedCoords = limiter.fn({
          ...state2,
          [mainAxis]: mainAxisCoord,
          [crossAxis]: crossAxisCoord
        });
        return {
          ...limitedCoords,
          data: {
            x: limitedCoords.x - x2,
            y: limitedCoords.y - y3,
            enabled: {
              [mainAxis]: checkMainAxis,
              [crossAxis]: checkCrossAxis
            }
          }
        };
      }
    };
  };
  var limitShift = function(options) {
    if (options === void 0) {
      options = {};
    }
    return {
      options,
      fn(state2) {
        var _rawOffset$mainAxis, _rawOffset$crossAxis;
        const {
          x: x2,
          y: y3,
          placement,
          rects,
          middlewareData
        } = state2;
        const {
          offset: offset4 = 0,
          mainAxis: checkMainAxis = true,
          crossAxis: checkCrossAxis = true
        } = evaluate(options, state2);
        const coords = {
          x: x2,
          y: y3
        };
        const crossAxis = getSideAxis(placement);
        const mainAxis = getOppositeAxis(crossAxis);
        let mainAxisCoord = coords[mainAxis];
        let crossAxisCoord = coords[crossAxis];
        const rawOffset = evaluate(offset4, state2);
        const computedOffset = typeof rawOffset === "number" ? {
          mainAxis: rawOffset,
          crossAxis: 0
        } : {
          mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0,
          crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0
        };
        if (checkMainAxis) {
          const len2 = mainAxis === "y" ? "height" : "width";
          const limitMin = rects.reference[mainAxis] - rects.floating[len2] + computedOffset.mainAxis;
          const limitMax = rects.reference[mainAxis] + rects.reference[len2] - computedOffset.mainAxis;
          if (mainAxisCoord < limitMin) {
            mainAxisCoord = limitMin;
          } else if (mainAxisCoord > limitMax) {
            mainAxisCoord = limitMax;
          }
        }
        if (checkCrossAxis) {
          var _middlewareData$offse, _middlewareData$offse2;
          const len2 = mainAxis === "y" ? "width" : "height";
          const isOriginSide = originSides.has(getSide(placement));
          const limitMin = rects.reference[crossAxis] - rects.floating[len2] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);
          const limitMax = rects.reference[crossAxis] + rects.reference[len2] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);
          if (crossAxisCoord < limitMin) {
            crossAxisCoord = limitMin;
          } else if (crossAxisCoord > limitMax) {
            crossAxisCoord = limitMax;
          }
        }
        return {
          [mainAxis]: mainAxisCoord,
          [crossAxis]: crossAxisCoord
        };
      }
    };
  };
  var size = function(options) {
    if (options === void 0) {
      options = {};
    }
    return {
      name: "size",
      options,
      async fn(state2) {
        const {
          placement,
          rects,
          platform: platform3,
          elements: elements2
        } = state2;
        const {
          apply = () => {
          },
          ...detectOverflowOptions
        } = evaluate(options, state2);
        const overflow = await platform3.detectOverflow(state2, detectOverflowOptions);
        const side = getSide(placement);
        const alignment = getAlignment(placement);
        const isYAxis = getSideAxis(placement) === "y";
        const {
          width,
          height
        } = rects.floating;
        let heightSide;
        let widthSide;
        if (side === "top" || side === "bottom") {
          heightSide = side;
          widthSide = alignment === (await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements2.floating)) ? "start" : "end") ? "left" : "right";
        } else {
          widthSide = side;
          heightSide = alignment === "end" ? "top" : "bottom";
        }
        const maximumClippingHeight = height - overflow.top - overflow.bottom;
        const maximumClippingWidth = width - overflow.left - overflow.right;
        const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);
        const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);
        const shiftData = state2.middlewareData.shift;
        const noShift = !shiftData;
        let availableHeight2 = overflowAvailableHeight;
        let availableWidth2 = overflowAvailableWidth;
        if (shiftData != null && shiftData.enabled.x) {
          availableWidth2 = maximumClippingWidth;
        }
        if (shiftData != null && shiftData.enabled.y) {
          availableHeight2 = maximumClippingHeight;
        }
        if (noShift && !alignment) {
          if (isYAxis) {
            availableWidth2 = width - 2 * max(overflow.left, overflow.right);
          } else {
            availableHeight2 = height - 2 * max(overflow.top, overflow.bottom);
          }
        }
        await apply({
          ...state2,
          availableWidth: availableWidth2,
          availableHeight: availableHeight2
        });
        const nextDimensions = await platform3.getDimensions(elements2.floating);
        if (width !== nextDimensions.width || height !== nextDimensions.height) {
          return {
            reset: {
              rects: true
            }
          };
        }
        return {};
      }
    };
  };

  // node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs
  function getCssDimensions(element) {
    const css = getComputedStyle2(element);
    let width = parseFloat(css.width) || 0;
    let height = parseFloat(css.height) || 0;
    const hasOffset = isHTMLElement(element);
    const offsetWidth = hasOffset ? element.offsetWidth : width;
    const offsetHeight = hasOffset ? element.offsetHeight : height;
    const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
    if (shouldFallback) {
      width = offsetWidth;
      height = offsetHeight;
    }
    return {
      width,
      height,
      $: shouldFallback
    };
  }
  function unwrapElement(element) {
    return !isElement(element) ? element.contextElement : element;
  }
  function getScale(element) {
    const domElement = unwrapElement(element);
    if (!isHTMLElement(domElement)) {
      return createCoords(1);
    }
    const rect = domElement.getBoundingClientRect();
    const {
      width,
      height,
      $: $2
    } = getCssDimensions(domElement);
    let x2 = ($2 ? round(rect.width) : rect.width) / width;
    let y3 = ($2 ? round(rect.height) : rect.height) / height;
    if (!x2 || !Number.isFinite(x2)) {
      x2 = 1;
    }
    if (!y3 || !Number.isFinite(y3)) {
      y3 = 1;
    }
    return {
      x: x2,
      y: y3
    };
  }
  var noOffsets = /* @__PURE__ */ createCoords(0);
  function getVisualOffsets(element) {
    const win = getWindow(element);
    if (!isWebKit() || !win.visualViewport) {
      return noOffsets;
    }
    return {
      x: win.visualViewport.offsetLeft,
      y: win.visualViewport.offsetTop
    };
  }
  function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
    if (isFixed === void 0) {
      isFixed = false;
    }
    return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element);
  }
  function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
    if (includeScale === void 0) {
      includeScale = false;
    }
    if (isFixedStrategy === void 0) {
      isFixedStrategy = false;
    }
    const clientRect = element.getBoundingClientRect();
    const domElement = unwrapElement(element);
    let scale3 = createCoords(1);
    if (includeScale) {
      if (offsetParent) {
        if (isElement(offsetParent)) {
          scale3 = getScale(offsetParent);
        }
      } else {
        scale3 = getScale(element);
      }
    }
    const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);
    let x2 = (clientRect.left + visualOffsets.x) / scale3.x;
    let y3 = (clientRect.top + visualOffsets.y) / scale3.y;
    let width = clientRect.width / scale3.x;
    let height = clientRect.height / scale3.y;
    if (domElement && offsetParent) {
      const win = getWindow(domElement);
      const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
      let currentWin = win;
      let currentIFrame = getFrameElement(currentWin);
      while (currentIFrame && offsetWin !== currentWin) {
        const iframeScale = getScale(currentIFrame);
        const iframeRect = currentIFrame.getBoundingClientRect();
        const css = getComputedStyle2(currentIFrame);
        const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;
        const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;
        x2 *= iframeScale.x;
        y3 *= iframeScale.y;
        width *= iframeScale.x;
        height *= iframeScale.y;
        x2 += left;
        y3 += top;
        currentWin = getWindow(currentIFrame);
        currentIFrame = getFrameElement(currentWin);
      }
    }
    return rectToClientRect({
      width,
      height,
      x: x2,
      y: y3
    });
  }
  function getWindowScrollBarX(element, rect) {
    const leftScroll = getNodeScroll(element).scrollLeft;
    if (!rect) {
      return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;
    }
    return rect.left + leftScroll;
  }
  function getHTMLOffset(documentElement, scroll) {
    const htmlRect = documentElement.getBoundingClientRect();
    const x2 = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);
    const y3 = htmlRect.top + scroll.scrollTop;
    return {
      x: x2,
      y: y3
    };
  }
  function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
    let {
      elements: elements2,
      rect,
      offsetParent,
      strategy
    } = _ref;
    const isFixed = strategy === "fixed";
    const documentElement = getDocumentElement(offsetParent);
    const topLayer = elements2 ? isTopLayer(elements2.floating) : false;
    if (offsetParent === documentElement || topLayer && isFixed) {
      return rect;
    }
    let scroll = {
      scrollLeft: 0,
      scrollTop: 0
    };
    let scale3 = createCoords(1);
    const offsets = createCoords(0);
    const isOffsetParentAnElement = isHTMLElement(offsetParent);
    if (isOffsetParentAnElement || !isFixed) {
      if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
        scroll = getNodeScroll(offsetParent);
      }
      if (isOffsetParentAnElement) {
        const offsetRect = getBoundingClientRect(offsetParent);
        scale3 = getScale(offsetParent);
        offsets.x = offsetRect.x + offsetParent.clientLeft;
        offsets.y = offsetRect.y + offsetParent.clientTop;
      }
    }
    const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
    return {
      width: rect.width * scale3.x,
      height: rect.height * scale3.y,
      x: rect.x * scale3.x - scroll.scrollLeft * scale3.x + offsets.x + htmlOffset.x,
      y: rect.y * scale3.y - scroll.scrollTop * scale3.y + offsets.y + htmlOffset.y
    };
  }
  function getClientRects(element) {
    return element.getClientRects ? Array.from(element.getClientRects()) : [];
  }
  function getDocumentRect(html) {
    const scroll = getNodeScroll(html);
    const body = html.ownerDocument.body;
    const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
    const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
    let x2 = -scroll.scrollLeft + getWindowScrollBarX(html);
    const y3 = -scroll.scrollTop;
    if (getComputedStyle2(body).direction === "rtl") {
      x2 += max(html.clientWidth, body.clientWidth) - width;
    }
    return {
      width,
      height,
      x: x2,
      y: y3
    };
  }
  var SCROLLBAR_MAX = 25;
  function getViewportRect(element, strategy, rootBoundary) {
    if (rootBoundary === void 0) {
      rootBoundary = "viewport";
    }
    const isLayoutViewport = rootBoundary === "layoutViewport";
    const win = getWindow(element);
    const html = getDocumentElement(element);
    const visualViewport = win.visualViewport;
    let width = html.clientWidth;
    let height = html.clientHeight;
    let x2 = 0;
    let y3 = 0;
    if (visualViewport) {
      const layoutRelativeClientCoords = !isWebKit() || strategy === "fixed";
      if (isLayoutViewport) {
        if (!layoutRelativeClientCoords) {
          x2 = -visualViewport.offsetLeft;
          y3 = -visualViewport.offsetTop;
        }
      } else {
        width = visualViewport.width;
        height = visualViewport.height;
        if (layoutRelativeClientCoords) {
          x2 = visualViewport.offsetLeft;
          y3 = visualViewport.offsetTop;
        }
      }
    }
    const windowScrollbarX = getWindowScrollBarX(html);
    if (windowScrollbarX <= 0) {
      const doc = html.ownerDocument;
      const body = doc.body;
      const bodyStyles = getComputedStyle(body);
      const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
      const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
      const gutter = getComputedStyle(html).scrollbarGutter === "stable both-edges" ? reservedWidth / 2 : reservedWidth;
      if (gutter <= SCROLLBAR_MAX) {
        width -= gutter;
      }
    }
    return {
      width,
      height,
      x: x2,
      y: y3
    };
  }
  function getInnerBoundingClientRect(element, strategy) {
    const clientRect = getBoundingClientRect(element, true, strategy === "fixed");
    const top = clientRect.top + element.clientTop;
    const left = clientRect.left + element.clientLeft;
    const scale3 = getScale(element);
    const width = element.clientWidth * scale3.x;
    const height = element.clientHeight * scale3.y;
    const x2 = left * scale3.x;
    const y3 = top * scale3.y;
    return {
      width,
      height,
      x: x2,
      y: y3
    };
  }
  function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
    let rect;
    if (clippingAncestor === "viewport" || clippingAncestor === "layoutViewport") {
      rect = getViewportRect(element, strategy, clippingAncestor);
    } else if (clippingAncestor === "document") {
      rect = getDocumentRect(getDocumentElement(element));
    } else if (isElement(clippingAncestor)) {
      rect = getInnerBoundingClientRect(clippingAncestor, strategy);
    } else {
      const visualOffsets = getVisualOffsets(element);
      rect = {
        x: clippingAncestor.x - visualOffsets.x,
        y: clippingAncestor.y - visualOffsets.y,
        width: clippingAncestor.width,
        height: clippingAncestor.height
      };
    }
    return rectToClientRect(rect);
  }
  function getClippingElementAncestors(element, cache) {
    const cachedResult = cache.get(element);
    if (cachedResult) {
      return cachedResult;
    }
    let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body");
    let lastKeptComputedStyle = null;
    const elementIsFixed = getComputedStyle2(element).position === "fixed";
    let currentNode = elementIsFixed ? getParentNode(element) : element;
    while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
      const computedStyle = getComputedStyle2(currentNode);
      const currentNodeIsContaining = isContainingBlock(currentNode);
      const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? "fixed" : "";
      const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === "fixed" || lastPosition === "absolute" && computedStyle.position === "static");
      if (shouldDropCurrentNode) {
        result = result.filter((ancestor) => ancestor !== currentNode);
      } else {
        lastKeptComputedStyle = computedStyle;
      }
      currentNode = getParentNode(currentNode);
    }
    cache.set(element, result);
    return result;
  }
  function getClippingRect(_ref) {
    let {
      element,
      boundary,
      rootBoundary,
      strategy
    } = _ref;
    const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
    const clippingAncestors = [...elementClippingAncestors, rootBoundary];
    const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);
    let top = firstRect.top;
    let right = firstRect.right;
    let bottom = firstRect.bottom;
    let left = firstRect.left;
    for (let i2 = 1; i2 < clippingAncestors.length; i2++) {
      const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i2], strategy);
      top = max(rect.top, top);
      right = min(rect.right, right);
      bottom = min(rect.bottom, bottom);
      left = max(rect.left, left);
    }
    return {
      width: right - left,
      height: bottom - top,
      x: left,
      y: top
    };
  }
  function getDimensions2(element) {
    const {
      width,
      height
    } = getCssDimensions(element);
    return {
      width,
      height
    };
  }
  function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
    const isOffsetParentAnElement = isHTMLElement(offsetParent);
    const documentElement = getDocumentElement(offsetParent);
    const isFixed = strategy === "fixed";
    const rect = getBoundingClientRect(element, true, isFixed, offsetParent);
    let scroll = {
      scrollLeft: 0,
      scrollTop: 0
    };
    const offsets = createCoords(0);
    if (isOffsetParentAnElement || !isFixed) {
      if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
        scroll = getNodeScroll(offsetParent);
      }
      if (isOffsetParentAnElement) {
        const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
        offsets.x = offsetRect.x + offsetParent.clientLeft;
        offsets.y = offsetRect.y + offsetParent.clientTop;
      }
    }
    if (!isOffsetParentAnElement && documentElement) {
      offsets.x = getWindowScrollBarX(documentElement);
    }
    const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
    const x2 = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
    const y3 = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
    return {
      x: x2,
      y: y3,
      width: rect.width,
      height: rect.height
    };
  }
  function isStaticPositioned(element) {
    return getComputedStyle2(element).position === "static";
  }
  function getTrueOffsetParent(element, polyfill) {
    if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") {
      return null;
    }
    if (polyfill) {
      return polyfill(element);
    }
    let rawOffsetParent = element.offsetParent;
    if (getDocumentElement(element) === rawOffsetParent) {
      rawOffsetParent = rawOffsetParent.ownerDocument.body;
    }
    return rawOffsetParent;
  }
  function getOffsetParent(element, polyfill) {
    const win = getWindow(element);
    if (isTopLayer(element)) {
      return win;
    }
    if (!isHTMLElement(element)) {
      let svgOffsetParent = getParentNode(element);
      while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {
        if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {
          return svgOffsetParent;
        }
        svgOffsetParent = getParentNode(svgOffsetParent);
      }
      return win;
    }
    let offsetParent = getTrueOffsetParent(element, polyfill);
    while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {
      offsetParent = getTrueOffsetParent(offsetParent, polyfill);
    }
    if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {
      return win;
    }
    return offsetParent || getContainingBlock(element) || win;
  }
  var getElementRects = async function(data) {
    const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
    const getDimensionsFn = this.getDimensions;
    const floatingDimensions = await getDimensionsFn(data.floating);
    return {
      reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
      floating: {
        x: 0,
        y: 0,
        width: floatingDimensions.width,
        height: floatingDimensions.height
      }
    };
  };
  function isRTL(element) {
    return getComputedStyle2(element).direction === "rtl";
  }
  var platform2 = {
    convertOffsetParentRelativeRectToViewportRelativeRect,
    getDocumentElement,
    getClippingRect,
    getOffsetParent,
    getElementRects,
    getClientRects,
    getDimensions: getDimensions2,
    getScale,
    isElement,
    isRTL
  };
  function rectsAreEqual(a2, b2) {
    return a2.x === b2.x && a2.y === b2.y && a2.width === b2.width && a2.height === b2.height;
  }
  function observeMove(element, onMove, ancestorResize) {
    let io = null;
    let timeoutId;
    const root = getDocumentElement(element);
    function cleanup() {
      var _io;
      clearTimeout(timeoutId);
      (_io = io) == null || _io.disconnect();
      io = null;
    }
    function refresh(skip, threshold) {
      if (skip === void 0) {
        skip = false;
      }
      if (threshold === void 0) {
        threshold = 1;
      }
      cleanup();
      const elementRectForRootMargin = element.getBoundingClientRect();
      const {
        left,
        top,
        width,
        height
      } = elementRectForRootMargin;
      if (!skip) {
        onMove();
      }
      if (!width || !height) {
        return;
      }
      const insetTop = floor(top);
      const insetRight = floor(root.clientWidth - (left + width));
      const insetBottom = floor(root.clientHeight - (top + height));
      const insetLeft = floor(left);
      const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px";
      const options = {
        rootMargin,
        threshold: max(0, min(1, threshold)) || 1
      };
      let isFirstUpdate = true;
      function handleObserve(entries) {
        const ratio = entries[0].intersectionRatio;
        if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
          return refresh();
        }
        if (ratio !== threshold) {
          if (!isFirstUpdate) {
            return refresh();
          }
          if (!ratio) {
            timeoutId = setTimeout(() => {
              refresh(false, 1e-7);
            }, 1e3);
          } else {
            refresh(false, ratio);
          }
        }
        isFirstUpdate = false;
      }
      try {
        io = new IntersectionObserver(handleObserve, {
          ...options,
          // Handle <iframe>s
          root: root.ownerDocument
        });
      } catch (_e) {
        io = new IntersectionObserver(handleObserve, options);
      }
      io.observe(element);
    }
    const win = getWindow(element);
    const handleResize = () => refresh(ancestorResize);
    win.addEventListener("resize", handleResize);
    refresh(true);
    return () => {
      win.removeEventListener("resize", handleResize);
      cleanup();
    };
  }
  function autoUpdate(reference, floating, update4, options) {
    if (options === void 0) {
      options = {};
    }
    const {
      ancestorScroll = true,
      ancestorResize = true,
      elementResize = typeof ResizeObserver === "function",
      layoutShift = typeof IntersectionObserver === "function",
      animationFrame = false
    } = options;
    const referenceEl = unwrapElement(reference);
    const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : [];
    ancestors.forEach((ancestor) => {
      ancestorScroll && ancestor.addEventListener("scroll", update4);
      ancestorResize && ancestor.addEventListener("resize", update4);
    });
    const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update4, ancestorResize) : null;
    let reobserveFrame = -1;
    let resizeObserver = null;
    if (elementResize) {
      resizeObserver = new ResizeObserver((_ref) => {
        let [firstEntry] = _ref;
        if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {
          resizeObserver.unobserve(floating);
          cancelAnimationFrame(reobserveFrame);
          reobserveFrame = requestAnimationFrame(() => {
            var _resizeObserver;
            (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);
          });
        }
        update4();
      });
      if (referenceEl && !animationFrame) {
        resizeObserver.observe(referenceEl);
      }
      if (floating) {
        resizeObserver.observe(floating);
      }
    }
    let frameId;
    let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
    if (animationFrame) {
      frameLoop2();
    }
    function frameLoop2() {
      const nextRefRect = getBoundingClientRect(reference);
      if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {
        update4();
      }
      prevRefRect = nextRefRect;
      frameId = requestAnimationFrame(frameLoop2);
    }
    update4();
    return () => {
      var _resizeObserver2;
      ancestors.forEach((ancestor) => {
        ancestorScroll && ancestor.removeEventListener("scroll", update4);
        ancestorResize && ancestor.removeEventListener("resize", update4);
      });
      cleanupIo == null || cleanupIo();
      (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();
      resizeObserver = null;
      if (animationFrame) {
        cancelAnimationFrame(frameId);
      }
    };
  }
  var offset2 = offset;
  var shift2 = shift;
  var flip2 = flip;
  var size2 = size;
  var limitShift2 = limitShift;
  var computePosition2 = (reference, floating, options) => {
    const cache = /* @__PURE__ */ new Map();
    const mergedOptions = options != null ? options : {};
    const platformWithCache = {
      ...platform2,
      ...mergedOptions.platform,
      _c: cache
    };
    return computePosition(reference, floating, {
      ...mergedOptions,
      platform: platformWithCache
    });
  };

  // node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs
  var React29 = __toESM(require_react(), 1);
  var import_react2 = __toESM(require_react(), 1);
  var ReactDOM3 = __toESM(require_react_dom(), 1);
  var isClient = typeof document !== "undefined";
  var noop2 = function noop3() {
  };
  var index = isClient ? import_react2.useLayoutEffect : noop2;
  function deepEqual(a2, b2) {
    if (a2 === b2) {
      return true;
    }
    if (typeof a2 !== typeof b2) {
      return false;
    }
    if (typeof a2 === "function" && a2.toString() === b2.toString()) {
      return true;
    }
    let length2;
    let i2;
    let keys;
    if (a2 && b2 && typeof a2 === "object") {
      if (Array.isArray(a2)) {
        length2 = a2.length;
        if (length2 !== b2.length) return false;
        for (i2 = length2; i2-- !== 0; ) {
          if (!deepEqual(a2[i2], b2[i2])) {
            return false;
          }
        }
        return true;
      }
      keys = Object.keys(a2);
      length2 = keys.length;
      if (length2 !== Object.keys(b2).length) {
        return false;
      }
      for (i2 = length2; i2-- !== 0; ) {
        if (!{}.hasOwnProperty.call(b2, keys[i2])) {
          return false;
        }
      }
      for (i2 = length2; i2-- !== 0; ) {
        const key = keys[i2];
        if (key === "_owner" && a2.$$typeof) {
          continue;
        }
        if (!deepEqual(a2[key], b2[key])) {
          return false;
        }
      }
      return true;
    }
    return a2 !== a2 && b2 !== b2;
  }
  function getDPR(element) {
    if (typeof window === "undefined") {
      return 1;
    }
    const win = element.ownerDocument.defaultView || window;
    return win.devicePixelRatio || 1;
  }
  function roundByDPR(element, value) {
    const dpr = getDPR(element);
    return Math.round(value * dpr) / dpr;
  }
  function useLatestRef(value) {
    const ref = React29.useRef(value);
    index(() => {
      ref.current = value;
    });
    return ref;
  }
  function useFloating(options) {
    if (options === void 0) {
      options = {};
    }
    const {
      placement = "bottom",
      strategy = "absolute",
      middleware = [],
      platform: platform3,
      elements: {
        reference: externalReference,
        floating: externalFloating
      } = {},
      transform = true,
      whileElementsMounted,
      open: open3
    } = options;
    const [data, setData] = React29.useState({
      x: 0,
      y: 0,
      strategy,
      placement,
      middlewareData: {},
      isPositioned: false
    });
    const [latestMiddleware, setLatestMiddleware] = React29.useState(middleware);
    if (!deepEqual(latestMiddleware, middleware)) {
      setLatestMiddleware(middleware);
    }
    const [_reference, _setReference] = React29.useState(null);
    const [_floating, _setFloating] = React29.useState(null);
    const setReference = React29.useCallback((node) => {
      if (node !== referenceRef.current) {
        referenceRef.current = node;
        _setReference(node);
      }
    }, []);
    const setFloating = React29.useCallback((node) => {
      if (node !== floatingRef.current) {
        floatingRef.current = node;
        _setFloating(node);
      }
    }, []);
    const referenceEl = externalReference || _reference;
    const floatingEl = externalFloating || _floating;
    const referenceRef = React29.useRef(null);
    const floatingRef = React29.useRef(null);
    const dataRef = React29.useRef(data);
    const hasWhileElementsMounted = whileElementsMounted != null;
    const whileElementsMountedRef = useLatestRef(whileElementsMounted);
    const platformRef = useLatestRef(platform3);
    const openRef = useLatestRef(open3);
    const update4 = React29.useCallback(() => {
      if (!referenceRef.current || !floatingRef.current) {
        return;
      }
      const config2 = {
        placement,
        strategy,
        middleware: latestMiddleware
      };
      if (platformRef.current) {
        config2.platform = platformRef.current;
      }
      computePosition2(referenceRef.current, floatingRef.current, config2).then((data2) => {
        const fullData = {
          ...data2,
          // The floating element's position may be recomputed while it's closed
          // but still mounted (such as when transitioning out). To ensure
          // `isPositioned` will be `false` initially on the next open, avoid
          // setting it to `true` when `open === false` (must be specified).
          isPositioned: openRef.current !== false
        };
        if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {
          dataRef.current = fullData;
          ReactDOM3.flushSync(() => {
            setData(fullData);
          });
        }
      });
    }, [latestMiddleware, placement, strategy, platformRef, openRef]);
    index(() => {
      if (open3 === false && dataRef.current.isPositioned) {
        dataRef.current.isPositioned = false;
        setData((data2) => ({
          ...data2,
          isPositioned: false
        }));
      }
    }, [open3]);
    const isMountedRef = React29.useRef(false);
    index(() => {
      isMountedRef.current = true;
      return () => {
        isMountedRef.current = false;
      };
    }, []);
    index(() => {
      if (referenceEl) referenceRef.current = referenceEl;
      if (floatingEl) floatingRef.current = floatingEl;
      if (referenceEl && floatingEl) {
        if (whileElementsMountedRef.current) {
          return whileElementsMountedRef.current(referenceEl, floatingEl, update4);
        }
        update4();
      }
    }, [referenceEl, floatingEl, update4, whileElementsMountedRef, hasWhileElementsMounted]);
    const refs = React29.useMemo(() => ({
      reference: referenceRef,
      floating: floatingRef,
      setReference,
      setFloating
    }), [setReference, setFloating]);
    const elements2 = React29.useMemo(() => ({
      reference: referenceEl,
      floating: floatingEl
    }), [referenceEl, floatingEl]);
    const floatingStyles = React29.useMemo(() => {
      const initialStyles = {
        position: strategy,
        left: 0,
        top: 0
      };
      if (!elements2.floating) {
        return initialStyles;
      }
      const x2 = roundByDPR(elements2.floating, data.x);
      const y3 = roundByDPR(elements2.floating, data.y);
      if (transform) {
        return {
          ...initialStyles,
          transform: "translate(" + x2 + "px, " + y3 + "px)",
          ...getDPR(elements2.floating) >= 1.5 && {
            willChange: "transform"
          }
        };
      }
      return {
        position: strategy,
        left: x2,
        top: y3
      };
    }, [strategy, transform, elements2.floating, data.x, data.y]);
    return React29.useMemo(() => ({
      ...data,
      update: update4,
      refs,
      elements: elements2,
      floatingStyles
    }), [data, update4, refs, elements2, floatingStyles]);
  }
  var offset3 = (options, deps) => {
    const result = offset2(options);
    return {
      name: result.name,
      fn: result.fn,
      options: [options, deps]
    };
  };
  var shift3 = (options, deps) => {
    const result = shift2(options);
    return {
      name: result.name,
      fn: result.fn,
      options: [options, deps]
    };
  };
  var limitShift3 = (options, deps) => {
    const result = limitShift2(options);
    return {
      fn: result.fn,
      options: [options, deps]
    };
  };
  var flip3 = (options, deps) => {
    const result = flip2(options);
    return {
      name: result.name,
      fn: result.fn,
      options: [options, deps]
    };
  };
  var size3 = (options, deps) => {
    const result = size2(options);
    return {
      name: result.name,
      fn: result.fn,
      options: [options, deps]
    };
  };

  // node_modules/@base-ui/react/utils/popups/popupHandle.mjs
  var BasePopupHandle = class {
    /**
     * Stores of every root currently using this handle, in attach order. A handle is meant to be used
     * by a single mounted root, but roots can transiently overlap (e.g. during an animated route
     * transition), so this stack lets `attachStore`'s cleanup restore the previous root instead of
     * leaving a still-mounted root uncontrollable when a newer overlapping root detaches first.
     */
    attachedStores = [];
    /**
     * Store of the root that currently controls the handle: the most recently attached one still
     * mounted, or `null` when no root is attached. Imperative methods are no-ops while this is `null`.
     */
    attachedStoreValue = null;
    /**
     * Listeners notified when `attachedStore` changes, so detached triggers can follow the store pointer.
     */
    storeListeners = /* @__PURE__ */ new Set();
    /**
     * Creates a handle backed by the store used while no root is attached.
     *
     * @param fallbackStore Inert, closed store handed to detached triggers while no root is attached,
     * so they can render and register without a mounted root. Triggers register into whichever store
     * `store` currently resolves to, so while detached they live in this store's trigger map and
     * migrate themselves to the root's store (and back) as it attaches/detaches.
     * @param componentName Component name used to prefix dev warnings, e.g. `'Menu'` produces
     * `MenuHandle.open()` in warning text.
     * @param throwOnMissingTrigger Whether `open(triggerId)` throws when no trigger with that id is
     * registered. Anchored popups (Menu, Popover, Tooltip, PreviewCard) need a trigger to anchor to,
     * so they throw; Dialog is not anchored and instead opens unassociated with a dev warning.
     */
    constructor(fallbackStore, componentName, throwOnMissingTrigger = true) {
      this.fallbackStore = fallbackStore;
      this.componentName = componentName;
      this.throwOnMissingTrigger = throwOnMissingTrigger;
    }
    get attachedStore() {
      return this.attachedStoreValue;
    }
    /**
     * Store that detached triggers read from: the attached root's store, or an inert fallback store
     * used while no root is attached.
     * @internal
     */
    get store() {
      return this.attachedStoreValue ?? this.fallbackStore;
    }
    /**
     * Stable fallback store used for server rendering and hydration. Root stores cannot be recorded on
     * the handle during render because a handle can be shared by concurrent server-rendered requests.
     * @internal
     */
    get serverStore() {
      return this.fallbackStore;
    }
    /**
     * Subscribes to changes of the attached store pointer so detached triggers re-render and re-bind
     * when a root attaches or detaches. Returns a function that removes the listener.
     * @internal
     */
    subscribeStore(listener) {
      this.storeListeners.add(listener);
      return () => {
        this.storeListeners.delete(listener);
      };
    }
    /**
     * Points the handle at a root's store and notifies subscribers so detached triggers re-render and
     * re-register into it (their registration effect migrates them when the store pointer changes).
     * Returns a cleanup function that detaches the store again.
     * @internal
     */
    attachStore(newStore) {
      this.attachedStores.push(newStore);
      this.setActiveStore(newStore);
      if (true) {
        if (this.attachedStores.length > 1) {
          const dev = this;
          (dev.overlapWarningFrame ??= AnimationFrame.create()).request(() => {
            if (this.attachedStores.length > 1) {
              console.warn("Base UI: A handle is attached to more than one mounted root at the same time. The most recently mounted root takes over and the previous one stops being controlled by the handle. A handle should be used by a single root that stays mounted for the lifetime of the handle.");
            }
          });
        }
      }
      return () => {
        const index3 = this.attachedStores.lastIndexOf(newStore);
        if (index3 !== -1) {
          this.attachedStores.splice(index3, 1);
        }
        this.setActiveStore(this.attachedStores[this.attachedStores.length - 1] ?? null);
      };
    }
    /**
     * Sets the store that currently controls the handle and notifies subscribers when it changes, so
     * detached triggers re-render and migrate their registration to the new store.
     */
    setActiveStore(store4) {
      if (this.attachedStoreValue !== store4) {
        this.attachedStoreValue = store4;
        this.storeListeners.forEach((listener) => {
          listener();
        });
      }
    }
    /**
     * Opens the attached root's store and associates it with the trigger with the given id, or a
     * no-op (with a dev warning) while no root is attached. Shared by every concrete handle's public
     * `open()` method, which only narrows the parameter type.
     *
     * When a trigger id is given but no matching trigger is registered, anchored popups throw (see
     * `throwOnMissingTrigger`); Dialog opens unassociated with a dev warning instead.
     *
     * This method should only be called in an event handler or an effect (not during rendering).
     *
     * @param triggerId ID of the trigger to associate with the popup, or `null`/`undefined` to open
     * without associating any trigger.
     */
    openByTrigger(triggerId) {
      const attachedStore = this.attachedStore;
      if (attachedStore === null) {
        if (true) {
          console.warn(`Base UI: ${this.componentName}Handle.open() was called while no root using this handle is mounted. The call was ignored; mount a root with this handle before opening it imperatively.`);
        }
        return;
      }
      let triggerElement;
      if (triggerId) {
        for (let i2 = this.attachedStores.length - 1; i2 >= 0 && !triggerElement; i2 -= 1) {
          triggerElement = this.attachedStores[i2].context.triggerElements.getById(triggerId);
        }
        triggerElement ??= this.fallbackStore.context.triggerElements.getById(triggerId);
      }
      if (triggerId && !triggerElement) {
        if (this.throwOnMissingTrigger) {
          throw new Error(true ? `Base UI: ${this.componentName}Handle.open() was called with the trigger id "${triggerId}", but no matching trigger is registered with this handle. An anchored popup cannot open without a trigger to anchor to. Pass the id of a mounted ${this.componentName}.Trigger that has this handle set on its "handle" prop.` : formatErrorMessage_default(99, this.componentName, triggerId, this.componentName));
        }
        if (true) {
          console.warn(`Base UI: ${this.componentName}Handle.open: No trigger found with id "${triggerId}". The popup will open, but the trigger will not be associated with it.`);
        }
      }
      attachedStore.setOpen(true, createChangeEventDetails(reason_parts_exports.imperativeAction, void 0, triggerElement));
    }
    /**
     * Closes the popup by setting the attached root's store to closed, or a no-op (with a dev warning)
     * while no root is attached. Shared by every concrete handle's public `close()` method.
     *
     * This method should only be called in an event handler or an effect (not during rendering).
     */
    closePopup() {
      const attachedStore = this.attachedStore;
      if (attachedStore === null) {
        if (true) {
          console.warn(`Base UI: ${this.componentName}Handle.close() was called while no root using this handle is mounted. The call was ignored.`);
        }
        return;
      }
      attachedStore.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction));
    }
  };

  // node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs
  var React35 = __toESM(require_react(), 1);
  var ReactDOM4 = __toESM(require_react_dom(), 1);

  // node_modules/@base-ui/react/floating-ui-react/hooks/useSyncedFloatingRootContext.mjs
  var React34 = __toESM(require_react(), 1);

  // node_modules/@base-ui/utils/store/useStore.mjs
  var React31 = __toESM(require_react(), 1);
  var import_shim = __toESM(require_shim(), 1);
  var import_with_selector = __toESM(require_with_selector(), 1);

  // node_modules/@base-ui/utils/fastHooks.mjs
  var React30 = __toESM(require_react(), 1);
  var hooks = [];
  var currentInstance = void 0;
  function getInstance() {
    return currentInstance;
  }
  function register(hook) {
    hooks.push(hook);
  }
  function fastComponent(fn) {
    const FastComponent = (props, forwardedRef) => {
      const instance = useRefWithInit(createInstance).current;
      let result;
      try {
        currentInstance = instance;
        for (const hook of hooks) {
          hook.before(instance);
        }
        result = fn(props, forwardedRef);
        for (const hook of hooks) {
          hook.after(instance);
        }
        instance.didInitialize = true;
      } finally {
        currentInstance = void 0;
      }
      return result;
    };
    FastComponent.displayName = fn.displayName || fn.name;
    return FastComponent;
  }
  function fastComponentRef(fn) {
    return /* @__PURE__ */ React30.forwardRef(fastComponent(fn));
  }
  function createInstance() {
    return {
      didInitialize: false
    };
  }

  // node_modules/@base-ui/utils/store/useStore.mjs
  var canUseRawUseSyncExternalStore = isReactVersionAtLeast(19);
  var useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreFast : useStoreLegacy;
  function useStore(store4, selector2, a1, a2, a3) {
    return useStoreImplementation(store4, selector2, a1, a2, a3);
  }
  function useStoreR19(store4, selector2, a1, a2, a3) {
    const getSelection = React31.useCallback(() => selector2(store4.getSnapshot(), a1, a2, a3), [store4, selector2, a1, a2, a3]);
    return (0, import_shim.useSyncExternalStore)(store4.subscribe, getSelection, getSelection);
  }
  register({
    before(instance) {
      instance.syncIndex = 0;
      if (!instance.didInitialize) {
        instance.syncTick = 1;
        instance.syncHooks = [];
        instance.didChangeStore = true;
        instance.getSnapshot = () => {
          let didChange2 = false;
          for (let i2 = 0; i2 < instance.syncHooks.length; i2 += 1) {
            const hook = instance.syncHooks[i2];
            const value = hook.selector(hook.store.state, hook.a1, hook.a2, hook.a3);
            if (!Object.is(hook.value, value)) {
              didChange2 = true;
              hook.value = value;
            }
          }
          if (didChange2) {
            instance.syncTick += 1;
          }
          return instance.syncTick;
        };
      }
    },
    after(instance) {
      if (instance.syncHooks.length > 0) {
        if (instance.didChangeStore) {
          instance.didChangeStore = false;
          instance.subscribe = (onStoreChange) => {
            const stores = /* @__PURE__ */ new Set();
            for (const hook of instance.syncHooks) {
              stores.add(hook.store);
            }
            const unsubscribes = [];
            for (const store4 of stores) {
              unsubscribes.push(store4.subscribe(onStoreChange));
            }
            return () => {
              for (const unsubscribe of unsubscribes) {
                unsubscribe();
              }
            };
          };
        }
        (0, import_shim.useSyncExternalStore)(instance.subscribe, instance.getSnapshot, instance.getSnapshot);
      }
    }
  });
  function useStoreFast(store4, selector2, a1, a2, a3) {
    const instance = getInstance();
    if (!instance) {
      return useStoreR19(store4, selector2, a1, a2, a3);
    }
    const index3 = instance.syncIndex;
    instance.syncIndex += 1;
    let hook;
    if (!instance.didInitialize) {
      hook = {
        store: store4,
        selector: selector2,
        a1,
        a2,
        a3,
        value: selector2(store4.getSnapshot(), a1, a2, a3)
      };
      instance.syncHooks.push(hook);
    } else {
      hook = instance.syncHooks[index3];
      if (hook.store !== store4 || hook.selector !== selector2 || !Object.is(hook.a1, a1) || !Object.is(hook.a2, a2) || !Object.is(hook.a3, a3)) {
        if (hook.store !== store4) {
          instance.didChangeStore = true;
        }
        hook.store = store4;
        hook.selector = selector2;
        hook.a1 = a1;
        hook.a2 = a2;
        hook.a3 = a3;
        hook.value = selector2(store4.getSnapshot(), a1, a2, a3);
      }
    }
    return hook.value;
  }
  function useStoreLegacy(store4, selector2, a1, a2, a3) {
    return (0, import_with_selector.useSyncExternalStoreWithSelector)(store4.subscribe, store4.getSnapshot, store4.getSnapshot, (state2) => selector2(state2, a1, a2, a3));
  }

  // node_modules/@base-ui/utils/store/Store.mjs
  var Store = class {
    /**
     * Creates a store with the given initial state, constructing the class it is called on.
     * Calling it on a generic base class (e.g. `ReactStore.create(...)`) constructs that
     * class but degrades the inferred instance type to `Store`; use `new` there instead.
     */
    static create(state2) {
      return new this(state2);
    }
    /**
     * The current state of the store.
     * This property is updated immediately when the state changes as a result of calling {@link setState}, {@link update}, or {@link set}.
     * To subscribe to state changes, use the {@link useState} method. The value returned by {@link useState} is updated after the component renders (similarly to React's useState).
     * The values can be used directly (to avoid subscribing to the store) in effects or event handlers.
     *
     * Do not modify properties in state directly. Instead, use the provided methods to ensure proper state management and listener notification.
     */
    // Internal state to handle recursive `setState()` calls
    constructor(state2) {
      this.state = state2;
      this.listeners = /* @__PURE__ */ new Set();
      this.updateTick = 0;
    }
    /**
     * Registers a listener that will be called whenever the store's state changes.
     *
     * @param fn The listener function to be called on state changes.
     * @returns A function to unsubscribe the listener.
     */
    subscribe = (fn) => {
      this.listeners.add(fn);
      return () => {
        this.listeners.delete(fn);
      };
    };
    /**
     * Returns the current state of the store.
     */
    getSnapshot = () => {
      return this.state;
    };
    /**
     * Updates the entire store's state and notifies all registered listeners.
     *
     * @param newState The new state to set for the store.
     */
    setState(newState) {
      if (this.state === newState) {
        return;
      }
      this.state = newState;
      this.updateTick += 1;
      const currentTick = this.updateTick;
      for (const listener of this.listeners) {
        if (currentTick !== this.updateTick) {
          return;
        }
        listener(newState);
      }
    }
    /**
     * Merges the provided changes into the current state and notifies listeners if there are changes.
     * Each value must match its state key. Pass an exact known subset rather than a broad
     * `Partial<State>`, which may contain `undefined` for required state fields.
     *
     * @param changes An object containing the changes to apply to the current state.
     */
    update(changes) {
      for (const key in changes) {
        if (!Object.is(this.state[key], changes[key])) {
          this.setState({
            ...this.state,
            ...changes
          });
          return;
        }
      }
    }
    /**
     * Sets a specific key in the store's state to a new value and notifies listeners if the value has changed.
     *
     * @param key The key in the store's state to update.
     * @param value The new value to set for the specified key.
     */
    set(key, value) {
      if (!Object.is(this.state[key], value)) {
        this.setState({
          ...this.state,
          [key]: value
        });
      }
    }
    /**
     * Gives the state a new reference and updates all registered listeners.
     */
    notifyAll() {
      const newState = {
        ...this.state
      };
      this.setState(newState);
    }
    use(selector2, a1, a2, a3) {
      return useStore(this, selector2, a1, a2, a3);
    }
  };

  // node_modules/@base-ui/utils/store/ReactStore.mjs
  var React32 = __toESM(require_react(), 1);
  var ReactStore = class extends Store {
    /**
     * Creates a new ReactStore instance.
     *
     * @param state Initial state of the store.
     * @param context Non-reactive context values.
     * @param selectors Optional selectors for use with `useState`.
     */
    constructor(state2, context = {}, selectors5) {
      super(state2);
      this.context = context;
      this.selectors = selectors5;
    }
    /**
     * Non-reactive values such as refs, callbacks, etc.
     */
    /**
     * Synchronizes a single external value into the store.
     *
     * Note that the while the value in `state` is updated immediately, the value returned
     * by `useState` is updated before the next render (similarly to React's `useState`).
     */
    useSyncedValue(key, value) {
      React32.useDebugValue(key);
      const store4 = this;
      useIsoLayoutEffect(() => {
        if (store4.state[key] !== value) {
          store4.set(key, value);
        }
      }, [store4, key, value]);
    }
    /**
     * Synchronizes a single external value into the store and
     * cleans it up (sets to `undefined`) on unmount.
     *
     * Note that the while the value in `state` is updated immediately, the value returned
     * by `useState` is updated before the next render (similarly to React's `useState`).
     */
    useSyncedValueWithCleanup(key, value) {
      const store4 = this;
      useIsoLayoutEffect(() => {
        if (store4.state[key] !== value) {
          store4.set(key, value);
        }
        return () => {
          store4.set(key, void 0);
        };
      }, [store4, key, value]);
    }
    /**
     * Synchronizes multiple external values into the store.
     * Each value must match its state key. Pass an exact known subset rather than a broad
     * `Partial<State>`, which may contain `undefined` for required state fields.
     *
     * Note that the while the values in `state` are updated immediately, the values returned
     * by `useState` are updated before the next render (similarly to React's `useState`).
     *
     * @param statePart An exact subset of state fields to synchronize. Unknown keys are not accepted.
     */
    useSyncedValues(statePart) {
      const store4 = this;
      if (true) {
        React32.useDebugValue(statePart, (p4) => Object.keys(p4));
        const keys = React32.useRef(Object.keys(statePart)).current;
        const nextKeys = Object.keys(statePart);
        if (keys.length !== nextKeys.length || keys.some((key, index3) => key !== nextKeys[index3])) {
          console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable.");
        }
      }
      const dependencies = Object.values(statePart);
      useIsoLayoutEffect(() => {
        store4.update(statePart);
      }, [store4, ...dependencies]);
    }
    /**
     * Registers a controllable prop pair (`controlled`, `defaultValue`) for a specific key. If `controlled`
     * is non-undefined, the store's state at `key` is updated to match `controlled`.
     */
    useControlledProp(key, controlled) {
      React32.useDebugValue(key);
      const store4 = this;
      const isControlled = controlled !== void 0;
      useIsoLayoutEffect(() => {
        if (isControlled && !Object.is(store4.state[key], controlled)) {
          store4.setState({
            ...store4.state,
            [key]: controlled
          });
        }
      }, [store4, key, controlled, isControlled]);
      if (true) {
        const cache = this.controlledValues ??= /* @__PURE__ */ new Map();
        if (!cache.has(key)) {
          cache.set(key, isControlled);
        }
        const previouslyControlled = cache.get(key);
        if (previouslyControlled !== void 0 && previouslyControlled !== isControlled) {
          console.error(`A component is changing the ${isControlled ? "" : "un"}controlled state of ${key.toString()} to be ${isControlled ? "un" : ""}controlled. Elements should not switch from uncontrolled to controlled (or vice versa).`);
        }
      }
    }
    /** Gets the current value from the store using a selector with the provided key.
     *
     * @param key Key of the selector to use.
     */
    select(key, a1, a2, a3) {
      const selector2 = this.selectors[key];
      return selector2(this.state, a1, a2, a3);
    }
    /**
     * Returns a value from the store's state using a selector function.
     * Used to subscribe to specific parts of the state.
     * This methods causes a rerender whenever the selected state changes.
     *
     * @param key Key of the selector to use.
     */
    useState(key, a1, a2, a3) {
      React32.useDebugValue(key);
      return useStore(this, this.selectors[key], a1, a2, a3);
    }
    /**
     * Wraps a function with `useStableCallback` to ensure it has a stable reference
     * and assigns it to the context.
     *
     * @param key Key of the event callback. Must be a function in the context.
     * @param fn Function to assign.
     */
    useContextCallback(key, fn) {
      React32.useDebugValue(key);
      const stableFunction = useStableCallback(fn ?? NOOP);
      this.context[key] = stableFunction;
    }
    /**
     * Returns a stable setter function for a specific key in the store's state.
     * It's commonly used to pass as a ref callback to React elements.
     *
     * @param key Key of the state to set.
     */
    useStateSetter(key) {
      const ref = React32.useRef(void 0);
      if (ref.current === void 0) {
        ref.current = (value) => {
          this.set(key, value);
        };
      }
      return ref.current;
    }
    /**
     * Observes changes derived from the store's selectors and calls the listener when the selected value changes.
     *
     * @param key Key of the selector to observe.
     * @param listener Listener function called when the selector result changes.
     */
    observe(selector2, listener) {
      let selectFn;
      if (typeof selector2 === "function") {
        selectFn = selector2;
      } else {
        selectFn = this.selectors[selector2];
      }
      let prevValue = selectFn(this.state);
      listener(prevValue, prevValue, this);
      return this.subscribe((nextState) => {
        const nextValue = selectFn(nextState);
        if (!Object.is(prevValue, nextValue)) {
          const oldValue = prevValue;
          prevValue = nextValue;
          listener(nextValue, oldValue, this);
        }
      });
    }
  };

  // node_modules/@base-ui/utils/useForcedRerendering.mjs
  var React33 = __toESM(require_react(), 1);
  function useForcedRerendering() {
    const [, setState] = React33.useState({});
    return React33.useCallback(() => {
      setState({});
    }, []);
  }

  // node_modules/@base-ui/react/floating-ui-react/components/FloatingRootStore.mjs
  var selectors = {
    open: (state2) => state2.open,
    transitionStatus: (state2) => state2.transitionStatus,
    domReferenceElement: (state2) => state2.domReferenceElement,
    referenceElement: (state2) => state2.positionReference ?? state2.referenceElement,
    floatingElement: (state2) => state2.floatingElement,
    floatingId: (state2) => state2.floatingId
  };
  var FloatingRootStore = class extends ReactStore {
    constructor(options) {
      const {
        syncOnly,
        nested,
        onOpenChange,
        triggerElements,
        ...initialState
      } = options;
      super({
        ...initialState,
        positionReference: initialState.referenceElement,
        domReferenceElement: initialState.referenceElement
      }, {
        onOpenChange,
        dataRef: {
          current: {}
        },
        events: createEventEmitter(),
        nested,
        triggerElements
      }, selectors);
      this.syncOnly = syncOnly;
    }
    /**
     * Syncs the event used by hover logic to distinguish hover-open from click-like interaction.
     */
    syncOpenEvent = (newOpen, event) => {
      if (!newOpen || !this.state.open || // Prevent a pending hover-open from overwriting a click-open event, while allowing
      // click events to upgrade a hover-open.
      event != null && isClickLikeEvent(event)) {
        this.context.dataRef.current.openEvent = newOpen ? event : void 0;
      }
    };
    /**
     * Runs the root-owned side effects for an open state change.
     */
    dispatchOpenChange = (newOpen, eventDetails) => {
      this.syncOpenEvent(newOpen, eventDetails.event);
      const details = {
        open: newOpen,
        reason: eventDetails.reason,
        nativeEvent: eventDetails.event,
        nested: this.context.nested,
        triggerElement: eventDetails.trigger
      };
      this.context.events.emit("openchange", details);
    };
    /**
     * Emits the `openchange` event through the internal event emitter and calls the `onOpenChange` handler with the provided arguments.
     *
     * @param newOpen The new open state.
     * @param eventDetails Details about the event that triggered the open state change.
     */
    setOpen = (newOpen, eventDetails) => {
      if (this.syncOnly) {
        this.context.onOpenChange?.(newOpen, eventDetails);
        return;
      }
      this.dispatchOpenChange(newOpen, eventDetails);
      this.context.onOpenChange?.(newOpen, eventDetails);
    };
  };

  // node_modules/@base-ui/react/floating-ui-react/hooks/useSyncedFloatingRootContext.mjs
  function useSyncedFloatingRootContext(options) {
    const {
      popupStore,
      treatPopupAsFloatingElement = false,
      floatingRootContext: floatingRootContextProp,
      floatingId,
      nested,
      onOpenChange
    } = options;
    const open3 = popupStore.useState("open");
    const referenceElement = popupStore.useState("activeTriggerElement");
    const floatingElement = popupStore.useState(treatPopupAsFloatingElement ? "popupElement" : "positionerElement");
    const triggerElements = popupStore.context.triggerElements;
    const handleOpenChange = onOpenChange;
    const internalStoreRef = React34.useRef(null);
    if (floatingRootContextProp === void 0 && internalStoreRef.current === null) {
      internalStoreRef.current = new FloatingRootStore({
        open: open3,
        transitionStatus: void 0,
        referenceElement,
        floatingElement,
        triggerElements,
        onOpenChange: handleOpenChange,
        floatingId,
        syncOnly: true,
        nested
      });
    }
    const store4 = floatingRootContextProp ?? internalStoreRef.current;
    popupStore.useSyncedValue("floatingId", floatingId);
    useIsoLayoutEffect(() => {
      const valuesToSync = {
        open: open3,
        floatingId,
        referenceElement,
        floatingElement
      };
      if (isElement(referenceElement)) {
        valuesToSync.domReferenceElement = referenceElement;
      }
      if (store4.state.positionReference === store4.state.referenceElement) {
        valuesToSync.positionReference = referenceElement;
      }
      store4.update(valuesToSync);
    }, [open3, floatingId, referenceElement, floatingElement, store4]);
    store4.context.onOpenChange = handleOpenChange;
    store4.context.nested = nested;
    return store4;
  }

  // node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs
  var FOCUSABLE_POPUP_PROPS = {
    tabIndex: -1,
    [FOCUSABLE_ATTRIBUTE]: ""
  };
  function usePopupRootStore(createStore2, treatPopupAsFloatingElement = false) {
    const floatingId = useId();
    const nested = useFloatingParentNodeId() != null;
    const store4 = useRefWithInit(() => createStore2(floatingId, nested)).current;
    useSyncedFloatingRootContext({
      popupStore: store4,
      treatPopupAsFloatingElement,
      floatingRootContext: store4.state.floatingRootContext,
      floatingId,
      nested,
      onOpenChange: store4.setOpen
    });
    return store4;
  }
  function PopupHandleAttachment({
    handle,
    store: store4
  }) {
    useIsoLayoutEffect(() => {
      return handle.attachStore(store4);
    }, [handle, store4]);
    return null;
  }
  function syncTriggerCount(store4) {
    const triggerCount = store4.context.triggerElements.size;
    if (store4.select("open") && store4.state.triggerCount !== triggerCount) {
      store4.set("triggerCount", triggerCount);
    }
  }
  function useTriggerRegistration(id, store4) {
    const registrationRef = React35.useRef(null);
    return useStableCallback((element) => {
      const registration = registrationRef.current;
      if (registration !== null) {
        if (registration.element === element && registration.store === store4 && registration.id === id) {
          return;
        }
        registrationRef.current = null;
        const registeredStore = registration.store;
        if (registeredStore.context.triggerElements.getById(registration.id) === registration.element) {
          registeredStore.context.triggerElements.delete(registration.id);
          syncTriggerCount(registeredStore);
        }
      }
      if (element !== null && id !== void 0) {
        registrationRef.current = {
          store: store4,
          id,
          element
        };
        store4.context.triggerElements.add(id, element);
        syncTriggerCount(store4);
      }
    });
  }
  function createPopupOpenState(state2, open3, trigger, preventUnmountOnClose = false) {
    let preventUnmountingOnClose = state2.preventUnmountingOnClose;
    if (open3) {
      preventUnmountingOnClose = false;
    } else if (preventUnmountOnClose) {
      preventUnmountingOnClose = true;
    }
    const triggerId = trigger?.id ?? null;
    let activeTriggerId = state2.activeTriggerId;
    let activeTriggerElement = state2.activeTriggerElement;
    if (triggerId || open3) {
      activeTriggerId = triggerId;
      activeTriggerElement = trigger ?? null;
    }
    return {
      open: open3,
      preventUnmountingOnClose,
      activeTriggerId,
      activeTriggerElement
    };
  }
  function attachPreventUnmountOnClose(eventDetails) {
    let preventUnmountOnClose = false;
    eventDetails.preventUnmountOnClose = () => {
      preventUnmountOnClose = true;
    };
    return () => preventUnmountOnClose;
  }
  function applyPopupOpenChange(store4, nextOpen, eventDetails, options = {}) {
    const reason = eventDetails.reason;
    const isHover = reason === reason_parts_exports.triggerHover;
    const isFocusOpen = nextOpen && reason === reason_parts_exports.triggerFocus;
    const isDismissClose = !nextOpen && (reason === reason_parts_exports.triggerPress || reason === reason_parts_exports.escapeKey);
    const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(eventDetails);
    store4.context.onOpenChange?.(nextOpen, eventDetails);
    if (eventDetails.isCanceled) {
      return;
    }
    options.onBeforeDispatch?.();
    store4.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails);
    const changeState = () => {
      const popupOpenState = createPopupOpenState(store4.state, nextOpen, eventDetails.trigger, shouldPreventUnmountOnClose());
      const updatedState = {
        ...options.extraState,
        ...popupOpenState
      };
      if (isFocusOpen) {
        updatedState.instantType = "focus";
      } else if (isDismissClose) {
        updatedState.instantType = "dismiss";
      } else if (isHover) {
        updatedState.instantType = void 0;
      }
      store4.update(updatedState);
    };
    if (isHover) {
      ReactDOM4.flushSync(changeState);
    } else {
      changeState();
    }
  }
  function useTriggerDataForwarding(triggerId, triggerElementRef, store4, stateUpdates) {
    const isMountedByThisTrigger = store4.useState("isMountedByTrigger", triggerId);
    const baseRegisterTrigger = useTriggerRegistration(triggerId, store4);
    const applyTriggerData = useStableCallback((element) => {
      const open3 = store4.select("open");
      const activeTriggerId = store4.select("activeTriggerId");
      if (activeTriggerId === triggerId) {
        const changes = {
          activeTriggerElement: element,
          ...open3 ? stateUpdates : null
        };
        store4.update(changes);
        return;
      }
      if (activeTriggerId == null && open3) {
        const changes = {
          activeTriggerId: triggerId ?? null,
          activeTriggerElement: element,
          ...stateUpdates
        };
        store4.update(changes);
      }
    });
    const registerTrigger = useStableCallback((element) => {
      baseRegisterTrigger(element);
      if (element) {
        applyTriggerData(element);
      }
    });
    useIsoLayoutEffect(() => {
      registerTrigger(triggerElementRef.current);
      return () => registerTrigger(null);
    }, [registerTrigger, triggerElementRef, store4, triggerId]);
    useIsoLayoutEffect(() => {
      if (isMountedByThisTrigger) {
        const changes = {
          activeTriggerElement: triggerElementRef.current,
          ...stateUpdates
        };
        store4.update(changes);
      }
    }, [isMountedByThisTrigger, store4, triggerElementRef, ...Object.values(stateUpdates)]);
    return {
      registerTrigger,
      isMountedByThisTrigger
    };
  }
  function useImplicitActiveTrigger(store4, options = {}) {
    const {
      closeOnActiveTriggerUnmount = false
    } = options;
    const resolvedActiveTriggerIdRef = React35.useRef(null);
    const open3 = store4.useState("open");
    const reactiveTriggerCount = store4.useState("triggerCount");
    const activeTriggerId = store4.useState("activeTriggerId");
    const reactiveActiveTriggerElement = store4.useState("activeTriggerElement");
    useIsoLayoutEffect(() => {
      if (!open3) {
        resolvedActiveTriggerIdRef.current = null;
        if (store4.state.triggerCount !== 0) {
          store4.set("triggerCount", 0);
        }
        return;
      }
      const triggerCount = store4.context.triggerElements.size;
      const stateUpdates = {};
      if (store4.state.triggerCount !== triggerCount) {
        stateUpdates.triggerCount = triggerCount;
      }
      const currentActiveTriggerId = store4.select("activeTriggerId");
      let lostActiveTriggerId = null;
      if (currentActiveTriggerId) {
        const activeTriggerElement = store4.context.triggerElements.getById(currentActiveTriggerId);
        if (!activeTriggerElement) {
          for (const [triggerId, triggerElement] of store4.context.triggerElements.entries()) {
            if (triggerElement === store4.state.activeTriggerElement) {
              stateUpdates.activeTriggerId = triggerId;
              stateUpdates.activeTriggerElement = triggerElement;
              resolvedActiveTriggerIdRef.current = triggerId;
              break;
            }
          }
          if (stateUpdates.activeTriggerId === void 0) {
            if (resolvedActiveTriggerIdRef.current === currentActiveTriggerId) {
              lostActiveTriggerId = currentActiveTriggerId;
            } else {
              resolvedActiveTriggerIdRef.current = null;
            }
          }
        } else {
          resolvedActiveTriggerIdRef.current = currentActiveTriggerId;
          if (activeTriggerElement !== store4.state.activeTriggerElement) {
            stateUpdates.activeTriggerElement = activeTriggerElement;
          }
        }
      } else {
        resolvedActiveTriggerIdRef.current = null;
      }
      if (!lostActiveTriggerId && !currentActiveTriggerId && triggerCount === 1) {
        const iteratorResult = store4.context.triggerElements.entries().next();
        if (!iteratorResult.done) {
          const [implicitTriggerId, implicitTriggerElement] = iteratorResult.value;
          stateUpdates.activeTriggerId = implicitTriggerId;
          stateUpdates.activeTriggerElement = implicitTriggerElement;
          resolvedActiveTriggerIdRef.current = implicitTriggerId;
        }
      }
      if (stateUpdates.triggerCount !== void 0 || stateUpdates.activeTriggerId !== void 0 || stateUpdates.activeTriggerElement !== void 0) {
        store4.update(stateUpdates);
      }
      if (lostActiveTriggerId) {
        if (closeOnActiveTriggerUnmount) {
          queueMicrotask(() => {
            if (store4.select("open") && store4.select("activeTriggerId") === lostActiveTriggerId && !store4.context.triggerElements.getById(lostActiveTriggerId)) {
              const eventDetails = createChangeEventDetails(reason_parts_exports.none);
              store4.setOpen(false, eventDetails);
              if (!eventDetails.isCanceled) {
                store4.update({
                  activeTriggerId: null,
                  activeTriggerElement: null
                });
              }
            }
          });
        }
      }
    }, [open3, store4, reactiveTriggerCount, activeTriggerId, reactiveActiveTriggerElement, closeOnActiveTriggerUnmount]);
  }
  function useOpenStateTransitions(open3, store4, onUnmount, animateInitialOpen) {
    const {
      mounted,
      setMounted,
      transitionStatus
    } = useTransitionStatus(open3, false, false, animateInitialOpen);
    const preventUnmountingOnClose = store4.useState("preventUnmountingOnClose");
    const syncedPreventUnmountingOnClose = open3 ? false : preventUnmountingOnClose;
    store4.useSyncedValues({
      mounted,
      transitionStatus,
      preventUnmountingOnClose: syncedPreventUnmountingOnClose
    });
    const forceUnmount = useStableCallback(() => {
      setMounted(false);
      store4.update({
        activeTriggerId: null,
        activeTriggerElement: null,
        mounted: false,
        preventUnmountingOnClose: false
      });
      onUnmount?.();
      store4.context.onOpenChangeComplete?.(false);
    });
    useOpenChangeComplete({
      enabled: mounted && !open3 && !syncedPreventUnmountingOnClose,
      open: open3,
      ref: store4.context.popupRef,
      onComplete() {
        if (!open3) {
          forceUnmount();
        }
      }
    });
    return {
      forceUnmount,
      transitionStatus
    };
  }
  function usePopupInteractionProps(store4, statePart) {
    store4.useSyncedValues(statePart);
    useIsoLayoutEffect(() => () => {
      store4.update({
        activeTriggerProps: EMPTY_OBJECT2,
        inactiveTriggerProps: EMPTY_OBJECT2,
        popupProps: EMPTY_OBJECT2
      });
    }, [store4]);
  }

  // node_modules/@base-ui/react/utils/popups/popupTriggerMap.mjs
  var devElementIdsByMap;
  function getDevElementIds(map) {
    devElementIdsByMap ??= /* @__PURE__ */ new WeakMap();
    let elementIds = devElementIdsByMap.get(map);
    if (!elementIds) {
      elementIds = /* @__PURE__ */ new WeakMap();
      devElementIdsByMap.set(map, elementIds);
    }
    return elementIds;
  }
  var PopupTriggerMap = class {
    constructor() {
      this.idMap = /* @__PURE__ */ new Map();
    }
    /**
     * Adds a trigger element with the given ID.
     *
     * Note: The provided element is assumed to not be registered under multiple IDs.
     */
    add(id, element) {
      if (true) {
        const elementIds = getDevElementIds(this);
        const existingId = elementIds.get(element);
        if (existingId !== void 0 && existingId !== id) {
          throw new Error("Base UI: A trigger element cannot be registered under multiple IDs in PopupTriggerMap.");
        }
        const previousElement = this.idMap.get(id);
        if (previousElement !== void 0 && previousElement !== element) {
          elementIds.delete(previousElement);
        }
        elementIds.set(element, id);
      }
      this.idMap.set(id, element);
    }
    /**
     * Removes the trigger element with the given ID.
     */
    delete(id) {
      if (true) {
        const element = this.idMap.get(id);
        if (element !== void 0) {
          devElementIdsByMap?.get(this)?.delete(element);
        }
      }
      this.idMap.delete(id);
    }
    /**
     * Whether the given element is registered as a trigger.
     */
    hasElement(element) {
      for (const registered of this.idMap.values()) {
        if (registered === element) {
          return true;
        }
      }
      return false;
    }
    /**
     * Whether there is a registered trigger element matching the given predicate.
     */
    hasMatchingElement(predicate) {
      for (const element of this.idMap.values()) {
        if (predicate(element)) {
          return true;
        }
      }
      return false;
    }
    /**
     * Returns the trigger element associated with the given ID, or undefined if no such element exists.
     */
    getById(id) {
      return this.idMap.get(id);
    }
    /**
     * Returns an iterable of all registered trigger entries, where each entry is a tuple of [id, element].
     */
    entries() {
      return this.idMap.entries();
    }
    /**
     * Returns an iterable of all registered trigger elements.
     */
    elements() {
      return this.idMap.values();
    }
    /**
     * Returns the number of registered trigger elements.
     */
    get size() {
      return this.idMap.size;
    }
  };

  // node_modules/@base-ui/react/utils/popups/store.mjs
  function createInitialPopupStoreState(triggerElements, floatingId, nested = false) {
    return {
      open: false,
      openProp: void 0,
      mounted: false,
      transitionStatus: void 0,
      floatingRootContext: new FloatingRootStore({
        open: false,
        transitionStatus: void 0,
        floatingElement: null,
        referenceElement: null,
        triggerElements,
        floatingId,
        syncOnly: true,
        nested,
        onOpenChange: void 0
      }),
      floatingId,
      triggerCount: 0,
      preventUnmountingOnClose: false,
      payload: void 0,
      activeTriggerId: null,
      activeTriggerElement: null,
      triggerIdProp: void 0,
      popupElement: null,
      positionerElement: null,
      activeTriggerProps: EMPTY_OBJECT2,
      inactiveTriggerProps: EMPTY_OBJECT2,
      popupProps: EMPTY_OBJECT2
    };
  }
  var activeTriggerIdSelector = (state2) => state2.triggerIdProp ?? state2.activeTriggerId;
  var openSelector = (state2) => state2.openProp ?? state2.open;
  var popupIdSelector = (state2) => {
    const popupId = state2.popupElement?.id ?? state2.floatingId;
    return popupId || void 0;
  };
  function triggerOwnsOpenPopup(state2, triggerId) {
    return triggerId !== void 0 && openSelector(state2) && activeTriggerIdSelector(state2) === triggerId;
  }
  function triggerOwnsOpenPopupOrIsOnlyTrigger(state2, triggerId) {
    if (triggerOwnsOpenPopup(state2, triggerId)) {
      return true;
    }
    return triggerId !== void 0 && openSelector(state2) && activeTriggerIdSelector(state2) == null && state2.triggerCount === 1;
  }
  var popupStoreSelectors = {
    open: openSelector,
    mounted: (state2) => state2.mounted,
    transitionStatus: (state2) => state2.transitionStatus,
    floatingRootContext: (state2) => state2.floatingRootContext,
    triggerCount: (state2) => state2.triggerCount,
    preventUnmountingOnClose: (state2) => state2.preventUnmountingOnClose,
    payload: (state2) => state2.payload,
    activeTriggerId: activeTriggerIdSelector,
    activeTriggerElement: (state2) => state2.mounted ? state2.activeTriggerElement : null,
    popupId: popupIdSelector,
    /**
     * Whether the trigger with the given ID was used to open the popup.
     */
    isTriggerActive: (state2, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state2) === triggerId,
    /**
     * Whether the popup is open and was activated by a trigger with the given ID.
     */
    isOpenedByTrigger: (state2, triggerId) => triggerOwnsOpenPopup(state2, triggerId),
    /**
     * Whether the popup is mounted and was activated by a trigger with the given ID.
     */
    isMountedByTrigger: (state2, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state2) === triggerId && state2.mounted,
    triggerProps: (state2, isActive) => isActive ? state2.activeTriggerProps : state2.inactiveTriggerProps,
    /**
     * Popup id for the trigger that currently owns the open popup.
     */
    triggerPopupId: (state2, triggerId) => triggerOwnsOpenPopupOrIsOnlyTrigger(state2, triggerId) ? popupIdSelector(state2) : void 0,
    popupProps: (state2) => state2.popupProps,
    popupElement: (state2) => state2.popupElement,
    positionerElement: (state2) => state2.positionerElement
  };

  // node_modules/@base-ui/react/utils/popups/usePopupHandleStore.mjs
  var React36 = __toESM(require_react(), 1);
  var import_shim2 = __toESM(require_shim(), 1);
  function usePopupHandleStore(handle) {
    const subscribe5 = React36.useCallback((listener) => {
      if (handle === void 0) {
        return NOOP;
      }
      return handle.subscribeStore(listener);
    }, [handle]);
    const getSnapshot2 = React36.useCallback(() => {
      return handle === void 0 ? void 0 : handle.store;
    }, [handle]);
    return (0, import_shim2.useSyncExternalStore)(subscribe5, getSnapshot2, () => handle?.serverStore);
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/useFloatingRootContext.mjs
  function useFloatingRootContext(options) {
    const {
      open: open3 = false,
      onOpenChange,
      elements: elements2 = {}
    } = options;
    const floatingId = useId();
    const nested = useFloatingParentNodeId() != null;
    if (true) {
      const optionDomReference = elements2.reference;
      if (optionDomReference && !isElement(optionDomReference)) {
        console.error("Cannot pass a virtual element to the `elements.reference` option,", "as it must be a real DOM element. Use `context.setPositionReference()`", "instead.");
      }
    }
    const store4 = useRefWithInit(() => new FloatingRootStore({
      open: open3,
      transitionStatus: void 0,
      onOpenChange,
      referenceElement: elements2.reference ?? null,
      floatingElement: elements2.floating ?? null,
      triggerElements: new PopupTriggerMap(),
      floatingId,
      syncOnly: false,
      nested
    })).current;
    useIsoLayoutEffect(() => {
      const valuesToSync = {
        open: open3,
        floatingId
      };
      if (elements2.reference !== void 0) {
        valuesToSync.referenceElement = elements2.reference;
        valuesToSync.domReferenceElement = isElement(elements2.reference) ? elements2.reference : null;
      }
      if (elements2.floating !== void 0) {
        valuesToSync.floatingElement = elements2.floating;
      }
      store4.update(valuesToSync);
    }, [open3, floatingId, elements2.reference, elements2.floating, store4]);
    store4.context.onOpenChange = onOpenChange;
    store4.context.nested = nested;
    return store4;
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/useFloating.mjs
  function useBaseUIFloating(options) {
    return useFloatingWithStore(options, options.rootContext);
  }
  function useFloatingWithStore(options, store4) {
    const {
      nodeId,
      externalTree
    } = options;
    const referenceElement = store4.useState("referenceElement");
    const floatingElement = store4.useState("floatingElement");
    const domReferenceElement = store4.useState("domReferenceElement");
    const open3 = store4.useState("open");
    const floatingId = store4.useState("floatingId");
    const [positionReference, setPositionReferenceRaw] = React37.useState(null);
    const [localDomReference, setLocalDomReference] = React37.useState(void 0);
    const [localFloatingElement, setLocalFloatingElement] = React37.useState(void 0);
    const domReferenceRef = React37.useRef(null);
    const tree = useFloatingTree(externalTree);
    const storeElements = React37.useMemo(() => ({
      reference: referenceElement,
      floating: floatingElement,
      domReference: domReferenceElement
    }), [referenceElement, floatingElement, domReferenceElement]);
    const position = useFloating({
      ...options,
      elements: {
        ...storeElements,
        ...positionReference && {
          reference: positionReference
        }
      }
    });
    const localDomReferenceElement = isElement(localDomReference) ? localDomReference : null;
    const syncedFloatingElement = localFloatingElement === void 0 ? store4.state.floatingElement : localFloatingElement;
    store4.useSyncedValue("referenceElement", localDomReference ?? null);
    store4.useSyncedValue("domReferenceElement", localDomReference === void 0 ? domReferenceElement : localDomReferenceElement);
    store4.useSyncedValue("floatingElement", syncedFloatingElement);
    const setPositionReference = React37.useCallback((node) => {
      const computedPositionReference = isElement(node) ? {
        getBoundingClientRect: () => node.getBoundingClientRect(),
        getClientRects: () => node.getClientRects(),
        contextElement: node
      } : node;
      setPositionReferenceRaw(computedPositionReference);
      position.refs.setReference(computedPositionReference);
    }, [position.refs]);
    const setReference = React37.useCallback((node) => {
      if (isElement(node) || node === null) {
        domReferenceRef.current = node;
        setLocalDomReference(node);
      }
      if (isElement(position.refs.reference.current) || position.refs.reference.current === null || // Don't allow setting virtual elements using the old technique back to
      // `null` to support `positionReference` + an unstable `reference`
      // callback ref.
      node !== null && !isElement(node)) {
        position.refs.setReference(node);
      }
    }, [position.refs, setLocalDomReference]);
    const setFloating = React37.useCallback((node) => {
      setLocalFloatingElement(node);
      position.refs.setFloating(node);
    }, [position.refs]);
    const refs = React37.useMemo(() => ({
      ...position.refs,
      setReference,
      setFloating,
      setPositionReference,
      domReference: domReferenceRef
    }), [position.refs, setReference, setFloating, setPositionReference]);
    const elements2 = React37.useMemo(() => ({
      ...position.elements,
      domReference: domReferenceElement
    }), [position.elements, domReferenceElement]);
    const context = React37.useMemo(() => ({
      ...position,
      dataRef: store4.context.dataRef,
      open: open3,
      onOpenChange: store4.setOpen,
      events: store4.context.events,
      floatingId,
      refs,
      elements: elements2,
      nodeId,
      rootStore: store4
    }), [position, refs, elements2, nodeId, store4, open3, floatingId]);
    useIsoLayoutEffect(() => {
      if (domReferenceElement) {
        domReferenceRef.current = domReferenceElement;
      }
    }, [domReferenceElement]);
    useIsoLayoutEffect(() => {
      store4.context.dataRef.current.floatingContext = context;
      const node = tree?.nodesRef.current.find((n2) => n2.id === nodeId);
      if (node) {
        node.context = context;
      }
    });
    return React37.useMemo(() => ({
      ...position,
      context,
      refs,
      elements: elements2,
      rootStore: store4
    }), [position, refs, elements2, context, store4]);
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/useFocus.mjs
  var React38 = __toESM(require_react(), 1);
  var isMacSafari = parts_exports.os.mac && parts_exports.engine.webkit;
  function useFocus(context, props = {}) {
    const {
      enabled = true,
      delay
    } = props;
    const store4 = "rootStore" in context ? context.rootStore : context;
    const {
      events,
      dataRef
    } = store4.context;
    const blockFocusRef = React38.useRef(false);
    const blockedReferenceRef = React38.useRef(null);
    const keyboardModalityRef = React38.useRef(true);
    const timeout = useTimeout();
    React38.useEffect(() => {
      const domReference = store4.select("domReferenceElement");
      if (!enabled) {
        return void 0;
      }
      const win = getWindow(domReference);
      function onBlur() {
        const currentDomReference = store4.select("domReferenceElement");
        if (!store4.select("open") && isHTMLElement(currentDomReference) && currentDomReference === activeElement(ownerDocument(currentDomReference))) {
          blockFocusRef.current = true;
          blockedReferenceRef.current = currentDomReference;
        }
      }
      function onKeyDown() {
        keyboardModalityRef.current = true;
      }
      function onPointerDown() {
        keyboardModalityRef.current = false;
      }
      return mergeCleanups(addEventListener(win, "blur", onBlur), isMacSafari && addEventListener(win, "keydown", onKeyDown, true), isMacSafari && addEventListener(win, "pointerdown", onPointerDown, true));
    }, [store4, enabled]);
    React38.useEffect(() => {
      if (!enabled) {
        return void 0;
      }
      function onOpenChangeLocal(details) {
        if (details.reason === reason_parts_exports.triggerPress || details.reason === reason_parts_exports.escapeKey) {
          const referenceElement = store4.select("domReferenceElement");
          if (isElement(referenceElement)) {
            blockedReferenceRef.current = referenceElement;
            blockFocusRef.current = true;
          }
        }
      }
      events.on("openchange", onOpenChangeLocal);
      return () => {
        events.off("openchange", onOpenChangeLocal);
      };
    }, [events, enabled, store4]);
    const reference = React38.useMemo(() => {
      function resetBlockedFocus() {
        blockFocusRef.current = false;
        blockedReferenceRef.current = null;
      }
      return {
        onMouseLeave() {
          resetBlockedFocus();
        },
        onFocus(event) {
          const focusTarget = event.currentTarget;
          if (blockFocusRef.current) {
            if (blockedReferenceRef.current === focusTarget) {
              return;
            }
            resetBlockedFocus();
          }
          const target = getTarget(event.nativeEvent);
          if (isElement(target)) {
            if (isMacSafari && !event.relatedTarget) {
              if (!keyboardModalityRef.current && !isTypeableElement(target)) {
                return;
              }
            } else if (!matchesFocusVisible(target)) {
              return;
            }
          }
          const movedFromOtherEnabledTrigger = isTargetInsideEnabledTrigger(event.relatedTarget, store4.context.triggerElements);
          const {
            nativeEvent,
            currentTarget
          } = event;
          const delayValue = typeof delay === "function" ? delay() : delay;
          if (store4.select("open") && movedFromOtherEnabledTrigger || delayValue === 0 || delayValue === void 0) {
            store4.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget));
            return;
          }
          timeout.start(delayValue, () => {
            if (blockFocusRef.current) {
              return;
            }
            store4.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget));
          });
        },
        onBlur(event) {
          resetBlockedFocus();
          const relatedTarget = event.relatedTarget;
          const nativeEvent = event.nativeEvent;
          const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute("focus-guard")) && relatedTarget.getAttribute("data-type") === "outside";
          timeout.start(0, () => {
            const domReference = store4.select("domReferenceElement");
            const activeEl = activeElement(ownerDocument(domReference));
            if (!relatedTarget && activeEl === domReference) {
              return;
            }
            if (contains(dataRef.current.floatingContext?.refs.floating.current, activeEl) || contains(domReference, activeEl) || movedToFocusGuard) {
              return;
            }
            const nextFocusedElement = relatedTarget ?? activeEl;
            if (isTargetInsideEnabledTrigger(nextFocusedElement, store4.context.triggerElements)) {
              return;
            }
            store4.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent));
          });
        }
      };
    }, [dataRef, delay, store4, timeout]);
    return React38.useMemo(() => enabled ? {
      reference,
      trigger: reference
    } : {}, [enabled, reference]);
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs
  var React39 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/floating-ui-react/hooks/useHoverInteractionSharedState.mjs
  var HoverInteraction = class _HoverInteraction {
    constructor() {
      this.pointerType = void 0;
      this.interactedInside = false;
      this.handler = void 0;
      this.blockMouseMove = true;
      this.performedPointerEventsMutation = false;
      this.pointerEventsScopeElement = null;
      this.pointerEventsReferenceElement = null;
      this.pointerEventsFloatingElement = null;
      this.restTimeoutPending = false;
      this.openChangeTimeout = new Timeout();
      this.restTimeout = new Timeout();
      this.handleCloseOptions = void 0;
    }
    static create() {
      return new _HoverInteraction();
    }
    dispose = () => {
      this.openChangeTimeout.clear();
      this.restTimeout.clear();
    };
    disposeEffect = () => {
      return this.dispose;
    };
  };
  var pointerEventsMutationOwnerByScopeElement = /* @__PURE__ */ new WeakMap();
  function clearSafePolygonPointerEventsMutation(instance) {
    if (!instance.performedPointerEventsMutation) {
      return;
    }
    const scopeElement = instance.pointerEventsScopeElement;
    if (scopeElement && pointerEventsMutationOwnerByScopeElement.get(scopeElement) === instance) {
      instance.pointerEventsScopeElement?.style.removeProperty("pointer-events");
      instance.pointerEventsReferenceElement?.style.removeProperty("pointer-events");
      instance.pointerEventsFloatingElement?.style.removeProperty("pointer-events");
      pointerEventsMutationOwnerByScopeElement.delete(scopeElement);
    }
    instance.performedPointerEventsMutation = false;
    instance.pointerEventsScopeElement = null;
    instance.pointerEventsReferenceElement = null;
    instance.pointerEventsFloatingElement = null;
  }
  function applySafePolygonPointerEventsMutation(instance, options) {
    const {
      scopeElement,
      referenceElement,
      floatingElement
    } = options;
    const existingOwner = pointerEventsMutationOwnerByScopeElement.get(scopeElement);
    if (existingOwner && existingOwner !== instance) {
      clearSafePolygonPointerEventsMutation(existingOwner);
    }
    clearSafePolygonPointerEventsMutation(instance);
    instance.performedPointerEventsMutation = true;
    instance.pointerEventsScopeElement = scopeElement;
    instance.pointerEventsReferenceElement = referenceElement;
    instance.pointerEventsFloatingElement = floatingElement;
    pointerEventsMutationOwnerByScopeElement.set(scopeElement, instance);
    scopeElement.style.pointerEvents = "none";
    referenceElement.style.pointerEvents = "auto";
    floatingElement.style.pointerEvents = "auto";
  }
  function useHoverInteractionSharedState(store4) {
    const data = store4.context.dataRef.current;
    const instance = useRefWithInit(() => data.hoverInteractionState ?? HoverInteraction.create()).current;
    if (!data.hoverInteractionState) {
      data.hoverInteractionState = instance;
    }
    useOnMount(data.hoverInteractionState.disposeEffect);
    return data.hoverInteractionState;
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs
  function useHoverFloatingInteraction(context, parameters = {}) {
    const {
      enabled = true,
      closeDelay: closeDelayProp = 0,
      nodeId: nodeIdProp
    } = parameters;
    const store4 = "rootStore" in context ? context.rootStore : context;
    const open3 = store4.useState("open");
    const floatingElement = store4.useState("floatingElement");
    const domReferenceElement = store4.useState("domReferenceElement");
    const {
      dataRef
    } = store4.context;
    const tree = useFloatingTree();
    const parentId = useFloatingParentNodeId();
    const instance = useHoverInteractionSharedState(store4);
    const childClosedTimeout = useTimeout();
    const isClickLikeOpenEvent2 = useStableCallback(() => {
      return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside);
    });
    const isHoverOpen = useStableCallback(() => {
      return isHoverOpenEvent(dataRef.current.openEvent?.type);
    });
    const clearPointerEvents = useStableCallback(() => {
      clearSafePolygonPointerEventsMutation(instance);
    });
    useIsoLayoutEffect(() => {
      if (!open3) {
        instance.pointerType = void 0;
        instance.restTimeoutPending = false;
        instance.interactedInside = false;
        clearPointerEvents();
      }
    }, [open3, instance, clearPointerEvents]);
    React39.useEffect(() => {
      return clearPointerEvents;
    }, [clearPointerEvents]);
    useIsoLayoutEffect(() => {
      if (!enabled) {
        return void 0;
      }
      if (open3 && instance.handleCloseOptions?.blockPointerEvents && isHoverOpen() && isElement(domReferenceElement) && floatingElement) {
        const ref = domReferenceElement;
        const floatingEl = floatingElement;
        const doc = ownerDocument(floatingElement);
        const parentFloating = tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.elements.floating;
        if (parentFloating) {
          parentFloating.style.pointerEvents = "";
        }
        const cachedScopeElement = instance.pointerEventsScopeElement !== floatingEl ? instance.pointerEventsScopeElement : null;
        const parentScopeElement = parentFloating !== floatingEl ? parentFloating : null;
        const scopeElement = instance.handleCloseOptions?.getScope?.() ?? cachedScopeElement ?? parentScopeElement ?? ref.closest("[data-rootownerid]") ?? doc.body;
        applySafePolygonPointerEventsMutation(instance, {
          scopeElement,
          referenceElement: ref,
          floatingElement: floatingEl
        });
        return () => {
          clearPointerEvents();
        };
      }
      return void 0;
    }, [enabled, open3, domReferenceElement, floatingElement, instance, isHoverOpen, tree, parentId, clearPointerEvents]);
    React39.useEffect(() => {
      if (!enabled) {
        return void 0;
      }
      function hasParentChildren() {
        return !!(tree && parentId && getNodeChildren(tree.nodesRef.current, parentId).length > 0);
      }
      function closeWithDelay(event) {
        const closeDelay = getDelay(closeDelayProp, "close", instance.pointerType);
        const close = () => {
          store4.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
          tree?.events.emit("floating.closed", event);
        };
        if (closeDelay) {
          instance.openChangeTimeout.start(closeDelay, close);
        } else {
          instance.openChangeTimeout.clear();
          close();
        }
      }
      function handleInteractInside(event) {
        const target = getTarget(event);
        if (!isInteractiveElement(target)) {
          instance.interactedInside = false;
          return;
        }
        instance.interactedInside = target?.closest("[aria-haspopup]") != null;
      }
      function onFloatingMouseEnter() {
        instance.openChangeTimeout.clear();
        childClosedTimeout.clear();
        tree?.events.off("floating.closed", onNodeClosed);
        clearPointerEvents();
      }
      function onFloatingMouseLeave(event) {
        if (hasParentChildren() && tree) {
          tree.events.on("floating.closed", onNodeClosed);
          return;
        }
        if (isTargetInsideEnabledTrigger(event.relatedTarget, store4.context.triggerElements)) {
          return;
        }
        const currentNodeId = dataRef.current.floatingContext?.nodeId ?? nodeIdProp;
        const relatedTarget = event.relatedTarget;
        const isMovingIntoDescendantFloating = tree && currentNodeId && isElement(relatedTarget) && getNodeChildren(tree.nodesRef.current, currentNodeId, false).some((node) => contains(node.context?.elements.floating, relatedTarget));
        if (isMovingIntoDescendantFloating) {
          return;
        }
        if (instance.handler) {
          instance.handler(event);
          return;
        }
        clearPointerEvents();
        if (isHoverOpen() && !isClickLikeOpenEvent2()) {
          closeWithDelay(event);
        }
      }
      function onNodeClosed(event) {
        if (!tree || !parentId || hasParentChildren()) {
          return;
        }
        childClosedTimeout.start(0, () => {
          tree.events.off("floating.closed", onNodeClosed);
          store4.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
          tree.events.emit("floating.closed", event);
        });
      }
      const floating = floatingElement;
      return mergeCleanups(floating && addEventListener(floating, "mouseenter", onFloatingMouseEnter), floating && addEventListener(floating, "mouseleave", onFloatingMouseLeave), floating && addEventListener(floating, "pointerdown", handleInteractInside, true), () => {
        tree?.events.off("floating.closed", onNodeClosed);
      });
    }, [enabled, floatingElement, store4, dataRef, closeDelayProp, nodeIdProp, isHoverOpen, isClickLikeOpenEvent2, clearPointerEvents, instance, tree, parentId, childClosedTimeout]);
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/useHoverReferenceInteraction.mjs
  var React40 = __toESM(require_react(), 1);
  var ReactDOM5 = __toESM(require_react_dom(), 1);
  var EMPTY_REF = {
    current: null
  };
  function useHoverReferenceInteraction(context, props = {}) {
    const {
      enabled = true,
      delay = 0,
      handleClose = null,
      mouseOnly = false,
      restMs = 0,
      move = true,
      triggerElementRef = EMPTY_REF,
      externalTree,
      isActiveTrigger = true,
      getHandleCloseContext,
      isClosing,
      shouldOpen: shouldOpenProp,
      guardStaleOpen = false
    } = props;
    const store4 = "rootStore" in context ? context.rootStore : context;
    const {
      dataRef,
      events
    } = store4.context;
    const tree = useFloatingTree(externalTree);
    const instance = useHoverInteractionSharedState(store4);
    const isHoverCloseActiveRef = React40.useRef(false);
    const handleCloseRef = useValueAsRef(handleClose);
    const delayRef = useValueAsRef(delay);
    const restMsRef = useValueAsRef(restMs);
    const enabledRef = useValueAsRef(enabled);
    const shouldOpenRef = useValueAsRef(shouldOpenProp);
    const isClosingRef = useValueAsRef(isClosing);
    const isClickLikeOpenEvent2 = useStableCallback(() => {
      return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside);
    });
    const checkShouldOpen = useStableCallback(() => {
      return shouldOpenRef.current?.() !== false;
    });
    const isOverInactiveTrigger = useStableCallback((currentDomReference, currentTarget, target) => {
      const allTriggers = store4.context.triggerElements;
      if (allTriggers.hasElement(currentTarget)) {
        return !currentDomReference || !contains(currentDomReference, currentTarget);
      }
      if (!isElement(target)) {
        return false;
      }
      const targetElement = target;
      return allTriggers.hasMatchingElement((trigger) => contains(trigger, targetElement)) && (!currentDomReference || !contains(currentDomReference, targetElement));
    });
    const cleanupMouseMoveHandler = useStableCallback(() => {
      if (!instance.handler) {
        return;
      }
      const doc = ownerDocument(store4.select("domReferenceElement"));
      doc.removeEventListener("mousemove", instance.handler);
      instance.handler = void 0;
    });
    const clearPointerEvents = useStableCallback(() => {
      clearSafePolygonPointerEventsMutation(instance);
    });
    if (isActiveTrigger) {
      instance.handleCloseOptions = handleClose?.__options;
    }
    React40.useEffect(() => cleanupMouseMoveHandler, [cleanupMouseMoveHandler]);
    React40.useEffect(() => {
      if (!enabled) {
        return void 0;
      }
      function onOpenChangeLocal(details) {
        if (!details.open) {
          isHoverCloseActiveRef.current = details.reason === reason_parts_exports.triggerHover;
          cleanupMouseMoveHandler();
          instance.openChangeTimeout.clear();
          instance.restTimeout.clear();
          instance.blockMouseMove = true;
          instance.restTimeoutPending = false;
        } else {
          isHoverCloseActiveRef.current = false;
        }
      }
      events.on("openchange", onOpenChangeLocal);
      return () => {
        events.off("openchange", onOpenChangeLocal);
      };
    }, [enabled, events, instance, cleanupMouseMoveHandler]);
    React40.useEffect(() => {
      if (!enabled) {
        return void 0;
      }
      function closeWithDelay(event, runElseBranch = true) {
        const closeDelay = getDelay(delayRef.current, "close", instance.pointerType);
        if (closeDelay) {
          instance.openChangeTimeout.start(closeDelay, () => {
            store4.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
            tree?.events.emit("floating.closed", event);
          });
        } else if (runElseBranch) {
          instance.openChangeTimeout.clear();
          store4.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
          tree?.events.emit("floating.closed", event);
        }
      }
      const trigger = triggerElementRef.current ?? (isActiveTrigger ? store4.select("domReferenceElement") : null);
      if (!isElement(trigger)) {
        return void 0;
      }
      function onMouseEnter(event) {
        instance.openChangeTimeout.clear();
        instance.blockMouseMove = false;
        if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) {
          return;
        }
        const restMsValue = getRestMs(restMsRef.current);
        const openDelay = getDelay(delayRef.current, "open", instance.pointerType);
        const eventTarget = getTarget(event);
        const currentTarget = event.currentTarget ?? null;
        const currentDomReference = store4.select("domReferenceElement");
        let triggerNode = currentTarget;
        if (isElement(eventTarget) && !store4.context.triggerElements.hasElement(eventTarget)) {
          for (const triggerElement of store4.context.triggerElements.elements()) {
            if (contains(triggerElement, eventTarget)) {
              triggerNode = triggerElement;
              break;
            }
          }
        }
        if (isElement(currentTarget) && isElement(currentDomReference) && !store4.context.triggerElements.hasElement(currentTarget) && contains(currentTarget, currentDomReference)) {
          triggerNode = currentDomReference;
        }
        const isOverInactive = triggerNode == null ? false : isOverInactiveTrigger(currentDomReference, triggerNode, eventTarget);
        const isOpen2 = store4.select("open");
        const isInClosingTransition = isClosingRef.current?.() ?? store4.select("transitionStatus") === "ending";
        const isHoverCloseTransition = !isOpen2 && isInClosingTransition && isHoverCloseActiveRef.current;
        const isReenteringSameTriggerDuringCloseTransition = !isOverInactive && isElement(triggerNode) && isElement(currentDomReference) && contains(currentDomReference, triggerNode) && isHoverCloseTransition;
        const isRestOnlyDelay = restMsValue > 0 && !openDelay;
        const shouldOpenImmediately = isOverInactive && (isOpen2 || isHoverCloseTransition) || isReenteringSameTriggerDuringCloseTransition;
        const shouldOpen = !isOpen2 || isOverInactive;
        if (shouldOpenImmediately) {
          if (checkShouldOpen()) {
            store4.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode));
          }
          return;
        }
        if (isRestOnlyDelay) {
          return;
        }
        if (openDelay) {
          instance.openChangeTimeout.start(openDelay, () => {
            if (shouldOpen && checkShouldOpen()) {
              store4.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode));
            }
          });
        } else if (shouldOpen) {
          if (checkShouldOpen()) {
            store4.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode));
          }
        }
      }
      function onMouseLeave(event) {
        if (isClickLikeOpenEvent2()) {
          clearPointerEvents();
          return;
        }
        cleanupMouseMoveHandler();
        const domReferenceElement = store4.select("domReferenceElement");
        const doc = ownerDocument(domReferenceElement);
        instance.restTimeout.clear();
        instance.restTimeoutPending = false;
        const handleCloseContextBase = dataRef.current.floatingContext ?? getHandleCloseContext?.();
        if (isTargetInsideEnabledTrigger(event.relatedTarget, store4.context.triggerElements)) {
          return;
        }
        if (handleCloseRef.current && handleCloseContextBase) {
          if (!store4.select("open")) {
            instance.openChangeTimeout.clear();
          }
          const currentTrigger = triggerElementRef.current;
          instance.handler = handleCloseRef.current({
            ...handleCloseContextBase,
            tree,
            x: event.clientX,
            y: event.clientY,
            onClose() {
              clearPointerEvents();
              cleanupMouseMoveHandler();
              if (enabledRef.current && !isClickLikeOpenEvent2() && currentTrigger === store4.select("domReferenceElement")) {
                closeWithDelay(event, true);
              }
            }
          });
          doc.addEventListener("mousemove", instance.handler);
          instance.handler(event);
          return;
        }
        const shouldClose = instance.pointerType === "touch" ? !contains(store4.select("floatingElement"), event.relatedTarget) : true;
        if (shouldClose) {
          closeWithDelay(event);
        }
      }
      function onMouseOut(event) {
        if (contains(trigger, event.relatedTarget)) {
          return;
        }
        instance.openChangeTimeout.clear();
        instance.restTimeout.clear();
        instance.restTimeoutPending = false;
      }
      const staleOpenGuard = guardStaleOpen ? addEventListener(trigger, "mouseout", onMouseOut) : void 0;
      if (move) {
        return mergeCleanups(addEventListener(trigger, "mousemove", onMouseEnter, {
          once: true
        }), addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard);
      }
      return mergeCleanups(addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard);
    }, [cleanupMouseMoveHandler, clearPointerEvents, dataRef, delayRef, store4, enabled, handleCloseRef, instance, isActiveTrigger, isOverInactiveTrigger, isClickLikeOpenEvent2, mouseOnly, move, restMsRef, triggerElementRef, tree, enabledRef, getHandleCloseContext, isClosingRef, checkShouldOpen, guardStaleOpen]);
    return React40.useMemo(() => {
      if (!enabled) {
        return void 0;
      }
      function setPointerRef(event) {
        instance.pointerType = event.pointerType;
      }
      return {
        onPointerDown: setPointerRef,
        onPointerEnter: setPointerRef,
        onMouseMove(event) {
          const {
            nativeEvent
          } = event;
          const trigger = event.currentTarget;
          const currentDomReference = store4.select("domReferenceElement");
          const currentOpen = store4.select("open");
          const isOverInactive = isOverInactiveTrigger(currentDomReference, trigger, event.target);
          if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) {
            return;
          }
          if (currentOpen && isOverInactive && instance.handleCloseOptions?.blockPointerEvents) {
            const floatingElement = store4.select("floatingElement");
            if (floatingElement) {
              const scopeElement = instance.handleCloseOptions?.getScope?.() ?? trigger.ownerDocument.body;
              applySafePolygonPointerEventsMutation(instance, {
                scopeElement,
                referenceElement: trigger,
                floatingElement
              });
            }
          }
          const restMsValue = getRestMs(restMsRef.current);
          if (currentOpen && !isOverInactive || restMsValue === 0) {
            return;
          }
          if (!isOverInactive && instance.restTimeoutPending && event.movementX ** 2 + event.movementY ** 2 < 2) {
            return;
          }
          instance.restTimeout.clear();
          function handleMouseMove() {
            instance.restTimeoutPending = false;
            if (isClickLikeOpenEvent2()) {
              return;
            }
            const latestOpen = store4.select("open");
            if (!instance.blockMouseMove && (!latestOpen || isOverInactive) && checkShouldOpen()) {
              store4.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, nativeEvent, trigger));
            }
          }
          if (instance.pointerType === "touch") {
            ReactDOM5.flushSync(() => {
              handleMouseMove();
            });
          } else if (isOverInactive && currentOpen) {
            handleMouseMove();
          } else {
            instance.restTimeoutPending = true;
            instance.restTimeout.start(restMsValue, handleMouseMove);
          }
        }
      };
    }, [enabled, instance, isClickLikeOpenEvent2, isOverInactiveTrigger, mouseOnly, store4, restMsRef, checkShouldOpen]);
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/useListNavigation.mjs
  var React41 = __toESM(require_react(), 1);
  var ESCAPE = "Escape";
  function isStationaryWebKitPointer(event) {
    return parts_exports.engine.webkit && event.movementX === 0 && event.movementY === 0;
  }
  function doSwitch(orientation, vertical, horizontal) {
    switch (orientation) {
      case "vertical":
        return vertical;
      case "horizontal":
        return horizontal;
      default:
        return vertical || horizontal;
    }
  }
  function isMainOrientationKey(key, orientation) {
    const vertical = key === ARROW_UP || key === ARROW_DOWN;
    const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;
    return doSwitch(orientation, vertical, horizontal);
  }
  function isMainOrientationToEndKey(key, orientation, rtl) {
    const vertical = key === ARROW_DOWN;
    const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;
    return doSwitch(orientation, vertical, horizontal) || key === "Enter" || key === " " || key === "";
  }
  function isCrossOrientationOpenKey(key, orientation, rtl) {
    const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;
    const horizontal = key === ARROW_DOWN;
    return doSwitch(orientation, vertical, horizontal);
  }
  function isCrossOrientationCloseKey(key, orientation, rtl, grid) {
    const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;
    const horizontal = key === ARROW_UP;
    if (orientation === "both" || orientation === "horizontal" && grid) {
      return key === ESCAPE;
    }
    return doSwitch(orientation, vertical, horizontal);
  }
  function useListNavigation(context, props) {
    const {
      listRef,
      activeIndex,
      onNavigate: onNavigateProp = () => {
      },
      enabled = true,
      selectedIndex = null,
      allowEscape = false,
      loopFocus = false,
      nested = false,
      rtl = false,
      virtual = false,
      focusItemOnOpen = "auto",
      focusItemOnHover = true,
      openOnArrowKeyDown = true,
      disabledIndices = void 0,
      orientation = "vertical",
      parentOrientation,
      id,
      resetOnPointerLeave = true,
      externalTree,
      grid: navigateGrid
    } = props;
    const isGrid2 = navigateGrid != null;
    if (true) {
      if (allowEscape) {
        if (!loopFocus) {
          console.warn("`useListNavigation` looping must be enabled to allow escaping.");
        }
        if (!virtual) {
          console.warn("`useListNavigation` must be virtual to allow escaping.");
        }
      }
      if (orientation === "vertical" && isGrid2) {
        console.warn("In grid list navigation mode, the `orientation` should", 'be either "horizontal" or "both".');
      }
    }
    const store4 = "rootStore" in context ? context.rootStore : context;
    const open3 = store4.useState("open");
    const floatingElement = store4.useState("floatingElement");
    const domReferenceElement = store4.useState("domReferenceElement");
    const dataRef = store4.context.dataRef;
    const floatingFocusElement = getFloatingFocusElement(floatingElement);
    const typeableComboboxReference = isTypeableCombobox(domReferenceElement);
    const floatingFocusElementRef = useValueAsRef(floatingFocusElement);
    const parentId = useFloatingParentNodeId();
    const tree = useFloatingTree(externalTree);
    const focusItemOnOpenRef = React41.useRef(focusItemOnOpen);
    const indexRef = React41.useRef(selectedIndex ?? -1);
    const keyRef = React41.useRef(null);
    const isPointerModalityRef = React41.useRef(true);
    const onNavigate = useStableCallback((event) => {
      onNavigateProp(indexRef.current === -1 ? null : indexRef.current, event);
    });
    const previousMountedRef = React41.useRef(!!floatingElement);
    const previousOpenRef = React41.useRef(open3);
    const forceSyncFocusRef = React41.useRef(false);
    const forceScrollIntoViewRef = React41.useRef(false);
    const cancelQueuedFocusRef = React41.useRef(null);
    const disabledIndicesRef = useValueAsRef(disabledIndices);
    const latestOpenRef = useValueAsRef(open3);
    const selectedIndexRef = useValueAsRef(selectedIndex);
    const resetOnPointerLeaveRef = useValueAsRef(resetOnPointerLeave);
    const focusFrame = useAnimationFrame();
    const waitForListPopulatedFrame = useAnimationFrame();
    const focusItem = useStableCallback(() => {
      function runFocus(item2) {
        if (virtual) {
          tree?.events.emit("virtualfocus", item2);
        } else {
          cancelQueuedFocusRef.current = enqueueFocus(item2, {
            sync: forceSyncFocusRef.current,
            preventScroll: true
          });
        }
      }
      const initialItem = listRef.current[indexRef.current];
      const forceScrollIntoView = forceScrollIntoViewRef.current;
      if (initialItem) {
        runFocus(initialItem);
      }
      const scheduler2 = forceSyncFocusRef.current ? (callback) => callback() : (callback) => focusFrame.request(callback);
      scheduler2(() => {
        const waitedItem = listRef.current[indexRef.current] || initialItem;
        if (!waitedItem) {
          return;
        }
        if (!initialItem) {
          runFocus(waitedItem);
        }
        const shouldScrollIntoView = (
          // eslint-disable-next-line @typescript-eslint/no-use-before-define
          item && (forceScrollIntoView || !isPointerModalityRef.current)
        );
        if (shouldScrollIntoView) {
          waitedItem.scrollIntoView?.({
            block: "nearest",
            inline: "nearest"
          });
        }
      });
    });
    useIsoLayoutEffect(() => {
      dataRef.current.orientation = orientation;
    }, [dataRef, orientation]);
    useIsoLayoutEffect(() => {
      if (!enabled) {
        return;
      }
      if (open3 && floatingElement) {
        indexRef.current = selectedIndex ?? -1;
        if (focusItemOnOpenRef.current && selectedIndex != null) {
          forceScrollIntoViewRef.current = true;
          onNavigate();
        }
      } else if (previousMountedRef.current) {
        indexRef.current = -1;
        onNavigate();
      }
    }, [enabled, open3, floatingElement, selectedIndex, onNavigate]);
    useIsoLayoutEffect(() => {
      if (!enabled) {
        return;
      }
      if (!open3) {
        forceSyncFocusRef.current = false;
        return;
      }
      if (!floatingElement) {
        return;
      }
      if (activeIndex == null) {
        forceSyncFocusRef.current = false;
        if (selectedIndexRef.current != null) {
          return;
        }
        if (previousMountedRef.current) {
          indexRef.current = -1;
          focusItem();
        }
        if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {
          let runs = 0;
          const waitForListPopulated = () => {
            if (listRef.current[0] == null) {
              if (runs < 2) {
                const scheduler2 = runs ? (callback) => waitForListPopulatedFrame.request(callback) : queueMicrotask;
                scheduler2(waitForListPopulated);
              }
              runs += 1;
            } else {
              indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinListIndex(listRef) : getMaxListIndex(listRef);
              keyRef.current = null;
              onNavigate();
            }
          };
          waitForListPopulated();
        }
      } else if (!isIndexOutOfListBounds(listRef.current, activeIndex)) {
        indexRef.current = activeIndex;
        focusItem();
        forceScrollIntoViewRef.current = false;
      }
    }, [enabled, open3, floatingElement, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, waitForListPopulatedFrame]);
    useIsoLayoutEffect(() => {
      if (!enabled || floatingElement || !tree || virtual || !previousMountedRef.current) {
        return;
      }
      const nodes = tree.nodesRef.current;
      const parent = nodes.find((node) => node.id === parentId)?.context?.elements.floating;
      const activeEl = activeElement(ownerDocument(domReferenceElement ?? parent ?? null));
      const treeContainsActiveEl = nodes.some((node) => node.context && contains(node.context.elements.floating, activeEl));
      if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {
        parent.focus({
          preventScroll: true
        });
      }
    }, [enabled, floatingElement, domReferenceElement, tree, parentId, virtual]);
    useIsoLayoutEffect(() => {
      previousOpenRef.current = open3;
      previousMountedRef.current = !!floatingElement;
    });
    useIsoLayoutEffect(() => {
      if (!open3) {
        keyRef.current = null;
        focusItemOnOpenRef.current = focusItemOnOpen;
      }
    }, [open3, focusItemOnOpen]);
    const hasActiveIndex = activeIndex != null;
    const syncCurrentTarget = useStableCallback((event) => {
      if (!latestOpenRef.current) {
        return;
      }
      const index3 = listRef.current.indexOf(event.currentTarget);
      if (index3 !== -1 && (indexRef.current !== index3 || activeIndex !== index3)) {
        indexRef.current = index3;
        onNavigate(event);
      }
    });
    const getParentOrientation = useStableCallback(() => {
      return parentOrientation ?? tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.dataRef?.current.orientation;
    });
    const getMinEnabledIndex = useStableCallback(() => {
      return getMinListIndex(listRef, disabledIndicesRef.current);
    });
    const commonOnKeyDown = useStableCallback((event) => {
      isPointerModalityRef.current = false;
      forceSyncFocusRef.current = true;
      if (event.which === 229) {
        return;
      }
      if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {
        return;
      }
      if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, isGrid2)) {
        if (!isMainOrientationKey(event.key, getParentOrientation())) {
          stopEvent(event);
        }
        store4.setOpen(false, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent));
        if (isHTMLElement(domReferenceElement)) {
          if (virtual) {
            tree?.events.emit("virtualfocus", domReferenceElement);
          } else {
            domReferenceElement.focus();
          }
        }
        return;
      }
      const currentIndex = indexRef.current;
      const minIndex = getMinListIndex(listRef, disabledIndices);
      const maxIndex = getMaxListIndex(listRef, disabledIndices);
      if (!typeableComboboxReference) {
        if (event.key === "Home") {
          stopEvent(event);
          indexRef.current = minIndex;
          onNavigate(event);
        }
        if (event.key === "End") {
          stopEvent(event);
          indexRef.current = maxIndex;
          onNavigate(event);
        }
      }
      if (navigateGrid != null) {
        const index3 = navigateGrid(event, indexRef.current, listRef, orientation, loopFocus, rtl, disabledIndices, minIndex, maxIndex);
        if (index3 != null) {
          indexRef.current = index3;
          onNavigate(event);
        }
        if (orientation === "both") {
          return;
        }
      }
      if (isMainOrientationKey(event.key, orientation)) {
        stopEvent(event);
        if (open3 && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {
          indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;
          onNavigate(event);
          return;
        }
        if (isMainOrientationToEndKey(event.key, orientation, rtl)) {
          if (loopFocus) {
            if (currentIndex >= maxIndex) {
              if (allowEscape && currentIndex !== listRef.current.length) {
                indexRef.current = -1;
              } else {
                forceSyncFocusRef.current = false;
                indexRef.current = minIndex;
              }
            } else {
              indexRef.current = findNonDisabledListIndex(listRef.current, {
                startingIndex: currentIndex,
                disabledIndices
              });
            }
          } else {
            indexRef.current = Math.min(maxIndex, findNonDisabledListIndex(listRef.current, {
              startingIndex: currentIndex,
              disabledIndices
            }));
          }
        } else if (loopFocus) {
          if (currentIndex <= minIndex) {
            if (allowEscape && currentIndex !== -1) {
              indexRef.current = listRef.current.length;
            } else {
              forceSyncFocusRef.current = false;
              indexRef.current = maxIndex;
            }
          } else {
            indexRef.current = findNonDisabledListIndex(listRef.current, {
              startingIndex: currentIndex,
              decrement: true,
              disabledIndices
            });
          }
        } else {
          indexRef.current = Math.max(minIndex, findNonDisabledListIndex(listRef.current, {
            startingIndex: currentIndex,
            decrement: true,
            disabledIndices
          }));
        }
        if (isIndexOutOfListBounds(listRef.current, indexRef.current)) {
          indexRef.current = -1;
        }
        onNavigate(event);
      }
    });
    const item = React41.useMemo(() => {
      const itemProps = {
        onFocus(event) {
          forceSyncFocusRef.current = true;
          syncCurrentTarget(event);
        },
        onClick: ({
          currentTarget
        }) => currentTarget.focus({
          preventScroll: true
        }),
        // Safari
        onMouseMove(event) {
          if (isStationaryWebKitPointer(event)) {
            return;
          }
          forceSyncFocusRef.current = true;
          forceScrollIntoViewRef.current = false;
          if (focusItemOnHover) {
            syncCurrentTarget(event);
          }
        },
        onPointerLeave(event) {
          if (!latestOpenRef.current || !isPointerModalityRef.current || event.pointerType === "touch") {
            return;
          }
          forceSyncFocusRef.current = true;
          const relatedTarget = event.relatedTarget;
          if (!focusItemOnHover || listRef.current.includes(relatedTarget)) {
            return;
          }
          if (!resetOnPointerLeaveRef.current) {
            return;
          }
          cancelQueuedFocusRef.current?.();
          cancelQueuedFocusRef.current = null;
          indexRef.current = -1;
          onNavigate(event);
          if (!virtual) {
            const floatingFocusEl = floatingFocusElementRef.current;
            const activeEl = activeElement(ownerDocument(floatingFocusEl));
            if (floatingFocusEl && contains(floatingFocusEl, activeEl)) {
              floatingFocusEl.focus({
                preventScroll: true
              });
            }
          }
        }
      };
      return itemProps;
    }, [syncCurrentTarget, latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, resetOnPointerLeaveRef, virtual]);
    const ariaActiveDescendantProp = React41.useMemo(() => {
      return virtual && open3 && hasActiveIndex && {
        "aria-activedescendant": `${id}-${activeIndex}`
      };
    }, [virtual, open3, hasActiveIndex, id, activeIndex]);
    const floating = React41.useMemo(() => {
      return {
        ...!typeableComboboxReference ? ariaActiveDescendantProp : {},
        onKeyDown(event) {
          if (event.key === "Tab" && event.shiftKey && open3 && !virtual) {
            const target = getTarget(event.nativeEvent);
            if (target && !contains(floatingFocusElementRef.current, target)) {
              return;
            }
            stopEvent(event);
            store4.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent));
            if (isHTMLElement(domReferenceElement)) {
              domReferenceElement.focus();
            }
            return;
          }
          commonOnKeyDown(event);
        },
        onPointerMove(event) {
          if (isStationaryWebKitPointer(event)) {
            return;
          }
          isPointerModalityRef.current = true;
        }
      };
    }, [ariaActiveDescendantProp, commonOnKeyDown, floatingFocusElementRef, typeableComboboxReference, store4, open3, virtual, domReferenceElement]);
    const trigger = React41.useMemo(() => {
      function openOnNavigationKeyDown(event) {
        store4.setOpen(true, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent, event.currentTarget));
      }
      function checkVirtualMouse(event) {
        if (focusItemOnOpen === "auto" && isVirtualClick(event.nativeEvent)) {
          focusItemOnOpenRef.current = !virtual;
        }
      }
      function checkVirtualPointer(event) {
        focusItemOnOpenRef.current = focusItemOnOpen;
        if (focusItemOnOpen === "auto" && isVirtualPointerEvent(event.nativeEvent)) {
          focusItemOnOpenRef.current = true;
        }
      }
      return {
        onKeyDown(event) {
          const currentOpen = store4.select("open");
          isPointerModalityRef.current = false;
          const isArrowKey = event.key.startsWith("Arrow");
          const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl);
          const isMainKey = isMainOrientationKey(event.key, orientation);
          const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === "Enter" || event.key.trim() === "";
          if (virtual && currentOpen) {
            return commonOnKeyDown(event);
          }
          if (!currentOpen && !openOnArrowKeyDown && isArrowKey) {
            return void 0;
          }
          if (isNavigationKey) {
            const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation());
            keyRef.current = nested && isParentMainKey ? null : event.key;
          }
          if (nested) {
            if (isParentCrossOpenKey) {
              stopEvent(event);
              if (currentOpen) {
                indexRef.current = getMinEnabledIndex();
                onNavigate(event);
              } else {
                openOnNavigationKeyDown(event);
              }
            }
            return void 0;
          }
          if (isMainKey) {
            if (selectedIndexRef.current != null) {
              indexRef.current = selectedIndexRef.current;
            }
            stopEvent(event);
            if (!currentOpen && openOnArrowKeyDown) {
              openOnNavigationKeyDown(event);
            } else {
              commonOnKeyDown(event);
            }
            if (currentOpen) {
              onNavigate(event);
            }
          }
          return void 0;
        },
        onFocus(event) {
          if (store4.select("open") && !virtual) {
            indexRef.current = -1;
            onNavigate(event);
          }
        },
        onPointerDown: checkVirtualPointer,
        onPointerEnter: checkVirtualPointer,
        onMouseDown: checkVirtualMouse,
        onClick: checkVirtualMouse
      };
    }, [commonOnKeyDown, focusItemOnOpen, getMinEnabledIndex, nested, onNavigate, store4, openOnArrowKeyDown, orientation, getParentOrientation, rtl, selectedIndexRef, virtual]);
    const reference = React41.useMemo(() => {
      return {
        ...ariaActiveDescendantProp,
        ...trigger
      };
    }, [ariaActiveDescendantProp, trigger]);
    return React41.useMemo(() => enabled ? {
      reference,
      floating,
      item,
      trigger
    } : {}, [enabled, reference, floating, trigger, item]);
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/useTypeahead.mjs
  var React42 = __toESM(require_react(), 1);
  function useTypeahead(context, props) {
    const {
      listRef,
      elementsRef,
      activeIndex,
      onMatch: onMatchProp,
      disabledIndices,
      onTyping,
      enabled = true,
      resetMs = 750,
      selectedIndex = null
    } = props;
    const store4 = "rootStore" in context ? context.rootStore : context;
    const open3 = store4.useState("open");
    const timeout = useTimeout();
    const stringRef = React42.useRef("");
    const prevIndexRef = React42.useRef(selectedIndex ?? activeIndex ?? -1);
    const matchIndexRef = React42.useRef(null);
    const onKeyDown = useStableCallback((event) => {
      function getElement(index4) {
        return elementsRef?.current[index4];
      }
      function isItemAvailable(index4) {
        const element = getElement(index4);
        if (element && !isElementVisible(element) || element?.matches(":disabled")) {
          return false;
        }
        return disabledIndices == null || !isListIndexDisabled(EMPTY_ARRAY3, index4, disabledIndices);
      }
      function getMatchingIndex(list, string, startIndex2 = 0) {
        if (list.length === 0) {
          return -1;
        }
        const normalizedStartIndex = (startIndex2 % list.length + list.length) % list.length;
        const lowerString = string.toLowerCase();
        for (let offset4 = 0; offset4 < list.length; offset4 += 1) {
          const index4 = (normalizedStartIndex + offset4) % list.length;
          const text = list[index4];
          if (!text?.toLowerCase().startsWith(lowerString) || !isItemAvailable(index4)) {
            continue;
          }
          return index4;
        }
        return -1;
      }
      const listContent = listRef.current;
      if (stringRef.current.length > 0 && event.key === " ") {
        stopEvent(event);
        onTyping?.(true);
      }
      if (stringRef.current.length > 0 && stringRef.current[0] !== " ") {
        if (getMatchingIndex(listContent, stringRef.current) === -1 && event.key !== " ") {
          onTyping?.(false);
        }
      }
      if (listContent == null || // Character key.
      event.key.length !== 1 || // Modifier key.
      event.ctrlKey || event.metaKey || event.altKey) {
        return;
      }
      if (open3 && event.key !== " ") {
        stopEvent(event);
        onTyping?.(true);
      }
      const isNewSession = stringRef.current === "";
      if (isNewSession) {
        prevIndexRef.current = selectedIndex ?? activeIndex ?? -1;
      }
      const allowRapidSuccessionOfFirstLetter = listContent.every((text, index4) => text && isItemAvailable(index4) ? text[0]?.toLowerCase() !== text[1]?.toLowerCase() : true);
      if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {
        stringRef.current = "";
        prevIndexRef.current = matchIndexRef.current;
      }
      stringRef.current += event.key;
      timeout.start(resetMs, () => {
        stringRef.current = "";
        prevIndexRef.current = matchIndexRef.current;
        onTyping?.(false);
      });
      const prevIndex = isNewSession ? selectedIndex ?? activeIndex ?? -1 : prevIndexRef.current;
      const startIndex = (prevIndex ?? 0) + 1;
      const index3 = getMatchingIndex(listContent, stringRef.current, startIndex);
      if (index3 !== -1) {
        onMatchProp?.(index3);
        matchIndexRef.current = index3;
      } else if (event.key !== " ") {
        stringRef.current = "";
        onTyping?.(false);
      }
    });
    const onBlur = useStableCallback((event) => {
      const next = event.relatedTarget;
      const currentDomReferenceElement = store4.select("domReferenceElement");
      const currentFloatingElement = store4.select("floatingElement");
      const withinComposite = contains(currentDomReferenceElement, next) || contains(currentFloatingElement, next);
      if (withinComposite) {
        return;
      }
      timeout.clear();
      stringRef.current = "";
      prevIndexRef.current = matchIndexRef.current;
      onTyping?.(false);
    });
    useIsoLayoutEffect(() => {
      if (!open3 && selectedIndex !== null) {
        return;
      }
      timeout.clear();
      matchIndexRef.current = null;
      if (stringRef.current !== "") {
        stringRef.current = "";
      }
    }, [open3, selectedIndex, timeout]);
    const sharedProps = React42.useMemo(() => ({
      onKeyDown,
      onBlur
    }), [onKeyDown, onBlur]);
    return React42.useMemo(() => enabled ? {
      reference: sharedProps,
      floating: sharedProps
    } : {}, [enabled, sharedProps]);
  }

  // node_modules/@base-ui/react/floating-ui-react/safePolygon.mjs
  var CURSOR_SPEED_THRESHOLD = 0.1;
  var CURSOR_SPEED_THRESHOLD_SQUARED = CURSOR_SPEED_THRESHOLD * CURSOR_SPEED_THRESHOLD;
  var POLYGON_BUFFER = 0.5;
  function hasIntersectingEdge(pointX, pointY, xi, yi, xj, yj) {
    return yi >= pointY !== yj >= pointY && pointX <= (xj - xi) * (pointY - yi) / (yj - yi) + xi;
  }
  function isPointInQuadrilateral(pointX, pointY, x1, y1, x2, y22, x3, y3, x4, y4) {
    let isInsideValue = false;
    if (hasIntersectingEdge(pointX, pointY, x1, y1, x2, y22)) {
      isInsideValue = !isInsideValue;
    }
    if (hasIntersectingEdge(pointX, pointY, x2, y22, x3, y3)) {
      isInsideValue = !isInsideValue;
    }
    if (hasIntersectingEdge(pointX, pointY, x3, y3, x4, y4)) {
      isInsideValue = !isInsideValue;
    }
    if (hasIntersectingEdge(pointX, pointY, x4, y4, x1, y1)) {
      isInsideValue = !isInsideValue;
    }
    return isInsideValue;
  }
  function isInsideRect(pointX, pointY, rect) {
    return pointX >= rect.x && pointX <= rect.x + rect.width && pointY >= rect.y && pointY <= rect.y + rect.height;
  }
  function isInsideAxisAlignedRect(pointX, pointY, x1, y1, x2, y22) {
    const minX = Math.min(x1, x2);
    const maxX = Math.max(x1, x2);
    const minY = Math.min(y1, y22);
    const maxY = Math.max(y1, y22);
    return pointX >= minX && pointX <= maxX && pointY >= minY && pointY <= maxY;
  }
  function safePolygon(options = {}) {
    const {
      blockPointerEvents = false
    } = options;
    const timeout = new Timeout();
    const fn = ({
      x: x2,
      y: y3,
      placement,
      elements: elements2,
      onClose,
      nodeId,
      tree
    }) => {
      const side = placement?.split("-")[0];
      let hasLanded = false;
      let lastX = null;
      let lastY = null;
      let lastCursorTime = typeof performance !== "undefined" ? performance.now() : 0;
      function isCursorMovingSlowly(nextX, nextY) {
        const currentTime = performance.now();
        const elapsedTime = currentTime - lastCursorTime;
        if (lastX === null || lastY === null || elapsedTime === 0) {
          lastX = nextX;
          lastY = nextY;
          lastCursorTime = currentTime;
          return false;
        }
        const deltaX = nextX - lastX;
        const deltaY = nextY - lastY;
        const distanceSquared = deltaX * deltaX + deltaY * deltaY;
        const thresholdSquared = elapsedTime * elapsedTime * CURSOR_SPEED_THRESHOLD_SQUARED;
        lastX = nextX;
        lastY = nextY;
        lastCursorTime = currentTime;
        return distanceSquared < thresholdSquared;
      }
      function close() {
        timeout.clear();
        onClose();
      }
      return function onMouseMove(event) {
        timeout.clear();
        const domReference = elements2.domReference;
        const floating = elements2.floating;
        if (!domReference || !floating || side == null || x2 == null || y3 == null) {
          return void 0;
        }
        const {
          clientX,
          clientY
        } = event;
        const target = getTarget(event);
        const isLeave = event.type === "mouseleave";
        const isOverFloatingEl = contains(floating, target);
        const isOverReferenceEl = contains(domReference, target);
        if (isOverFloatingEl) {
          hasLanded = true;
          if (!isLeave) {
            return void 0;
          }
        }
        if (isOverReferenceEl) {
          hasLanded = false;
          if (!isLeave) {
            hasLanded = true;
            return void 0;
          }
        }
        if (isLeave && isElement(event.relatedTarget) && contains(floating, event.relatedTarget)) {
          return void 0;
        }
        function hasOpenChildNode() {
          return Boolean(tree && getNodeChildren(tree.nodesRef.current, nodeId).length > 0);
        }
        function closeIfNoOpenChild() {
          if (!hasOpenChildNode()) {
            close();
          }
        }
        if (hasOpenChildNode()) {
          return void 0;
        }
        const refRect = domReference.getBoundingClientRect();
        const rect = floating.getBoundingClientRect();
        const cursorLeaveFromRight = x2 > rect.right - rect.width / 2;
        const cursorLeaveFromBottom = y3 > rect.bottom - rect.height / 2;
        const isFloatingWider = rect.width > refRect.width;
        const isFloatingTaller = rect.height > refRect.height;
        const left = (isFloatingWider ? refRect : rect).left;
        const right = (isFloatingWider ? refRect : rect).right;
        const top = (isFloatingTaller ? refRect : rect).top;
        const bottom = (isFloatingTaller ? refRect : rect).bottom;
        if (side === "top" && y3 >= refRect.bottom - 1 || side === "bottom" && y3 <= refRect.top + 1 || side === "left" && x2 >= refRect.right - 1 || side === "right" && x2 <= refRect.left + 1) {
          closeIfNoOpenChild();
          return void 0;
        }
        let isInsideTroughRect = false;
        switch (side) {
          case "top":
            isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, refRect.top + 1, right, rect.bottom - 1);
            break;
          case "bottom":
            isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, rect.top + 1, right, refRect.bottom - 1);
            break;
          case "left":
            isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, rect.right - 1, bottom, refRect.left + 1, top);
            break;
          case "right":
            isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, refRect.right - 1, bottom, rect.left + 1, top);
            break;
          default:
        }
        if (isInsideTroughRect) {
          return void 0;
        }
        if (hasLanded && !isInsideRect(clientX, clientY, refRect)) {
          closeIfNoOpenChild();
          return void 0;
        }
        if (!isLeave && isCursorMovingSlowly(clientX, clientY)) {
          closeIfNoOpenChild();
          return void 0;
        }
        let isInsidePolygon = false;
        switch (side) {
          case "top": {
            const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
            const cursorPointOneX = isFloatingWider ? x2 + cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset;
            const cursorPointTwoX = isFloatingWider ? x2 - cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset;
            const cursorPointY = y3 + POLYGON_BUFFER + 1;
            const commonYLeft = cursorLeaveFromRight ? rect.bottom - POLYGON_BUFFER : isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top;
            const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top : rect.bottom - POLYGON_BUFFER;
            isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight);
            break;
          }
          case "bottom": {
            const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
            const cursorPointOneX = isFloatingWider ? x2 + cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset;
            const cursorPointTwoX = isFloatingWider ? x2 - cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset;
            const cursorPointY = y3 - POLYGON_BUFFER;
            const commonYLeft = cursorLeaveFromRight ? rect.top + POLYGON_BUFFER : isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom;
            const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom : rect.top + POLYGON_BUFFER;
            isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight);
            break;
          }
          case "left": {
            const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
            const cursorPointOneY = isFloatingTaller ? y3 + cursorYOffset : cursorLeaveFromBottom ? y3 + cursorYOffset : y3 - cursorYOffset;
            const cursorPointTwoY = isFloatingTaller ? y3 - cursorYOffset : cursorLeaveFromBottom ? y3 + cursorYOffset : y3 - cursorYOffset;
            const cursorPointX = x2 + POLYGON_BUFFER + 1;
            const commonXTop = cursorLeaveFromBottom ? rect.right - POLYGON_BUFFER : isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left;
            const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left : rect.right - POLYGON_BUFFER;
            isInsidePolygon = isPointInQuadrilateral(clientX, clientY, commonXTop, rect.top, commonXBottom, rect.bottom, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY);
            break;
          }
          case "right": {
            const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
            const cursorPointOneY = isFloatingTaller ? y3 + cursorYOffset : cursorLeaveFromBottom ? y3 + cursorYOffset : y3 - cursorYOffset;
            const cursorPointTwoY = isFloatingTaller ? y3 - cursorYOffset : cursorLeaveFromBottom ? y3 + cursorYOffset : y3 - cursorYOffset;
            const cursorPointX = x2 - POLYGON_BUFFER;
            const commonXTop = cursorLeaveFromBottom ? rect.left + POLYGON_BUFFER : isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right;
            const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right : rect.left + POLYGON_BUFFER;
            isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY, commonXTop, rect.top, commonXBottom, rect.bottom);
            break;
          }
          default:
        }
        if (!isInsidePolygon) {
          closeIfNoOpenChild();
        } else if (!hasLanded) {
          timeout.start(40, closeIfNoOpenChild);
        }
        return void 0;
      };
    };
    fn.__options = {
      ...options,
      blockPointerEvents
    };
    return fn;
  }

  // node_modules/@base-ui/react/utils/NullStore.mjs
  var NullStore = class extends ReactStore {
    // `update`/`set`/`notifyAll` funnel through `setState` in the base `Store`, so overriding
    // `setState` alone would neutralize them today. They are overridden explicitly so the store stays
    // inert even if a future base-class change stops routing a mutator through `setState`.
    setState(_newState) {
    }
    update(_changes) {
    }
    set(_key, _value) {
    }
    notifyAll() {
    }
  };

  // node_modules/@base-ui/react/internals/composite/composite.mjs
  var ARROW_UP2 = "ArrowUp";
  var ARROW_DOWN2 = "ArrowDown";
  var ARROW_LEFT2 = "ArrowLeft";
  var ARROW_RIGHT2 = "ArrowRight";
  var HOME = "Home";
  var END = "End";
  var COMPOSITE_KEYS = /* @__PURE__ */ new Set([ARROW_UP2, ARROW_DOWN2, ARROW_LEFT2, ARROW_RIGHT2, HOME, END]);
  var SHIFT = "Shift";
  var MODIFIER_KEYS = [SHIFT, "Control", "Alt", "Meta"];
  function isInputElement(element) {
    return isHTMLElement(element) && element.tagName === "INPUT";
  }
  function isNativeInput(element) {
    if (isInputElement(element) && element.selectionStart != null) {
      return true;
    }
    if (isHTMLElement(element) && element.tagName === "TEXTAREA") {
      return true;
    }
    return false;
  }
  function scrollIntoViewIfNeeded(scrollContainer, element, direction, orientation) {
    if (!scrollContainer || !element || !element.scrollTo) {
      return;
    }
    let targetX = scrollContainer.scrollLeft;
    let targetY = scrollContainer.scrollTop;
    const isOverflowingX = scrollContainer.clientWidth < scrollContainer.scrollWidth;
    const isOverflowingY = scrollContainer.clientHeight < scrollContainer.scrollHeight;
    if (isOverflowingX && orientation !== "vertical") {
      const elementOffsetLeft = getOffset(scrollContainer, element, "left");
      const containerStyles = getStyles(scrollContainer);
      const elementStyles = getStyles(element);
      if (direction === "ltr") {
        if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) {
          targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;
        } else if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) {
          targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;
        }
      }
      if (direction === "rtl") {
        if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) {
          targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;
        } else if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) {
          targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;
        }
      }
    }
    if (isOverflowingY && orientation !== "horizontal") {
      const elementOffsetTop = getOffset(scrollContainer, element, "top");
      const containerStyles = getStyles(scrollContainer);
      const elementStyles = getStyles(element);
      if (elementOffsetTop - elementStyles.scrollMarginTop < scrollContainer.scrollTop + containerStyles.scrollPaddingTop) {
        targetY = elementOffsetTop - elementStyles.scrollMarginTop - containerStyles.scrollPaddingTop;
      } else if (elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom > scrollContainer.scrollTop + scrollContainer.clientHeight - containerStyles.scrollPaddingBottom) {
        targetY = elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom - scrollContainer.clientHeight + containerStyles.scrollPaddingBottom;
      }
    }
    scrollContainer.scrollTo({
      left: targetX,
      top: targetY,
      behavior: "auto"
    });
  }
  function getOffset(ancestor, element, side) {
    const propName = side === "left" ? "offsetLeft" : "offsetTop";
    let result = 0;
    while (element.offsetParent) {
      result += element[propName];
      if (element.offsetParent === ancestor) {
        break;
      }
      element = element.offsetParent;
    }
    return result;
  }
  function getStyles(element) {
    const styles = getComputedStyle(element);
    return {
      scrollMarginTop: parseFloat(styles.scrollMarginTop) || 0,
      scrollMarginRight: parseFloat(styles.scrollMarginRight) || 0,
      scrollMarginBottom: parseFloat(styles.scrollMarginBottom) || 0,
      scrollMarginLeft: parseFloat(styles.scrollMarginLeft) || 0,
      scrollPaddingTop: parseFloat(styles.scrollPaddingTop) || 0,
      scrollPaddingRight: parseFloat(styles.scrollPaddingRight) || 0,
      scrollPaddingBottom: parseFloat(styles.scrollPaddingBottom) || 0,
      scrollPaddingLeft: parseFloat(styles.scrollPaddingLeft) || 0
    };
  }

  // node_modules/@base-ui/utils/inertValue.mjs
  function inertValue(value) {
    if (isReactVersionAtLeast(19)) {
      return value;
    }
    return value ? "true" : void 0;
  }

  // node_modules/@base-ui/react/utils/InternalBackdrop.mjs
  var React43 = __toESM(require_react(), 1);
  var import_jsx_runtime102 = __toESM(require_jsx_runtime(), 1);
  var InternalBackdrop = /* @__PURE__ */ React43.forwardRef(function InternalBackdrop2(props, ref) {
    const {
      cutout,
      ...otherProps
    } = props;
    let clipPath;
    if (cutout) {
      const rect = cutout.getBoundingClientRect();
      clipPath = `polygon(0% 0%,100% 0%,100% 100%,0% 100%,0% 0%,${rect.left}px ${rect.top}px,${rect.left}px ${rect.bottom}px,${rect.right}px ${rect.bottom}px,${rect.right}px ${rect.top}px,${rect.left}px ${rect.top}px)`;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", {
      ref,
      role: "presentation",
      "data-base-ui-inert": "",
      ...otherProps,
      style: {
        position: "fixed",
        inset: 0,
        userSelect: "none",
        WebkitUserSelect: "none",
        clipPath
      }
    });
  });
  if (true) InternalBackdrop.displayName = "InternalBackdrop";

  // node_modules/@base-ui/react/utils/useOpenInteractionType.mjs
  var React46 = __toESM(require_react(), 1);

  // node_modules/@base-ui/utils/useEnhancedClickHandler.mjs
  var React44 = __toESM(require_react(), 1);
  function useEnhancedClickHandler(handler) {
    const lastClickInteractionTypeRef = React44.useRef("");
    const handlePointerDown = React44.useCallback((event) => {
      if (event.defaultPrevented) {
        return;
      }
      lastClickInteractionTypeRef.current = event.pointerType;
      handler(event, event.pointerType);
    }, [handler]);
    const handleClick = React44.useCallback((event) => {
      if (event.detail === 0) {
        handler(event, "keyboard");
        return;
      }
      if ("pointerType" in event) {
        handler(event, event.pointerType);
      } else {
        handler(event, lastClickInteractionTypeRef.current);
      }
      lastClickInteractionTypeRef.current = "";
    }, [handler]);
    return {
      onClick: handleClick,
      onPointerDown: handlePointerDown
    };
  }

  // node_modules/@base-ui/react/internals/useValueChanged.mjs
  var React45 = __toESM(require_react(), 1);
  function useValueChanged(value, onChange) {
    const valueRef = React45.useRef(value);
    const onChangeCallback = useStableCallback(onChange);
    useIsoLayoutEffect(() => {
      if (valueRef.current !== value) {
        onChangeCallback(valueRef.current);
      }
      valueRef.current = value;
    }, [value, onChangeCallback]);
  }

  // node_modules/@base-ui/react/utils/useOpenInteractionType.mjs
  function useOpenMethodTriggerProps(open3, setOpenMethod) {
    const handleTriggerClick = useStableCallback((_, interactionType) => {
      const isOpen2 = typeof open3 === "function" ? open3() : open3;
      if (!isOpen2) {
        setOpenMethod(interactionType || // On iOS Safari, the hitslop around touch targets means tapping outside an element's
        // bounds does not fire `pointerdown` but does fire `mousedown`. The `interactionType`
        // will be "" in that case.
        (parts_exports.os.ios ? "touch" : ""));
      }
    });
    const {
      onClick,
      onPointerDown
    } = useEnhancedClickHandler(handleTriggerClick);
    return React46.useMemo(() => ({
      onClick,
      onPointerDown
    }), [onClick, onPointerDown]);
  }
  function useOpenInteractionType(open3) {
    const [openMethod, setOpenMethod] = React46.useState(null);
    const triggerProps = useOpenMethodTriggerProps(open3, setOpenMethod);
    useValueChanged(open3, (previousOpen) => {
      if (previousOpen && !open3) {
        setOpenMethod(null);
      }
    });
    return React46.useMemo(() => ({
      openMethod,
      triggerProps
    }), [openMethod, triggerProps]);
  }

  // node_modules/@base-ui/react/combobox/root/AriaCombobox.mjs
  var React56 = __toESM(require_react(), 1);

  // node_modules/@base-ui/utils/useOnFirstRender.mjs
  var React47 = __toESM(require_react(), 1);
  function useOnFirstRender(fn) {
    const ref = React47.useRef(true);
    if (ref.current) {
      ref.current = false;
      fn();
    }
  }

  // node_modules/@base-ui/react/floating-ui-react/hooks/gridNavigation.mjs
  function gridNavigation(event, prevIndex, listRef, orientation, loopFocus, rtl, disabledIndices, minIndex, maxIndex, cols = 2) {
    const nextIndex = getGridNavigatedIndex(listRef.current, {
      event,
      orientation,
      loopFocus,
      rtl,
      cols,
      disabledIndices,
      minIndex,
      maxIndex,
      // An out-of-range previous index falls back to the first enabled item.
      prevIndex: prevIndex > maxIndex ? minIndex : prevIndex,
      stopEvent: true
    });
    return isIndexOutOfListBounds(listRef.current, nextIndex) ? void 0 : nextIndex;
  }

  // node_modules/@base-ui/react/combobox/root/ComboboxRootContext.mjs
  var React48 = __toESM(require_react(), 1);
  var ComboboxRootContext = /* @__PURE__ */ React48.createContext(void 0);
  if (true) ComboboxRootContext.displayName = "ComboboxRootContext";
  var ComboboxFloatingContext = /* @__PURE__ */ React48.createContext(void 0);
  if (true) ComboboxFloatingContext.displayName = "ComboboxFloatingContext";
  var ComboboxDerivedItemsContext = /* @__PURE__ */ React48.createContext(void 0);
  if (true) ComboboxDerivedItemsContext.displayName = "ComboboxDerivedItemsContext";
  var ComboboxHasItemsContext = /* @__PURE__ */ React48.createContext(false);
  if (true) ComboboxHasItemsContext.displayName = "ComboboxHasItemsContext";
  var ComboboxInputValueContext = /* @__PURE__ */ React48.createContext("");
  if (true) ComboboxInputValueContext.displayName = "ComboboxInputValueContext";
  function useComboboxRootContext() {
    const context = React48.useContext(ComboboxRootContext);
    if (!context) {
      throw new Error(true ? "Base UI: ComboboxRootContext is missing. Combobox parts must be placed within <Combobox.Root>." : formatErrorMessage_default(22));
    }
    return context;
  }
  function useComboboxFloatingContext() {
    const context = React48.useContext(ComboboxFloatingContext);
    if (!context) {
      throw new Error(true ? "Base UI: ComboboxFloatingContext is missing. Combobox parts must be placed within <Combobox.Root>." : formatErrorMessage_default(23));
    }
    return context;
  }
  function useComboboxDerivedItemsContext() {
    const context = React48.useContext(ComboboxDerivedItemsContext);
    if (!context) {
      throw new Error(true ? "Base UI: ComboboxItemsContext is missing. Combobox parts must be placed within <Combobox.Root>." : formatErrorMessage_default(24));
    }
    return context;
  }
  function useComboboxInputValueContext() {
    return React48.useContext(ComboboxInputValueContext);
  }
  function useComboboxHasItemsContext() {
    return React48.useContext(ComboboxHasItemsContext);
  }

  // node_modules/@base-ui/utils/areArraysEqual.mjs
  function areArraysEqual(array1, array2, itemComparer = Object.is) {
    const {
      length: length2
    } = array1;
    if (length2 !== array2.length) {
      return false;
    }
    for (let i2 = 0; i2 < length2; i2 += 1) {
      if (!itemComparer(array1[i2], array2[i2])) {
        return false;
      }
    }
    return true;
  }

  // node_modules/@base-ui/react/internals/itemEquality.mjs
  var defaultItemEquality = (itemValue, selectedValue) => Object.is(itemValue, selectedValue);
  function compareItemEquality(itemValue, selectedValue, comparer) {
    if (itemValue == null || selectedValue == null) {
      return Object.is(itemValue, selectedValue);
    }
    return comparer(itemValue, selectedValue);
  }
  function isSelectedValueDirty(currentValue, initialValue, comparer) {
    if (Array.isArray(currentValue) && Array.isArray(initialValue)) {
      return !areArraysEqual(currentValue, initialValue, (itemValue, initialItemValue) => compareItemEquality(itemValue, initialItemValue, comparer));
    }
    return currentValue !== initialValue;
  }
  function selectedValueIncludes(selectedValues, itemValue, comparer) {
    if (!selectedValues) {
      return false;
    }
    return selectedValues.some((selectedValue) => {
      if (selectedValue === void 0) {
        return false;
      }
      return compareItemEquality(itemValue, selectedValue, comparer);
    });
  }
  function findItemIndex(itemValues, selectedValue, comparer) {
    if (!itemValues) {
      return -1;
    }
    return itemValues.findIndex((itemValue) => {
      if (itemValue === void 0) {
        return false;
      }
      return compareItemEquality(itemValue, selectedValue, comparer);
    });
  }
  function createSelectionMatcher(selectedValues, comparer) {
    if (comparer !== defaultItemEquality) {
      return (itemValue) => selectedValueIncludes(selectedValues, itemValue, comparer);
    }
    const index3 = new Set(selectedValues);
    index3.delete(void 0);
    return (itemValue) => index3.has(itemValue) && (itemValue !== 0 || selectedValues.some((v3) => Object.is(itemValue, v3)));
  }
  function findSelectionIndex(itemValues, selectedValue, comparer, multiple) {
    const index3 = multiple && Array.isArray(selectedValue) ? (
      // Anchor to the first selected item in rendered order so the index does not depend
      // on the order in which the values were added to the array.
      itemValues.findIndex(createSelectionMatcher(selectedValue, comparer))
    ) : findItemIndex(itemValues, selectedValue, comparer);
    return index3 === -1 ? null : index3;
  }
  function resolveSelectedIndex(index3, itemValue, registry, selectedValues, comparer, currentIndex) {
    if (selectedValueIncludes(selectedValues, itemValue, comparer)) {
      return currentIndex != null && index3 > currentIndex && selectedValueIncludes(selectedValues, registry[currentIndex], comparer) ? currentIndex : index3;
    }
    return index3 === currentIndex ? findSelectionIndex(registry, selectedValues, comparer, true) : currentIndex;
  }
  function removeItem(selectedValues, itemValue, comparer) {
    return selectedValues.filter((selectedValue) => !compareItemEquality(itemValue, selectedValue, comparer));
  }

  // node_modules/@base-ui/react/internals/resolveValueLabel.mjs
  var React49 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/internals/serializeValue.mjs
  function serializeValue(value) {
    if (value == null) {
      return "";
    }
    if (typeof value === "string") {
      return value;
    }
    try {
      return JSON.stringify(value);
    } catch {
      return String(value);
    }
  }

  // node_modules/@base-ui/react/internals/resolveValueLabel.mjs
  var import_jsx_runtime103 = __toESM(require_jsx_runtime(), 1);
  function isGroup(item) {
    return typeof item === "object" && item != null && Array.isArray(item.items);
  }
  function isGroupedItems(items) {
    return isGroup(items?.[0]);
  }
  function flattenLeafItems(items) {
    return isGroupedItems(items) ? items.flatMap((group) => group.items) : items;
  }
  function hasNullItemLabel(items) {
    if (!Array.isArray(items)) {
      return items != null && "null" in items;
    }
    const arrayItems = items;
    if (isGroupedItems(arrayItems)) {
      for (const group of arrayItems) {
        for (const item of group.items) {
          if (item && item.value == null && item.label != null) {
            return true;
          }
        }
      }
      return false;
    }
    for (const item of arrayItems) {
      if (item && item.value == null && item.label != null) {
        return true;
      }
    }
    return false;
  }
  function stringifyAsLabel(item, itemToStringLabel) {
    if (itemToStringLabel && item != null) {
      return itemToStringLabel(item) ?? "";
    }
    if (item && typeof item === "object") {
      if ("label" in item && item.label != null) {
        return String(item.label);
      }
      if ("value" in item) {
        return String(item.value);
      }
    }
    return serializeValue(item);
  }
  function stringifyAsValue(item, itemToStringValue) {
    if (itemToStringValue && item != null) {
      return itemToStringValue(item) ?? "";
    }
    if (item && typeof item === "object" && "value" in item && "label" in item) {
      return serializeValue(item.value);
    }
    return serializeValue(item);
  }
  function resolveSelectedLabel(value, items, itemToStringLabel) {
    function fallback() {
      return stringifyAsLabel(value, itemToStringLabel);
    }
    if (itemToStringLabel && value != null) {
      return itemToStringLabel(value);
    }
    if (value && typeof value === "object" && "label" in value && value.label != null) {
      return value.label;
    }
    if (items && !Array.isArray(items)) {
      const label = Object.hasOwn(items, value) ? items[value] : void 0;
      return label ?? fallback();
    }
    if (Array.isArray(items)) {
      const arrayItems = items;
      const flatItems = flattenLeafItems(arrayItems);
      if (value == null || typeof value !== "object") {
        const match3 = flatItems.find((item) => item.value === value);
        if (match3 && match3.label != null) {
          return match3.label;
        }
        return fallback();
      }
      if ("value" in value) {
        const match3 = flatItems.find((item) => item && item.value === value.value);
        if (match3 && match3.label != null) {
          return match3.label;
        }
      }
    }
    return fallback();
  }
  function resolveMultipleLabels(values, items, itemToStringLabel) {
    return values.reduce((acc, value, index3) => {
      if (index3 > 0) {
        acc.push(", ");
      }
      acc.push(/* @__PURE__ */ (0, import_jsx_runtime103.jsx)(React49.Fragment, {
        children: resolveSelectedLabel(value, items, itemToStringLabel)
      }, index3));
      return acc;
    }, []);
  }

  // node_modules/@base-ui/react/combobox/store.mjs
  var selectors2 = {
    id: (state2) => state2.id,
    labelId: (state2) => state2.labelId,
    items: (state2) => state2.items,
    selectedValue: (state2) => state2.selectedValue,
    hasSelectionChips: (state2) => {
      const selectedValue = state2.selectedValue;
      return Array.isArray(selectedValue) && selectedValue.length > 0;
    },
    hasSelectedValue: (state2) => {
      const {
        selectedValue,
        selectionMode
      } = state2;
      if (selectedValue == null) {
        return false;
      }
      if (selectionMode === "multiple" && Array.isArray(selectedValue)) {
        return selectedValue.length > 0;
      }
      return true;
    },
    hasNullItemLabel: (state2, enabled) => {
      return enabled ? hasNullItemLabel(state2.items) : false;
    },
    open: (state2) => state2.open,
    mounted: (state2) => state2.mounted,
    forceMounted: (state2) => state2.forceMounted,
    inline: (state2) => state2.inline,
    activeIndex: (state2) => state2.activeIndex,
    selectedIndex: (state2) => state2.selectedIndex,
    isActive: (state2, index3) => state2.activeIndex === index3,
    isSelected: (state2, itemValue) => {
      const comparer = state2.isItemEqualToValue;
      const selectedValue = state2.selectedValue;
      if (Array.isArray(selectedValue)) {
        return selectedValue.some((selectedItem) => compareItemEquality(itemValue, selectedItem, comparer));
      }
      return compareItemEquality(itemValue, selectedValue, comparer);
    },
    transitionStatus: (state2) => state2.transitionStatus,
    popupProps: (state2) => state2.popupProps,
    listProps: (state2) => state2.listProps,
    inputProps: (state2) => state2.inputProps,
    triggerProps: (state2) => state2.triggerProps,
    itemProps: (state2) => state2.itemProps,
    positionerElement: (state2) => state2.positionerElement,
    listElement: (state2) => state2.listElement,
    popupId: (state2) => state2.popupId,
    triggerElement: (state2) => state2.triggerElement,
    inputElement: (state2) => state2.inputElement,
    inputGroupElement: (state2) => state2.inputGroupElement,
    popupSide: (state2) => state2.popupSide,
    openMethod: (state2) => state2.openMethod,
    inputInsidePopup: (state2) => state2.inputInsidePopup,
    inputOwnsFormValue: (state2) => state2.inputOwnsFormValue,
    selectionMode: (state2) => state2.selectionMode,
    name: (state2) => state2.name,
    form: (state2) => state2.form,
    disabled: (state2) => state2.disabled,
    readOnly: (state2) => state2.readOnly,
    required: (state2) => state2.required,
    grid: (state2) => state2.grid,
    virtualized: (state2) => state2.virtualized,
    itemToStringLabel: (state2) => state2.itemToStringLabel,
    isItemEqualToValue: (state2) => state2.isItemEqualToValue,
    modal: (state2) => state2.modal,
    autoHighlight: (state2) => state2.autoHighlight
  };

  // node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs
  var React50 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/field/control/FieldControlDataAttributes.mjs
  var valid = "data-valid";
  var invalid = "data-invalid";

  // node_modules/@base-ui/react/internals/field-constants/constants.mjs
  var DEFAULT_VALIDITY_STATE = {
    badInput: false,
    customError: false,
    patternMismatch: false,
    rangeOverflow: false,
    rangeUnderflow: false,
    stepMismatch: false,
    tooLong: false,
    tooShort: false,
    typeMismatch: false,
    valid: null,
    valueMissing: false
  };
  var DEFAULT_FIELD_STATE_ATTRIBUTES = {
    valid: null,
    touched: false,
    dirty: false,
    filled: false,
    focused: false
  };
  var DEFAULT_FIELD_ROOT_STATE = {
    disabled: false,
    ...DEFAULT_FIELD_STATE_ATTRIBUTES
  };
  var fieldValidityMapping = {
    valid(value) {
      if (value === null) {
        return null;
      }
      if (value) {
        return {
          [valid]: ""
        };
      }
      return {
        [invalid]: ""
      };
    }
  };

  // node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs
  var DEFAULT_FIELD_ROOT_CONTEXT = {
    invalid: void 0,
    name: void 0,
    validityData: {
      state: DEFAULT_VALIDITY_STATE,
      errors: [],
      error: "",
      value: "",
      initialValue: null
    },
    setValidityData: NOOP,
    disabled: void 0,
    setTouched: NOOP,
    setDirty: NOOP,
    setFilled: NOOP,
    setFocused: NOOP,
    validationMode: "onSubmit",
    shouldValidateOnChange: () => false,
    state: DEFAULT_FIELD_ROOT_STATE,
    registerFieldControl: NOOP,
    validation: {
      getValidationProps: (_disabled, props = EMPTY_OBJECT2) => props,
      inputRef: {
        current: null
      },
      registeredInputs: /* @__PURE__ */ new Map(),
      registerInput: NOOP,
      getInputControl: () => null,
      commit: async () => {
      },
      change: NOOP
    }
  };
  var FieldRootContext = /* @__PURE__ */ React50.createContext(DEFAULT_FIELD_ROOT_CONTEXT);
  if (true) FieldRootContext.displayName = "FieldRootContext";
  function useFieldRootContext(optional = true) {
    const context = React50.useContext(FieldRootContext);
    if (context.setValidityData === NOOP && !optional) {
      throw new Error(true ? "Base UI: FieldRootContext is missing. Field parts must be placed within <Field.Root>." : formatErrorMessage_default(28));
    }
    return context;
  }

  // node_modules/@base-ui/react/internals/field-register-control/useRegisterFieldControl.mjs
  function useRegisterFieldControl(controlRef, id, value, getFormValueOverride, enabled = true, name2) {
    const {
      registerFieldControl
    } = useFieldRootContext();
    const sourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol());
    useIsoLayoutEffect(() => {
      const source = sourceRef.current;
      if (!enabled) {
        registerFieldControl(source, void 0);
        return;
      }
      const registration = {
        controlRef,
        getValue: getFormValueOverride,
        id,
        name: name2,
        value
      };
      registerFieldControl(source, registration);
    }, [controlRef, enabled, getFormValueOverride, id, name2, registerFieldControl, sourceRef, value]);
    useIsoLayoutEffect(() => {
      const source = sourceRef.current;
      return () => {
        registerFieldControl(source, void 0);
      };
    }, [registerFieldControl, sourceRef]);
  }

  // node_modules/@base-ui/react/internals/form-context/FormContext.mjs
  var React51 = __toESM(require_react(), 1);
  var FormContext = /* @__PURE__ */ React51.createContext({
    elementRef: {
      current: null
    },
    formRef: {
      current: {
        fields: /* @__PURE__ */ new Map()
      }
    },
    errors: {},
    clearErrors: NOOP,
    validationMode: "onSubmit",
    submitCountRef: {
      current: 0
    }
  });
  if (true) FormContext.displayName = "FormContext";
  function useFormContext() {
    return React51.useContext(FormContext);
  }

  // node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs
  var React53 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/internals/labelable-provider/LabelableContext.mjs
  var React52 = __toESM(require_react(), 1);
  var LabelableContext = /* @__PURE__ */ React52.createContext({
    controlId: void 0,
    registerControlId: NOOP,
    resetControlId: NOOP,
    labelId: void 0,
    setLabelId: NOOP,
    messageIds: [],
    setMessageIds: NOOP,
    getDescriptionProps: (externalProps) => externalProps
  });
  if (true) LabelableContext.displayName = "LabelableContext";
  function useLabelableContext() {
    return React52.useContext(LabelableContext);
  }

  // node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs
  function useLabelableId(params = {}) {
    const {
      id,
      enabled = true
    } = params;
    const {
      controlId,
      registerControlId,
      resetControlId
    } = useLabelableContext();
    const defaultId = useBaseUiId();
    const controlSourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol());
    const hasRegisteredRef = React53.useRef(false);
    const hadExplicitIdRef = React53.useRef(false);
    const unregisterControlId = useStableCallback(() => {
      if (!hasRegisteredRef.current || registerControlId === NOOP) {
        return;
      }
      hasRegisteredRef.current = false;
      registerControlId(controlSourceRef.current, void 0);
    });
    useIsoLayoutEffect(() => {
      if (!enabled || registerControlId === NOOP) {
        unregisterControlId();
        return void 0;
      }
      let nextId2;
      if (id !== void 0) {
        hadExplicitIdRef.current = true;
        nextId2 = id;
      } else if (hadExplicitIdRef.current) {
        nextId2 = defaultId;
      } else {
        resetControlId();
        return void 0;
      }
      if (nextId2 === void 0) {
        unregisterControlId();
        return void 0;
      }
      hasRegisteredRef.current = true;
      registerControlId(controlSourceRef.current, nextId2);
      return void 0;
    }, [id, enabled, registerControlId, resetControlId, defaultId, controlSourceRef, unregisterControlId]);
    useIsoLayoutEffect(() => {
      return unregisterControlId;
    }, [unregisterControlId]);
    return (enabled ? controlId : void 0) ?? id ?? defaultId;
  }

  // node_modules/@base-ui/react/combobox/root/utils/index.mjs
  function getComboboxPopupId(rootId) {
    return rootId == null ? void 0 : `${rootId}-popup`;
  }
  function createCollatorItemFilter(collatorFilter, itemToStringLabel) {
    return (item, query) => {
      if (item == null) {
        return false;
      }
      return collatorFilter.contains(item, query, itemToStringLabel);
    };
  }
  function createSingleSelectionCollatorFilter(collatorFilter, itemToStringLabel, selectedValue) {
    return (item, query) => {
      if (item == null) {
        return false;
      }
      if (!query) {
        return true;
      }
      const selectedValueToString = itemToStringLabel?.selected ?? itemToStringLabel;
      const selectedString = selectedValue != null ? stringifyAsLabel(selectedValue, selectedValueToString) : "";
      if (selectedString && collatorFilter.contains(selectedString, query) && selectedString.length === query.length) {
        return true;
      }
      return collatorFilter.contains(item, query, itemToStringLabel);
    };
  }

  // node_modules/@base-ui/react/combobox/root/utils/useFilter.mjs
  var React54 = __toESM(require_react(), 1);

  // node_modules/@base-ui/utils/stringifyLocale.mjs
  function stringifyLocale(locale) {
    if (Array.isArray(locale)) {
      return locale.map((value) => stringifyLocale(value)).join(",");
    }
    if (locale == null) {
      return "";
    }
    return String(locale);
  }

  // node_modules/@base-ui/react/internals/filter.mjs
  var filterCache = /* @__PURE__ */ new Map();
  function getFilter(options = {}) {
    const mergedOptions = {
      usage: "search",
      sensitivity: "base",
      ignorePunctuation: true,
      ...options
    };
    const cacheKey2 = `${stringifyLocale(options.locale)}|${JSON.stringify(mergedOptions)}`;
    const cachedFilter = filterCache.get(cacheKey2);
    if (cachedFilter) {
      return cachedFilter;
    }
    const collator = new Intl.Collator(options.locale, mergedOptions);
    const filter = {
      contains(item, query, itemToString) {
        if (!query) {
          return true;
        }
        const itemString = stringifyAsLabel(item, itemToString);
        for (let i2 = 0; i2 <= itemString.length - query.length; i2 += 1) {
          if (collator.compare(itemString.slice(i2, i2 + query.length), query) === 0) {
            return true;
          }
        }
        return false;
      },
      startsWith(item, query, itemToString) {
        if (!query) {
          return true;
        }
        const itemString = stringifyAsLabel(item, itemToString);
        return collator.compare(itemString.slice(0, query.length), query) === 0;
      },
      endsWith(item, query, itemToString) {
        if (!query) {
          return true;
        }
        const itemString = stringifyAsLabel(item, itemToString);
        const queryLength = query.length;
        return itemString.length >= queryLength && collator.compare(itemString.slice(itemString.length - queryLength), query) === 0;
      }
    };
    filterCache.set(cacheKey2, filter);
    return filter;
  }

  // node_modules/@base-ui/react/combobox/root/utils/useFilter.mjs
  var useCoreFilter = getFilter;
  function useComboboxFilter(options = {}) {
    const {
      multiple = false,
      value,
      ...collatorOptions
    } = options;
    const coreFilter = getFilter(collatorOptions);
    const contains3 = React54.useCallback((item, query, itemToString) => {
      if (multiple) {
        return createCollatorItemFilter(coreFilter, itemToString)(item, query);
      }
      return createSingleSelectionCollatorFilter(coreFilter, itemToString, value)(item, query);
    }, [coreFilter, value, multiple]);
    return React54.useMemo(() => ({
      ...coreFilter,
      contains: contains3
    }), [contains3, coreFilter]);
  }

  // node_modules/@base-ui/react/utils/scrollable.mjs
  function isScrollableY(element, allowOverflowIntent = false) {
    const {
      overflowY
    } = getComputedStyle2(element);
    if (overflowY !== "auto" && overflowY !== "scroll") {
      return false;
    }
    return allowOverflowIntent ? element.clientHeight > 0 : element.scrollHeight > element.clientHeight;
  }

  // node_modules/@base-ui/react/combobox/root/utils/constants.mjs
  var NO_ACTIVE_VALUE = /* @__PURE__ */ Symbol("none");
  var INITIAL_LAST_HIGHLIGHT = {
    value: NO_ACTIVE_VALUE,
    index: -1
  };

  // node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs
  var React55 = __toESM(require_react(), 1);
  var DirectionContext = /* @__PURE__ */ React55.createContext(void 0);
  if (true) DirectionContext.displayName = "DirectionContext";
  function useDirection() {
    const context = React55.useContext(DirectionContext);
    return context?.direction ?? "ltr";
  }

  // node_modules/@base-ui/react/combobox/items/itemCollection.mjs
  function findCollectionItem(valueToItem, itemValue, isEqual2) {
    const exactItem = valueToItem.get(itemValue);
    if (exactItem !== void 0 || isEqual2 === defaultItemEquality) {
      return exactItem;
    }
    for (const [derivedValue, item] of valueToItem) {
      if (compareItemEquality(derivedValue, itemValue, isEqual2)) {
        return item;
      }
    }
    return void 0;
  }

  // node_modules/@base-ui/react/combobox/root/AriaCombobox.mjs
  var import_jsx_runtime104 = __toESM(require_jsx_runtime(), 1);
  function AriaCombobox(props) {
    const {
      id: idProp,
      onOpenChangeComplete: onOpenChangeCompleteProp,
      defaultSelectedValue = null,
      selectedValue: selectedValueProp,
      onSelectedValueChange,
      defaultInputValue,
      inputValue: inputValueProp,
      open: openProp,
      defaultOpen = false,
      selectionMode,
      onItemHighlighted: onItemHighlightedProp,
      name: nameProp,
      form,
      disabled: disabledProp = false,
      readOnly = false,
      required = false,
      inputRef: inputRefProp,
      grid = false,
      items: itemsProp,
      filteredItems: filteredItemsProp,
      filter: filterProp,
      filterQuery: filterQueryProp,
      openOnInputClick = true,
      autoHighlight = false,
      keepHighlight = false,
      highlightItemOnHover = true,
      loopFocus = true,
      itemToStringLabel: itemToStringLabelProp,
      itemToStringValue,
      isItemEqualToValue = defaultItemEquality,
      virtualized = false,
      inline: inlineProp = false,
      fillInputOnItemPress = true,
      modal = false,
      limit = -1,
      autoComplete = "list",
      formAutoComplete,
      locale,
      submitOnItemClick = false
    } = props;
    const {
      clearErrors
    } = useFormContext();
    const {
      setDirty,
      validityData,
      setFilled,
      name: fieldName,
      disabled: fieldDisabled,
      setTouched,
      setFocused,
      validationMode,
      validation
    } = useFieldRootContext();
    const direction = useDirection();
    const id = useLabelableId({
      id: idProp
    });
    const collatorFilter = useCoreFilter({
      locale
    });
    const collection = Array.isArray(itemsProp) ? null : itemsProp;
    if (collection && typeof collection.label !== "function") {
      throw new Error(true ? "Base UI: the `items` prop received an object that is not a collection, so its items cannot be read. Pass an array of items, an array of groups with items, or the result of `createItems()`. See https://base-ui.com/react/components/combobox#createitems" : formatErrorMessage_default(100));
    }
    const items = collection ? collection.data : itemsProp;
    const itemToValue = collection?.value;
    const storeItems = itemToValue ? void 0 : items;
    const externalWindow = React56.useMemo(() => {
      if (!filteredItemsProp || !itemToValue) {
        return void 0;
      }
      const flat = flattenLeafItems(filteredItemsProp);
      const values = flat.map(itemToValue);
      let valueToItem;
      return {
        values,
        findItem(itemValue, isEqual2) {
          if (!valueToItem) {
            valueToItem = /* @__PURE__ */ new Map();
            for (let i2 = 0; i2 < values.length; i2 += 1) {
              if (!valueToItem.has(values[i2])) {
                valueToItem.set(values[i2], flat[i2]);
              }
            }
          }
          return findCollectionItem(valueToItem, itemValue, isEqual2);
        }
      };
    }, [filteredItemsProp, itemToValue]);
    const itemToStringLabel = React56.useMemo(() => {
      if (!collection) {
        return itemToStringLabelProp;
      }
      return (itemValue) => {
        return collection.label(itemValue, isItemEqualToValue, (unresolvedValue) => {
          const externalItem = externalWindow?.findItem(unresolvedValue, isItemEqualToValue);
          if (externalItem != null) {
            return collection.itemLabel(externalItem);
          }
          return stringifyAsLabel(unresolvedValue, itemToStringLabelProp);
        });
      };
    }, [collection, itemToStringLabelProp, externalWindow, isItemEqualToValue]);
    const filterItemToString = React56.useMemo(() => {
      if (!collection) {
        return itemToStringLabelProp;
      }
      return Object.assign((item) => collection.itemLabel(item), {
        selected: (value) => stringifyAsLabel(value, itemToStringLabel)
      });
    }, [collection, itemToStringLabel, itemToStringLabelProp]);
    function stringifyValueLabel(item) {
      return stringifyAsLabel(item, itemToStringLabel);
    }
    const [queryChangedAfterOpen, setQueryChangedAfterOpen] = React56.useState(false);
    const [closeQuery, setCloseQuery] = React56.useState(null);
    const previousCloseQueryRef = React56.useRef(closeQuery);
    const listRef = React56.useRef([]);
    const labelsRef = React56.useRef([]);
    const popupRef = React56.useRef(null);
    const inputRef = React56.useRef(null);
    const startDismissRef = React56.useRef(null);
    const endDismissRef = React56.useRef(null);
    const emptyRef = React56.useRef(null);
    const keyboardActiveRef = React56.useRef(true);
    const hadInputClearRef = React56.useRef(false);
    const chipsContainerRef = React56.useRef(null);
    const clearRef = React56.useRef(null);
    const selectionEventRef = React56.useRef(null);
    const lastHighlightRef = React56.useRef(INITIAL_LAST_HIGHLIGHT);
    const pendingQueryHighlightRef = React56.useRef(null);
    const valuesRef = React56.useRef([]);
    const pointerDownItemRef = React56.useRef(null);
    const disabled2 = fieldDisabled || disabledProp;
    const name2 = fieldName ?? nameProp;
    const multiple = selectionMode === "multiple";
    const single = selectionMode === "single";
    const hasInputValue = inputValueProp !== void 0 || defaultInputValue !== void 0;
    const hasItems = items !== void 0;
    const hasFilteredItemsProp = filteredItemsProp !== void 0;
    let autoHighlightMode;
    if (autoHighlight === "always") {
      autoHighlightMode = "always";
    } else {
      autoHighlightMode = autoHighlight ? "input-change" : false;
    }
    const [selectedValue, setSelectedValueUnwrapped] = useControlled({
      controlled: selectedValueProp,
      default: multiple ? defaultSelectedValue ?? EMPTY_ARRAY3 : defaultSelectedValue,
      name: "Combobox",
      state: "selectedValue"
    });
    const filter = React56.useMemo(() => {
      if (filterProp === null) {
        return () => true;
      }
      if (filterProp !== void 0) {
        return filterProp;
      }
      return createCollatorItemFilter(collatorFilter, filterItemToString);
    }, [filterProp, collatorFilter, filterItemToString]);
    const initialDefaultInputValue = useRefWithInit(() => {
      if (hasInputValue) {
        return defaultInputValue ?? "";
      }
      if (single) {
        return stringifyValueLabel(selectedValue);
      }
      return "";
    }).current;
    const [inputValue, setInputValueUnwrapped] = useControlled({
      controlled: inputValueProp,
      default: initialDefaultInputValue,
      name: "Combobox",
      state: "inputValue"
    });
    const [open3, setOpenUnwrapped] = useControlled({
      controlled: openProp,
      default: defaultOpen,
      name: "Combobox",
      state: "open"
    });
    const isGrouped = isGroupedItems(items);
    const query = !open3 && closeQuery !== null ? closeQuery : String(inputValue).trim();
    const selectedLabelString = single ? stringifyValueLabel(selectedValue) : "";
    const shouldBypassFiltering = single && !queryChangedAfterOpen && query !== "" && selectedLabelString.length === query.length && collatorFilter.contains(selectedLabelString, query);
    const filterQuery = shouldBypassFiltering ? "" : filterQueryProp ?? query;
    const shouldIgnoreExternalFiltering = hasItems && hasFilteredItemsProp && shouldBypassFiltering && (!collection || collection.hasValue(selectedValue, isItemEqualToValue));
    const flatItems = React56.useMemo(() => items ? flattenLeafItems(items) : EMPTY_ARRAY3, [items]);
    const filteredItems = React56.useMemo(() => {
      if (filteredItemsProp && !shouldIgnoreExternalFiltering) {
        return filteredItemsProp;
      }
      if (!items) {
        return EMPTY_ARRAY3;
      }
      if (isGrouped) {
        const groupedItems = items;
        const resultingGroups = [];
        let currentCount = 0;
        for (const group of groupedItems) {
          if (limit > -1 && currentCount >= limit) {
            break;
          }
          const remainingLimit = limit > -1 ? limit - currentCount : Infinity;
          const itemsToTake = filterQuery === "" ? group.items.slice(0, remainingLimit) : [];
          if (filterQuery !== "") {
            for (const item of group.items) {
              if (itemsToTake.length >= remainingLimit) {
                break;
              }
              if (filter(item, filterQuery, filterItemToString)) {
                itemsToTake.push(item);
              }
            }
          }
          if (itemsToTake.length > 0) {
            const newGroup = {
              ...group,
              items: itemsToTake
            };
            resultingGroups.push(newGroup);
            currentCount += itemsToTake.length;
          }
        }
        return resultingGroups;
      }
      if (filterQuery === "") {
        return limit > -1 ? flatItems.slice(0, limit) : (
          // The cast here is done as `flatItems` is readonly.
          // valuesRef.current, a mutable ref, can be set to `flatFilteredValues`, which may
          // reference this exact readonly value, creating a mutation risk.
          // However, <Combobox.Item> can never mutate this value as the mutating effect
          // bails early when `items` is provided, and this is only ever returned
          // when `items` is provided due to the early return at the top of this hook.
          flatItems
        );
      }
      const limitedItems = [];
      for (const item of flatItems) {
        if (limit > -1 && limitedItems.length >= limit) {
          break;
        }
        if (filter(item, filterQuery, filterItemToString)) {
          limitedItems.push(item);
        }
      }
      return limitedItems;
    }, [filteredItemsProp, shouldIgnoreExternalFiltering, items, isGrouped, filterQuery, limit, filter, filterItemToString, flatItems]);
    const flatFilteredValues = React56.useMemo(() => {
      if (externalWindow && filteredItems === filteredItemsProp) {
        return externalWindow.values;
      }
      const flat = flattenLeafItems(filteredItems);
      return itemToValue ? flat.map((item) => itemToValue(item)) : flat;
    }, [filteredItems, filteredItemsProp, externalWindow, itemToValue]);
    const store4 = useRefWithInit(() => {
      let initialSelectedIndex = null;
      if (inlineProp && open3 && hasItems && selectionMode !== "none") {
        initialSelectedIndex = findSelectionIndex(flatFilteredValues, selectedValue, isItemEqualToValue, multiple);
      }
      return new ReactStore({
        id,
        labelId: void 0,
        selectedValue,
        open: open3,
        items: storeItems,
        selectionMode,
        name: name2,
        form,
        disabled: disabled2,
        readOnly,
        required,
        grid,
        virtualized,
        openOnInputClick,
        itemToStringLabel,
        isItemEqualToValue,
        modal,
        autoHighlight: autoHighlightMode,
        submitOnItemClick,
        hasInputValue,
        mounted: false,
        forceMounted: false,
        transitionStatus: "idle",
        inline: inlineProp,
        activeIndex: null,
        selectedIndex: initialSelectedIndex,
        popupProps: {},
        listProps: {},
        inputProps: {},
        triggerProps: {},
        itemProps: EMPTY_OBJECT2,
        positionerElement: null,
        listElement: null,
        popupId: void 0,
        triggerElement: null,
        inputElement: null,
        inputGroupElement: null,
        popupSide: null,
        openMethod: null,
        inputInsidePopup: true,
        // Avoid duplicate names in the server HTML. Popup inputs aren't rendered
        // until after hydration, so the hidden input takes over then if needed.
        inputOwnsFormValue: selectionMode === "none"
      }, {
        // Placeholder callbacks replaced on first render
        onOpenChangeComplete: NOOP,
        setOpen: NOOP,
        setInputValue: NOOP,
        setSelectedValue: NOOP,
        setIndices: NOOP,
        handleSelection: NOOP,
        forceMount: NOOP,
        requestSubmit: NOOP,
        listRef,
        labelsRef,
        popupRef,
        emptyRef,
        inputRef,
        startDismissRef,
        endDismissRef,
        keyboardActiveRef,
        chipsContainerRef,
        clearRef,
        valuesRef,
        pointerDownItemRef,
        selectionEventRef
      }, selectors2);
    }).current;
    const fieldRawValue = selectionMode === "none" ? inputValue : selectedValue;
    const fieldStringValue = React56.useMemo(() => {
      if (selectionMode === "none") {
        return fieldRawValue;
      }
      if (Array.isArray(selectedValue)) {
        return selectedValue.map((value) => stringifyAsValue(value, itemToStringValue));
      }
      return stringifyAsValue(selectedValue, itemToStringValue);
    }, [fieldRawValue, itemToStringValue, selectionMode, selectedValue]);
    const onItemHighlighted = useStableCallback(onItemHighlightedProp);
    const onOpenChangeComplete = useStableCallback(onOpenChangeCompleteProp);
    const activeIndex = store4.useState("activeIndex");
    const selectedIndex = store4.useState("selectedIndex");
    const positionerElement = store4.useState("positionerElement");
    const listElement = store4.useState("listElement");
    const triggerElement = store4.useState("triggerElement");
    const inputElement = store4.useState("inputElement");
    const inputGroupElement = store4.useState("inputGroupElement");
    const inline4 = store4.useState("inline");
    const inputInsidePopup = store4.useState("inputInsidePopup");
    const inputOwnsFormValue = store4.useState("inputOwnsFormValue");
    const inputMatchesSelectedValue = single && !inputInsidePopup && inputValue === selectedLabelString;
    const triggerRef = useValueAsRef(triggerElement);
    const {
      mounted,
      setMounted,
      transitionStatus
    } = useTransitionStatus(open3);
    const {
      openMethod,
      triggerProps
    } = useOpenInteractionType(open3);
    const getStringifiedValueForForm = useStableCallback(() => fieldStringValue);
    useRegisterFieldControl(inputInsidePopup ? triggerRef : inputRef, id, fieldRawValue, getStringifiedValueForForm, !disabled2, nameProp);
    const forceMount = useStableCallback(() => {
      if (items) {
        labelsRef.current = flatFilteredValues.map(stringifyValueLabel);
      } else {
        store4.set("forceMounted", true);
      }
    });
    const emitHighlight = useStableCallback((value, index3, type) => {
      if (index3 === -1) {
        if (lastHighlightRef.current === INITIAL_LAST_HIGHLIGHT) {
          return;
        }
        lastHighlightRef.current = INITIAL_LAST_HIGHLIGHT;
      } else {
        lastHighlightRef.current = {
          value,
          index: index3
        };
      }
      onItemHighlighted(value, createGenericEventDetails(type, void 0, {
        index: index3
      }));
    });
    const setIndices = useStableCallback((options) => {
      const update4 = {};
      if (options.activeIndex !== void 0) {
        update4.activeIndex = options.activeIndex;
      }
      if (options.selectedIndex !== void 0) {
        update4.selectedIndex = options.selectedIndex;
      }
      store4.update(update4);
      const activeIndexOption = options.activeIndex;
      if (activeIndexOption === void 0) {
        return;
      }
      const type = options.type || reason_parts_exports.none;
      if (activeIndexOption === null) {
        emitHighlight(void 0, -1, type);
      } else {
        emitHighlight(valuesRef.current[activeIndexOption], activeIndexOption, type);
      }
    });
    const setInputValue = useStableCallback((next, eventDetails) => {
      props.onInputValueChange?.(next, eventDetails);
      if (eventDetails.isCanceled) {
        return;
      }
      hadInputClearRef.current = eventDetails.reason === reason_parts_exports.inputClear;
      if (eventDetails.reason === reason_parts_exports.inputChange) {
        if (open3 && closeQuery !== null) {
          setCloseQuery(null);
        }
        const event = eventDetails.event;
        const inputType = event.inputType;
        const isTypedInput = event.type === "compositionend" || inputType != null && inputType !== "" && inputType !== "insertReplacementText";
        if (isTypedInput) {
          const hasQuery = next.trim() !== "";
          if (hasQuery) {
            setQueryChangedAfterOpen(true);
          }
          pendingQueryHighlightRef.current = {
            hasQuery
          };
          const list = store4.state.listElement;
          if (!store4.state.virtualized && list) {
            const popup = popupRef.current;
            for (const ancestor of getOverflowAncestors(list.firstElementChild ?? list)) {
              if (!isHTMLElement(ancestor) || (popup ? !contains(popup, ancestor) : ancestor.getAttribute("role") === "dialog")) {
                break;
              }
              if (isScrollableY(ancestor)) {
                ancestor.scrollTop = 0;
                break;
              }
            }
          }
          if (hasQuery && autoHighlightMode && store4.state.activeIndex == null && (open3 || inline4)) {
            store4.set("activeIndex", 0);
          }
        }
      } else if (eventDetails.reason === reason_parts_exports.inputClear && next === "" && store4.state.inputInsidePopup) {
        pendingQueryHighlightRef.current = {
          hasQuery: false,
          selection: true
        };
      }
      setInputValueUnwrapped(next);
    });
    const handleInterruptedReopen = useStableCallback((isInputChange) => {
      const clearsPendingInput = !isInputChange && inputInsidePopup && !inline4 && inputValue !== "" && (String(inputValue).trim() === closeQuery || inputValue === selectedLabelString);
      if (!isInputChange && (clearsPendingInput || inputValue === "" || inputMatchesSelectedValue)) {
        setQueryChangedAfterOpen(false);
      }
      setCloseQuery(null);
      if (clearsPendingInput) {
        setInputValue("", createChangeEventDetails(reason_parts_exports.inputClear));
      }
    });
    const setOpen = useStableCallback((nextOpen, eventDetails) => {
      if (open3 === nextOpen) {
        return;
      }
      if (eventDetails.reason === reason_parts_exports.escapeKey && hasItems && flatFilteredValues.length === 0 && !emptyRef.current) {
        eventDetails.allowPropagation();
      }
      props.onOpenChange?.(nextOpen, eventDetails);
      if (eventDetails.isCanceled) {
        return;
      }
      if (nextOpen && closeQuery !== null) {
        handleInterruptedReopen(eventDetails.reason === reason_parts_exports.inputChange);
      }
      if (!nextOpen && queryChangedAfterOpen) {
        if (single) {
          if (!inline4) {
            setCloseQuery(query);
          }
          if (query === "") {
            setQueryChangedAfterOpen(false);
          }
        } else if (multiple) {
          if (!inline4) {
            setCloseQuery(query);
          }
          if (inputInsidePopup) {
            setIndices({
              activeIndex: null
            });
          }
          if (!inputInsidePopup || inline4) {
            setInputValue("", createChangeEventDetails(reason_parts_exports.inputClear, eventDetails.event, void 0, {
              isItemPress: eventDetails.reason === reason_parts_exports.itemPress
            }));
          }
        }
      }
      setOpenUnwrapped(nextOpen);
      if (!nextOpen && inputInsidePopup && (eventDetails.reason === reason_parts_exports.focusOut || eventDetails.reason === reason_parts_exports.outsidePress)) {
        setTouched(true);
        setFocused(false);
        if (validationMode === "onBlur") {
          const valueToValidate = selectionMode === "none" ? inputValue : selectedValue;
          validation.commit(valueToValidate);
        }
      }
    });
    const setSelectedValue = useStableCallback((nextValue, eventDetails) => {
      onSelectedValueChange?.(nextValue, eventDetails);
      if (eventDetails.isCanceled) {
        return;
      }
      setSelectedValueUnwrapped(nextValue);
      const shouldFillInput = selectionMode === "none" && popupRef.current && fillInputOnItemPress || single && !store4.state.inputInsidePopup;
      if (shouldFillInput) {
        setInputValue(stringifyValueLabel(nextValue), createChangeEventDetails(eventDetails.reason, eventDetails.event));
      }
    });
    const handleSelection = useStableCallback((event, itemValue) => {
      const targetEl = getTarget(event);
      const overrideEvent = selectionEventRef.current ?? event;
      selectionEventRef.current = null;
      const eventDetails = createChangeEventDetails(reason_parts_exports.itemPress, overrideEvent);
      const href = targetEl?.closest("a")?.getAttribute("href");
      if (href) {
        if (href.startsWith("#")) {
          setOpen(false, eventDetails);
        }
        return;
      }
      if (multiple) {
        const currentSelectedValue = Array.isArray(selectedValue) ? selectedValue : [];
        const isCurrentlySelected = selectedValueIncludes(currentSelectedValue, itemValue, isItemEqualToValue);
        const nextValue = isCurrentlySelected ? removeItem(currentSelectedValue, itemValue, isItemEqualToValue) : [...currentSelectedValue, itemValue];
        setSelectedValue(nextValue, eventDetails);
        if (eventDetails.isCanceled) {
          return;
        }
        const wasFiltering = inputRef.current ? inputRef.current.value.trim() !== "" : false;
        if (!wasFiltering) {
          return;
        }
        if (store4.state.inputInsidePopup) {
          setInputValue("", createChangeEventDetails(reason_parts_exports.inputClear, eventDetails.event, void 0, {
            isItemPress: true
          }));
          const pendingHighlight = pendingQueryHighlightRef.current;
          if (pendingHighlight && !isCurrentlySelected) {
            pendingHighlight.toggledValue = itemValue;
          }
        } else {
          setOpen(false, eventDetails);
        }
      } else {
        setSelectedValue(itemValue, eventDetails);
        if (eventDetails.isCanceled) {
          return;
        }
        setOpen(false, eventDetails);
      }
    });
    const requestSubmit = useStableCallback(() => {
      const formElement = validation.inputRef.current?.form ?? store4.state.inputElement?.form;
      if (formElement && typeof formElement.requestSubmit === "function") {
        formElement.requestSubmit();
      }
    });
    const handleUnmount = useStableCallback(() => {
      setMounted(false);
      onOpenChangeComplete?.(false);
      setQueryChangedAfterOpen(false);
      setCloseQuery(null);
      if (selectionMode === "none") {
        setIndices({
          activeIndex: null,
          selectedIndex: null
        });
      } else {
        setIndices({
          activeIndex: null
        });
      }
      if (multiple && inputRef.current && inputRef.current.value !== "" && !hadInputClearRef.current) {
        setInputValue("", createChangeEventDetails(reason_parts_exports.inputClear));
      }
      if (single) {
        if (store4.state.inputInsidePopup) {
          if (inputRef.current && inputRef.current.value !== "") {
            setInputValue("", createChangeEventDetails(reason_parts_exports.inputClear));
          }
        } else {
          const stringVal = stringifyValueLabel(selectedValue);
          if (inputRef.current && inputRef.current.value !== stringVal) {
            const reason = stringVal === "" ? reason_parts_exports.inputClear : reason_parts_exports.none;
            setInputValue(stringVal, createChangeEventDetails(reason));
          }
        }
      }
    });
    const resolvedPopupRef = React56.useMemo(() => {
      if (inline4 && positionerElement) {
        return {
          current: positionerElement.closest('[role="dialog"]')
        };
      }
      return popupRef;
    }, [inline4, positionerElement]);
    useOpenChangeComplete({
      enabled: !props.actionsRef,
      open: open3,
      ref: resolvedPopupRef,
      onComplete() {
        if (!open3) {
          handleUnmount();
        }
      }
    });
    React56.useImperativeHandle(props.actionsRef, () => ({
      unmount: handleUnmount
    }), [handleUnmount]);
    useIsoLayoutEffect(function syncSelectedIndex() {
      const closeQueryReleased = previousCloseQueryRef.current !== null && closeQuery === null;
      previousCloseQueryRef.current = closeQuery;
      if (open3 && (!closeQueryReleased || !hasItems)) {
        return;
      }
      if (!open3) {
        pointerDownItemRef.current = null;
      }
      if (selectionMode === "none") {
        return;
      }
      const registry = hasItems ? flatFilteredValues : valuesRef.current;
      setIndices({
        selectedIndex: findSelectionIndex(registry, selectedValue, isItemEqualToValue, multiple)
      });
    }, [open3, closeQuery, selectedValue, selectionMode, multiple, hasItems, flatFilteredValues, isItemEqualToValue, setIndices]);
    useIsoLayoutEffect(() => {
      if (items) {
        valuesRef.current = flatFilteredValues;
        listRef.current.length = flatFilteredValues.length;
      }
    }, [items, flatFilteredValues]);
    useIsoLayoutEffect(() => {
      const pendingHighlight = pendingQueryHighlightRef.current;
      if (pendingHighlight) {
        const listIsNavigable = open3 || inline4 || store4.state.positionerElement?.hidden === false;
        if (pendingHighlight.hasQuery) {
          if (autoHighlightMode && listIsNavigable) {
            store4.set("activeIndex", 0);
          }
          pendingQueryHighlightRef.current = null;
        } else if (String(inputValue).trim() === "") {
          pendingQueryHighlightRef.current = null;
          if (listIsNavigable) {
            const clearedBySelection = pendingHighlight.selection;
            if (autoHighlightMode === "always" && !clearedBySelection && store4.state.selectionMode === "none") {
              store4.set("activeIndex", 0);
            }
            queueMicrotask(() => {
              if (!store4.state.open && !store4.state.inline || inputRef.current && inputRef.current.value.trim() !== "") {
                return;
              }
              const currentSelectedValue = store4.state.selectedValue;
              const isMultiple = store4.state.selectionMode === "multiple";
              const hasSelection = isMultiple && Array.isArray(currentSelectedValue) ? currentSelectedValue.length > 0 : store4.state.selectionMode !== "none" && currentSelectedValue != null;
              if (hasSelection) {
                const registry = hasItems || hasFilteredItemsProp ? flatFilteredValues : valuesRef.current;
                const toggledIndex = findItemIndex(registry, pendingHighlight.toggledValue, store4.state.isItemEqualToValue);
                store4.set("activeIndex", toggledIndex !== -1 ? toggledIndex : findSelectionIndex(registry, currentSelectedValue, store4.state.isItemEqualToValue, isMultiple));
              } else if (clearedBySelection) {
                store4.set("activeIndex", null);
              } else if (autoHighlightMode === "always") {
                store4.set("activeIndex", 0);
              }
            });
          }
        }
      }
      if (!open3 && !inline4) {
        return;
      }
      const shouldUseFlatFilteredValues = hasItems || hasFilteredItemsProp;
      const candidateItems = shouldUseFlatFilteredValues ? flatFilteredValues : valuesRef.current;
      const storeActiveIndex = store4.state.activeIndex;
      if (storeActiveIndex == null) {
        if (autoHighlightMode === "always" && candidateItems.length > 0) {
          store4.set("activeIndex", 0);
          return;
        }
        emitHighlight(void 0, -1, reason_parts_exports.none);
        return;
      }
      if (storeActiveIndex >= candidateItems.length) {
        emitHighlight(void 0, -1, reason_parts_exports.none);
        store4.set("activeIndex", null);
        return;
      }
      const itemValue = candidateItems[storeActiveIndex];
      const previouslyHighlightedItemValue = lastHighlightRef.current.value;
      const isSameItem = previouslyHighlightedItemValue !== NO_ACTIVE_VALUE && compareItemEquality(itemValue, previouslyHighlightedItemValue, store4.state.isItemEqualToValue);
      if (lastHighlightRef.current.index !== storeActiveIndex || !isSameItem) {
        emitHighlight(itemValue, storeActiveIndex, reason_parts_exports.none);
      }
    }, [
      activeIndex,
      autoHighlightMode,
      emitHighlight,
      hasFilteredItemsProp,
      hasItems,
      flatFilteredValues,
      inline4,
      open3,
      store4,
      // Reruns the effect when the query changes without affecting the deps above, such as
      // clearing the input when no items are filtered out (individually rendered items).
      inputValue
    ]);
    useIsoLayoutEffect(() => {
      if (selectionMode === "none") {
        setFilled(String(inputValue) !== "");
        return;
      }
      setFilled(multiple ? Array.isArray(selectedValue) && selectedValue.length > 0 : selectedValue != null);
    }, [setFilled, selectionMode, inputValue, selectedValue, multiple]);
    React56.useEffect(() => {
      if (hasItems && autoHighlightMode && flatFilteredValues.length === 0) {
        setIndices({
          activeIndex: null
        });
      }
    }, [hasItems, autoHighlightMode, flatFilteredValues.length, setIndices]);
    function handleQueryChanged() {
      if (open3 && query !== "" && query !== String(initialDefaultInputValue) && !inputMatchesSelectedValue) {
        setQueryChangedAfterOpen(true);
      }
    }
    function handleOpenChanged() {
      if (open3 && closeQuery !== null) {
        handleInterruptedReopen(false);
      }
    }
    let syncedSelectedLabel = false;
    function syncInputToSelectedLabel() {
      if (!syncedSelectedLabel && inputValue !== selectedLabelString) {
        syncedSelectedLabel = true;
        setInputValue(selectedLabelString, createChangeEventDetails(reason_parts_exports.none));
      }
    }
    function handleSelectedValueChanged() {
      if (selectionMode === "none") {
        return;
      }
      clearErrors(name2);
      setDirty(isSelectedValueDirty(selectedValue, validityData.initialValue, isItemEqualToValue));
      validation.change(selectedValue);
      if (single && !hasInputValue && !inputInsidePopup) {
        syncInputToSelectedLabel();
      }
    }
    function syncInputAfterItemsOrLabelChange() {
      if (single && !hasInputValue && !inputInsidePopup && !queryChangedAfterOpen) {
        syncInputToSelectedLabel();
      }
    }
    function handleInputValueChanged() {
      if (selectionMode !== "none") {
        return;
      }
      clearErrors(name2);
      setDirty(inputValue !== validityData.initialValue);
      validation.change(inputValue);
    }
    useValueChanged(query, handleQueryChanged);
    useValueChanged(open3, handleOpenChanged);
    useValueChanged(selectedValue, handleSelectedValueChanged);
    useValueChanged(selectedLabelString, syncInputAfterItemsOrLabelChange);
    useValueChanged(items, syncInputAfterItemsOrLabelChange);
    useValueChanged(inputValue, handleInputValueChanged);
    const floatingRootContext = useFloatingRootContext({
      open: inline4 ? true : open3,
      onOpenChange: setOpen,
      elements: {
        reference: inputInsidePopup ? triggerElement : inputElement,
        floating: positionerElement
      }
    });
    const ariaHasPopup = grid ? "grid" : "listbox";
    const expanded = open3 || inline4;
    const ariaExpanded = expanded ? "true" : "false";
    const role = React56.useMemo(() => {
      const isPlainInput = inputElement?.tagName === "INPUT";
      const shouldTreatAsInput = inputElement == null || isPlainInput;
      const shouldApplyAria = shouldTreatAsInput || expanded;
      const reference = shouldTreatAsInput ? {
        autoComplete: "off",
        spellCheck: "false",
        autoCorrect: "off",
        autoCapitalize: "none"
      } : {};
      if (shouldApplyAria) {
        reference.role = "combobox";
        reference["aria-expanded"] = ariaExpanded;
        reference["aria-haspopup"] = ariaHasPopup;
        reference["aria-controls"] = expanded ? listElement?.id : void 0;
        reference["aria-autocomplete"] = readOnly ? "none" : autoComplete;
      }
      return {
        reference,
        floating: {
          role: "presentation"
        }
      };
    }, [inputElement, expanded, ariaExpanded, ariaHasPopup, listElement?.id, autoComplete, readOnly]);
    const click = useClick(floatingRootContext, {
      enabled: !disabled2 && openOnInputClick,
      event: "mousedown-only",
      toggle: false,
      // Apply a small delay for touch to let mobile viewport/keyboard positioning settle.
      // This avoids top-bottom flip flickers if the preferred position is "top" when first tapping.
      touchOpenDelay: inputInsidePopup ? 0 : 100,
      reason: reason_parts_exports.inputPress
    });
    const dismiss = useDismiss(floatingRootContext, {
      enabled: !disabled2 && !inline4,
      outsidePressEvent: {
        mouse: "sloppy",
        // The visual viewport (affected by the mobile software keyboard) can be
        // somewhat small. The user may want to scroll the screen to see more of
        // the popup.
        touch: "intentional"
      },
      // Without a popup, let the Escape key bubble the event up to other popups' handlers.
      bubbles: inline4 ? true : void 0,
      outsidePress(event) {
        const target = getTarget(event);
        return !contains(triggerElement, target) && !contains(clearRef.current, target) && !contains(chipsContainerRef.current, target) && !contains(inputGroupElement, target);
      }
    });
    const listNavigation2 = useListNavigation(floatingRootContext, {
      enabled: !disabled2,
      id,
      listRef,
      activeIndex,
      selectedIndex,
      virtual: true,
      loopFocus,
      allowEscape: loopFocus && !autoHighlightMode,
      focusItemOnOpen: queryChangedAfterOpen || selectionMode === "none" && !autoHighlightMode ? false : "auto",
      focusItemOnHover: highlightItemOnHover,
      resetOnPointerLeave: !keepHighlight,
      orientation: grid ? "horizontal" : void 0,
      rtl: direction === "rtl",
      disabledIndices: EMPTY_ARRAY3,
      grid: grid ? gridNavigation : void 0,
      onNavigate(nextActiveIndex, event) {
        if (!event && !open3 || transitionStatus === "ending") {
          return;
        }
        if (!event) {
          setIndices({
            activeIndex: nextActiveIndex
          });
        } else {
          setIndices({
            activeIndex: nextActiveIndex,
            type: keyboardActiveRef.current ? reason_parts_exports.keyboard : reason_parts_exports.pointer
          });
        }
      }
    });
    const inputProps = React56.useMemo(() => mergeProps(listNavigation2.reference, {
      onKeyDown(event) {
        if (grid && store4.state.activeIndex == null && (event.key === "ArrowLeft" || event.key === "ArrowRight")) {
          event.preventBaseUIHandler();
        }
      }
    }, dismiss.reference, click.reference, role.reference), [listNavigation2.reference, dismiss.reference, click.reference, role.reference, grid, store4]);
    const popupProps = React56.useMemo(() => mergeProps(FOCUSABLE_POPUP_PROPS, dismiss.floating), [dismiss.floating]);
    const listProps = React56.useMemo(() => mergeProps(listNavigation2.floating, role.floating), [listNavigation2.floating, role.floating]);
    const itemProps = React56.useMemo(() => {
      const listNavigationItemProps = listNavigation2.item;
      if (!listNavigationItemProps) {
        return EMPTY_OBJECT2;
      }
      return {
        ...listNavigationItemProps,
        onFocus: void 0
      };
    }, [listNavigation2.item]);
    store4.useContextCallback("setOpen", setOpen);
    store4.useContextCallback("setInputValue", setInputValue);
    store4.useContextCallback("setSelectedValue", setSelectedValue);
    store4.useContextCallback("setIndices", setIndices);
    store4.useContextCallback("handleSelection", handleSelection);
    store4.useContextCallback("forceMount", forceMount);
    store4.useContextCallback("requestSubmit", requestSubmit);
    store4.useContextCallback("onOpenChangeComplete", onOpenChangeCompleteProp);
    useOnFirstRender(() => {
      store4.update({
        inline: inlineProp,
        popupProps,
        listProps,
        inputProps,
        triggerProps,
        itemProps
      });
    });
    const syncedValues = {
      id,
      selectedValue,
      open: open3,
      mounted,
      transitionStatus,
      items: storeItems,
      inline: inlineProp,
      popupProps,
      listProps,
      inputProps,
      triggerProps,
      itemProps,
      openMethod,
      selectionMode,
      name: name2,
      form,
      disabled: disabled2,
      readOnly,
      required,
      grid,
      virtualized,
      openOnInputClick,
      itemToStringLabel,
      modal,
      autoHighlight: autoHighlightMode,
      isItemEqualToValue,
      submitOnItemClick,
      hasInputValue
    };
    useIsoLayoutEffect(() => {
      store4.update({
        ...syncedValues,
        inputOwnsFormValue: selectionMode === "none" && (inlineProp || !store4.state.inputInsidePopup)
      });
    }, [store4, ...Object.values(syncedValues)]);
    const hiddenInputRef = useMergedRefs(inputRefProp, validation.inputRef);
    const itemsContextValue = React56.useMemo(() => ({
      query,
      hasItems,
      filteredItems,
      flatFilteredValues
    }), [query, hasItems, filteredItems, flatFilteredValues]);
    const serializedValue = React56.useMemo(() => {
      if (Array.isArray(fieldRawValue)) {
        return "";
      }
      return stringifyAsValue(fieldRawValue, itemToStringValue);
    }, [fieldRawValue, itemToStringValue]);
    const hasMultipleSelection = multiple && Array.isArray(selectedValue) && selectedValue.length > 0;
    const hiddenInputName = multiple || selectionMode === "none" && inputOwnsFormValue ? void 0 : name2;
    const hiddenInputs = React56.useMemo(() => {
      if (!multiple || !Array.isArray(selectedValue) || !name2) {
        return null;
      }
      return selectedValue.map((value) => {
        const currentSerializedValue = stringifyAsValue(value, itemToStringValue);
        return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("input", {
          type: "hidden",
          form,
          name: name2,
          value: currentSerializedValue,
          disabled: disabled2
        }, currentSerializedValue);
      });
    }, [multiple, selectedValue, form, name2, itemToStringValue, disabled2]);
    const children = /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(React56.Fragment, {
      children: [props.children, /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("input", {
        ...validation.getValidationProps(disabled2, {
          // Move focus when the hidden input is focused.
          onFocus() {
            if (inputInsidePopup) {
              triggerElement?.focus();
              return;
            }
            (inputRef.current || triggerElement)?.focus();
          },
          // Handle browser autofill.
          onChange(event) {
            if (event.nativeEvent.defaultPrevented || disabled2 || readOnly) {
              return;
            }
            const nextValue = event.currentTarget.value;
            const nextValueLower = nextValue.toLowerCase();
            const details = createChangeEventDetails(reason_parts_exports.none, event.nativeEvent);
            const findSerializedMatchIndex = () => valuesRef.current.findIndex((candidate) => stringifyAsValue(candidate, itemToStringValue).toLowerCase() === nextValueLower || stringifyValueLabel(candidate).toLowerCase() === nextValueLower);
            function handleChange() {
              if (multiple) {
                return;
              }
              if (selectionMode === "none") {
                setInputValue(nextValue, details);
                return;
              }
              let matchingIndex = findSerializedMatchIndex();
              if (matchingIndex === -1) {
                matchingIndex = valuesRef.current.findIndex((_, index3) => {
                  const renderedLabel = labelsRef.current[index3];
                  return renderedLabel != null && renderedLabel.toLowerCase() === nextValueLower;
                });
              }
              const matchingValue = matchingIndex === -1 ? void 0 : valuesRef.current[matchingIndex];
              if (matchingValue != null) {
                setSelectedValue?.(matchingValue, details);
              }
            }
            if (single) {
              forceMount();
              if (items && findSerializedMatchIndex() === -1) {
                store4.set("forceMounted", true);
              }
            }
            queueMicrotask(handleChange);
          }
        }),
        id: id && hiddenInputName == null ? `${id}-hidden-input` : void 0,
        form,
        name: hiddenInputName,
        autoComplete: formAutoComplete,
        disabled: disabled2,
        required: required && !hasMultipleSelection,
        readOnly,
        value: serializedValue,
        ref: hiddenInputRef,
        style: hiddenInputName ? visuallyHiddenInput : visuallyHidden,
        tabIndex: -1,
        "aria-hidden": true,
        suppressHydrationWarning: true
      }), hiddenInputs]
    });
    return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(ComboboxRootContext.Provider, {
      value: store4,
      children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(ComboboxFloatingContext.Provider, {
        value: floatingRootContext,
        children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(ComboboxHasItemsContext.Provider, {
          value: hasItems,
          children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(ComboboxDerivedItemsContext.Provider, {
            value: itemsContextValue,
            children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(ComboboxInputValueContext.Provider, {
              value: inputValue,
              children
            })
          })
        })
      })
    });
  }

  // node_modules/@base-ui/react/combobox/trigger/ComboboxTrigger.mjs
  var React57 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/combobox/input/ComboboxInputDataAttributes.mjs
  var popupOpen3 = CommonTriggerDataAttributes_exports.popupOpen;
  var pressed2 = CommonTriggerDataAttributes_exports.pressed;
  var popupSide = "data-popup-side";
  var listEmpty = "data-list-empty";

  // node_modules/@base-ui/react/combobox/utils/stateAttributesMapping.mjs
  var triggerStateAttributesMapping = {
    ...pressableTriggerOpenStateMapping,
    ...fieldValidityMapping,
    popupSide: (side) => side ? {
      [popupSide]: side
    } : null,
    listEmpty: (empty) => empty ? {
      [listEmpty]: ""
    } : null
  };

  // node_modules/@base-ui/react/utils/getPseudoElementBounds.mjs
  var BOUNDARY_OFFSET = 5;
  function isMouseWithinBounds(event, element) {
    const bounds = getPseudoElementBounds(element);
    return event.clientX >= bounds.left - BOUNDARY_OFFSET && event.clientX <= bounds.right + BOUNDARY_OFFSET && event.clientY >= bounds.top - BOUNDARY_OFFSET && event.clientY <= bounds.bottom + BOUNDARY_OFFSET;
  }
  function getPseudoElementBounds(element) {
    const elementRect = element.getBoundingClientRect();
    const win = getWindow(element);
    if (parts_exports.env.jsdom) {
      return elementRect;
    }
    const beforeStyles = win.getComputedStyle(element, "::before");
    const afterStyles = win.getComputedStyle(element, "::after");
    const hasPseudoElements = beforeStyles.content !== "none" || afterStyles.content !== "none";
    if (!hasPseudoElements) {
      return elementRect;
    }
    const beforeWidth = parseFloat(beforeStyles.width) || 0;
    const beforeHeight = parseFloat(beforeStyles.height) || 0;
    const afterWidth = parseFloat(afterStyles.width) || 0;
    const afterHeight = parseFloat(afterStyles.height) || 0;
    const totalWidth = Math.max(elementRect.width, beforeWidth, afterWidth);
    const totalHeight = Math.max(elementRect.height, beforeHeight, afterHeight);
    const widthDiff = totalWidth - elementRect.width;
    const heightDiff = totalHeight - elementRect.height;
    return {
      left: elementRect.left - widthDiff / 2,
      right: elementRect.right + widthDiff / 2,
      top: elementRect.top - heightDiff / 2,
      bottom: elementRect.bottom + heightDiff / 2
    };
  }

  // node_modules/@base-ui/react/utils/resolveAriaLabelledBy.mjs
  function getDefaultLabelId(id) {
    return id == null ? void 0 : `${id}-label`;
  }
  function resolveAriaLabelledBy(fieldLabelId, localLabelId) {
    return fieldLabelId ?? localLabelId;
  }

  // node_modules/@base-ui/react/combobox/utils/parts.mjs
  function usePopupSide(store4) {
    const mounted = store4.useState("mounted");
    const popupSide2 = store4.useState("popupSide");
    const positionerElement = store4.useState("positionerElement");
    return mounted && positionerElement ? popupSide2 : null;
  }
  function useListEmpty() {
    return useComboboxDerivedItemsContext().filteredItems.length === 0;
  }
  function getChipNavigationKeys(direction) {
    return direction === "rtl" ? ["ArrowRight", "ArrowLeft"] : ["ArrowLeft", "ArrowRight"];
  }
  function getIndexAfterChipRemoval(index3, chipCount) {
    const nextIndex = index3 >= chipCount - 1 ? chipCount - 2 : index3;
    return nextIndex >= 0 ? nextIndex : void 0;
  }
  function clickHighlightedItem(store4, activeIndex, nativeEvent) {
    const listItem = store4.context.listRef.current[activeIndex];
    if (listItem) {
      store4.context.selectionEventRef.current = nativeEvent;
      listItem.click();
      store4.context.selectionEventRef.current = null;
    }
  }

  // node_modules/@base-ui/react/combobox/trigger/ComboboxTrigger.mjs
  var ComboboxTrigger = /* @__PURE__ */ React57.forwardRef(function ComboboxTrigger2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      nativeButton = true,
      disabled: disabledProp = false,
      id: idProp,
      style,
      ...elementProps
    } = componentProps;
    const {
      state: fieldState,
      disabled: fieldDisabled,
      setTouched,
      setFocused,
      validationMode,
      validation
    } = useFieldRootContext();
    const {
      labelId: fieldLabelId
    } = useLabelableContext();
    const store4 = useComboboxRootContext();
    const selectionMode = store4.useState("selectionMode");
    const comboboxDisabled = store4.useState("disabled");
    const readOnly = store4.useState("readOnly");
    const required = store4.useState("required");
    const positionerElement = store4.useState("positionerElement");
    const listElement = store4.useState("listElement");
    const storedPopupId = store4.useState("popupId");
    const triggerProps = store4.useState("triggerProps");
    const inputInsidePopup = store4.useState("inputInsidePopup");
    const rootId = store4.useState("id");
    const comboboxLabelId = store4.useState("labelId");
    const open3 = store4.useState("open");
    const selectedValue = store4.useState("selectedValue");
    const activeIndex = store4.useState("activeIndex");
    const selectedIndex = store4.useState("selectedIndex");
    const hasSelectedValue = store4.useState("hasSelectedValue");
    const floatingRootContext = useComboboxFloatingContext();
    const inputValue = useComboboxInputValueContext();
    const focusTimeout = useTimeout();
    const disabled2 = fieldDisabled || comboboxDisabled || disabledProp;
    const listEmpty2 = useListEmpty();
    const popupSide2 = usePopupSide(store4);
    useLabelableId({
      id: inputInsidePopup ? idProp : void 0
    });
    const id = inputInsidePopup ? idProp ?? rootId : idProp;
    const ariaLabelledBy = resolveAriaLabelledBy(fieldLabelId, comboboxLabelId);
    let ariaControls;
    if (open3 && inputInsidePopup) {
      ariaControls = storedPopupId ?? getComboboxPopupId(rootId);
    } else if (open3) {
      ariaControls = listElement?.id;
    }
    const currentPointerTypeRef = React57.useRef("");
    function trackPointerType(event) {
      currentPointerTypeRef.current = event.pointerType;
    }
    const {
      reference: triggerTypeaheadProps
    } = useTypeahead(floatingRootContext, {
      // Typeahead on a closed trigger commits a value rather than moving a highlight, so it stays
      // gated on `readOnly`.
      enabled: !open3 && !readOnly && !comboboxDisabled && selectionMode === "single",
      listRef: store4.context.labelsRef,
      activeIndex,
      selectedIndex,
      onMatch(index3) {
        const nextSelectedValue = store4.context.valuesRef.current[index3];
        if (nextSelectedValue !== void 0) {
          store4.context.setSelectedValue(nextSelectedValue, createChangeEventDetails(reason_parts_exports.none));
        }
      }
    });
    const {
      reference: triggerClickProps
    } = useClick(floatingRootContext, {
      enabled: !comboboxDisabled,
      event: "mousedown"
    });
    const {
      buttonRef,
      getButtonProps
    } = useButton({
      native: nativeButton,
      disabled: disabled2
    });
    const state2 = {
      ...fieldState,
      readOnly,
      open: open3,
      disabled: disabled2,
      popupSide: popupSide2,
      listEmpty: listEmpty2,
      placeholder: selectionMode === "none" ? false : !hasSelectedValue
    };
    const setTriggerElement = useStableCallback((element2) => {
      store4.set("triggerElement", element2);
    });
    const element = useRenderElement("button", componentProps, {
      ref: [forwardedRef, buttonRef, setTriggerElement],
      state: state2,
      props: [triggerProps, triggerClickProps, triggerTypeaheadProps, {
        id,
        tabIndex: inputInsidePopup ? 0 : -1,
        role: inputInsidePopup ? "combobox" : void 0,
        "aria-expanded": open3,
        "aria-haspopup": inputInsidePopup ? "dialog" : "listbox",
        "aria-controls": ariaControls,
        "aria-required": inputInsidePopup ? required || void 0 : void 0,
        // Only valid alongside the `combobox` role; without it the trigger is a plain button, and
        // the `Combobox.Input` outside the popup already carries `aria-readonly`.
        "aria-readonly": inputInsidePopup ? readOnly || void 0 : void 0,
        "aria-labelledby": ariaLabelledBy,
        onPointerDown: trackPointerType,
        onPointerEnter: trackPointerType,
        onFocus() {
          setFocused(true);
          if (disabled2) {
            return;
          }
          focusTimeout.start(0, store4.context.forceMount);
        },
        onBlur(event) {
          if (contains(positionerElement, event.relatedTarget)) {
            return;
          }
          setTouched(true);
          setFocused(false);
          if (validationMode === "onBlur") {
            const valueToValidate = selectionMode === "none" ? inputValue : selectedValue;
            validation.commit(valueToValidate);
          }
        },
        onMouseDown(event) {
          if (disabled2) {
            return;
          }
          if (!inputInsidePopup) {
            floatingRootContext.set("domReferenceElement", event.currentTarget);
          }
          store4.context.forceMount();
          if (currentPointerTypeRef.current !== "touch") {
            store4.context.inputRef.current?.focus();
            if (!inputInsidePopup) {
              event.preventDefault();
            }
          }
          if (open3) {
            return;
          }
          const doc = ownerDocument(event.currentTarget);
          function handleMouseUp(mouseEvent) {
            const currentTriggerElement = store4.state.triggerElement;
            if (!currentTriggerElement) {
              return;
            }
            const mouseUpTarget = getTarget(mouseEvent);
            const positioner = store4.state.positionerElement;
            const list = store4.state.listElement;
            if (contains(currentTriggerElement, mouseUpTarget) || contains(positioner, mouseUpTarget) || contains(list, mouseUpTarget)) {
              return;
            }
            if (isMouseWithinBounds(mouseEvent, currentTriggerElement)) {
              return;
            }
            store4.context.setOpen(false, createChangeEventDetails(reason_parts_exports.cancelOpen, mouseEvent));
          }
          if (inputInsidePopup) {
            doc.addEventListener("mouseup", handleMouseUp, {
              once: true
            });
          }
        },
        onKeyDown(event) {
          if (event.key === "ArrowDown" || event.key === "ArrowUp") {
            stopEvent(event);
            store4.context.setOpen(true, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent));
            store4.context.inputRef.current?.focus();
          }
        }
      }, validation.getValidationProps(disabled2, elementProps), getButtonProps],
      stateAttributesMapping: triggerStateAttributesMapping
    });
    return element;
  });
  if (true) ComboboxTrigger.displayName = "ComboboxTrigger";

  // node_modules/@base-ui/react/combobox/input/ComboboxInput.mjs
  var React61 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/combobox/chips/ComboboxChipsContext.mjs
  var React58 = __toESM(require_react(), 1);
  var ComboboxChipsContext = /* @__PURE__ */ React58.createContext(void 0);
  if (true) ComboboxChipsContext.displayName = "ComboboxChipsContext";
  function useComboboxChipsContext() {
    return React58.useContext(ComboboxChipsContext);
  }

  // node_modules/@base-ui/react/combobox/positioner/ComboboxPositionerContext.mjs
  var React59 = __toESM(require_react(), 1);
  var ComboboxPositionerContext = /* @__PURE__ */ React59.createContext(void 0);
  if (true) ComboboxPositionerContext.displayName = "ComboboxPositionerContext";
  function useComboboxPositionerContext(optional) {
    const context = React59.useContext(ComboboxPositionerContext);
    if (context === void 0 && !optional) {
      throw new Error(true ? "Base UI: <Combobox.Popup> and <Combobox.Arrow> must be used within the <Combobox.Positioner> component" : formatErrorMessage_default(21));
    }
    return context;
  }

  // node_modules/@base-ui/react/combobox/utils/ComboboxInternalDismissButton.mjs
  var React60 = __toESM(require_react(), 1);
  var import_jsx_runtime105 = __toESM(require_jsx_runtime(), 1);
  var ComboboxInternalDismissButton = /* @__PURE__ */ React60.forwardRef(function ComboboxInternalDismissButton2(_, forwardedRef) {
    const store4 = useComboboxRootContext();
    const {
      buttonRef,
      getButtonProps
    } = useButton({
      native: false
    });
    const mergedRef = useMergedRefs(forwardedRef, buttonRef);
    function handleDismiss(event) {
      store4.context.setOpen(false, createChangeEventDetails(reason_parts_exports.closePress, event.nativeEvent, event.currentTarget));
    }
    const dismissProps = getButtonProps({
      onClick: handleDismiss
    });
    return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", {
      ref: mergedRef,
      ...dismissProps,
      "aria-label": "Dismiss",
      tabIndex: void 0,
      style: visuallyHiddenInput
    });
  });
  if (true) ComboboxInternalDismissButton.displayName = "ComboboxInternalDismissButton";

  // node_modules/@base-ui/react/combobox/input/ComboboxInput.mjs
  var import_jsx_runtime106 = __toESM(require_jsx_runtime(), 1);
  var ComboboxInput = /* @__PURE__ */ React61.forwardRef(function ComboboxInput2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      disabled: disabledProp = false,
      id: idProp,
      style,
      ...elementProps
    } = componentProps;
    const {
      state: fieldState,
      disabled: fieldDisabled,
      setTouched,
      setFocused,
      validationMode,
      validation
    } = useFieldRootContext();
    const {
      labelId: fieldLabelId
    } = useLabelableContext();
    const comboboxChipsContext = useComboboxChipsContext();
    const positioning = useComboboxPositionerContext(true);
    const hasPositionerParent = Boolean(positioning);
    const store4 = useComboboxRootContext();
    const inputValue = useComboboxInputValueContext();
    const direction = useDirection();
    const required = store4.useState("required");
    const comboboxDisabled = store4.useState("disabled");
    const readOnly = store4.useState("readOnly");
    const name2 = store4.useState("name");
    const form = store4.useState("form");
    const selectionMode = store4.useState("selectionMode");
    const autoHighlightMode = store4.useState("autoHighlight");
    const inputProps = store4.useState("inputProps");
    const triggerProps = store4.useState("triggerProps");
    const open3 = store4.useState("open");
    const mounted = store4.useState("mounted");
    const selectedValue = store4.useState("selectedValue");
    const rootId = store4.useState("id");
    const inline4 = store4.useState("inline");
    const modal = store4.useState("modal");
    const autoHighlightEnabled = Boolean(autoHighlightMode);
    const popupSide2 = usePopupSide(store4);
    const disabled2 = fieldDisabled || comboboxDisabled || disabledProp;
    const listEmpty2 = useListEmpty();
    const isInsidePopup = hasPositionerParent || inline4;
    const focusManagerModal = !isInsidePopup || modal;
    const id = useBaseUiId(idProp ?? (!isInsidePopup ? rootId : void 0));
    const fieldStateForInput = hasPositionerParent ? DEFAULT_FIELD_STATE_ATTRIBUTES : fieldState;
    const [composingValue, setComposingValue] = React61.useState(null);
    const isComposingRef = React61.useRef(false);
    const lastActiveIndexRef = React61.useRef(null);
    const shouldRestoreActiveIndexRef = React61.useRef(false);
    const inputOwnsFormValue = selectionMode === "none" && !hasPositionerParent;
    const setInputElement = useStableCallback((element2) => {
      const nextIsInsidePopup = hasPositionerParent || store4.state.inline;
      if (nextIsInsidePopup && !store4.state.hasInputValue) {
        store4.context.setInputValue("", createChangeEventDetails(reason_parts_exports.none));
      }
      store4.update({
        inputElement: element2,
        inputInsidePopup: nextIsInsidePopup,
        inputOwnsFormValue
      });
    });
    const validationProps = hasPositionerParent ? elementProps : validation.getValidationProps(disabled2, elementProps);
    function clearHighlight() {
      store4.context.setIndices({
        activeIndex: null,
        selectedIndex: null,
        type: store4.context.keyboardActiveRef.current ? reason_parts_exports.keyboard : reason_parts_exports.pointer
      });
    }
    function markPointerActive() {
      store4.context.keyboardActiveRef.current = false;
    }
    const state2 = {
      ...fieldStateForInput,
      open: open3,
      disabled: disabled2,
      readOnly,
      popupSide: popupSide2,
      listEmpty: listEmpty2
    };
    function handleKeyDown(event) {
      if (!comboboxChipsContext) {
        return void 0;
      }
      let nextIndex;
      const {
        highlightedChipIndex
      } = comboboxChipsContext;
      const renderedChipsCount = comboboxChipsContext.chipsRef.current.length;
      const [previousChipKey, nextChipKey] = getChipNavigationKeys(direction);
      if (highlightedChipIndex !== void 0) {
        if (event.key === previousChipKey) {
          event.preventDefault();
          if (highlightedChipIndex > 0) {
            nextIndex = highlightedChipIndex - 1;
          } else {
            nextIndex = void 0;
          }
        } else if (event.key === nextChipKey) {
          event.preventDefault();
          if (highlightedChipIndex < renderedChipsCount - 1) {
            nextIndex = highlightedChipIndex + 1;
          } else {
            nextIndex = void 0;
          }
        } else if (event.key === "Backspace" || event.key === "Delete") {
          event.preventDefault();
          nextIndex = getIndexAfterChipRemoval(highlightedChipIndex, selectedValue.length);
          clearHighlight();
        }
        return nextIndex;
      }
      if (event.key === previousChipKey && (event.currentTarget.selectionStart ?? 0) === 0 && selectedValue.length > 0) {
        event.preventDefault();
        nextIndex = renderedChipsCount > 0 ? renderedChipsCount - 1 : void 0;
      }
      return nextIndex;
    }
    const element = useRenderElement("input", componentProps, {
      state: state2,
      ref: [forwardedRef, store4.context.inputRef, setInputElement],
      props: [inputProps, triggerProps, {
        value: composingValue ?? inputValue,
        "aria-readonly": readOnly || void 0,
        "aria-required": required || void 0,
        "aria-labelledby": fieldLabelId,
        disabled: disabled2,
        readOnly,
        required: selectionMode === "none" ? required : void 0,
        form,
        ...inputOwnsFormValue && name2 && {
          name: name2
        },
        id,
        onFocus() {
          setFocused(true);
          if (!inline4 || !shouldRestoreActiveIndexRef.current) {
            return;
          }
          shouldRestoreActiveIndexRef.current = false;
          const nextActiveIndex = lastActiveIndexRef.current;
          if (nextActiveIndex == null || // `valuesRef` can be sparse, so guard against restoring a removed slot.
          !Object.hasOwn(store4.context.valuesRef.current, nextActiveIndex)) {
            return;
          }
          store4.context.setIndices({
            activeIndex: nextActiveIndex
          });
        },
        onBlur() {
          setTouched(true);
          setFocused(false);
          const activeIndex = store4.state.activeIndex;
          if (inline4 && activeIndex !== null && autoHighlightMode !== "always") {
            lastActiveIndexRef.current = activeIndex;
            shouldRestoreActiveIndexRef.current = true;
            store4.context.setIndices({
              activeIndex: null
            });
          }
          if (validationMode === "onBlur") {
            const valueToValidate = selectionMode === "none" ? inputValue : selectedValue;
            validation.commit(valueToValidate);
          }
        },
        onCompositionStart(event) {
          if (parts_exports.os.android) {
            return;
          }
          isComposingRef.current = true;
          setComposingValue(event.currentTarget.value);
        },
        onCompositionEnd(event) {
          isComposingRef.current = false;
          const next = event.currentTarget.value;
          setComposingValue(null);
          store4.context.setInputValue(next, createChangeEventDetails(reason_parts_exports.inputChange, event.nativeEvent));
        },
        onChange(event) {
          const nativeEvent = event.nativeEvent;
          const inputType = nativeEvent.inputType;
          const autofillLikeInput = !inputType || inputType === "insertReplacementText";
          const shouldOpenOnInput = isComposingRef.current || !autofillLikeInput;
          function maybeOpenOnInput(trimmed) {
            if (readOnly || disabled2 || !trimmed || !shouldOpenOnInput) {
              return;
            }
            store4.context.setOpen(true, createChangeEventDetails(reason_parts_exports.inputChange, nativeEvent));
            if (!autoHighlightEnabled) {
              clearHighlight();
            }
          }
          if (isComposingRef.current) {
            const nextVal = event.currentTarget.value;
            setComposingValue(nextVal);
            if (nextVal === "" && !store4.state.openOnInputClick && !store4.state.inputInsidePopup) {
              store4.context.setOpen(false, createChangeEventDetails(reason_parts_exports.inputClear, nativeEvent));
            }
            const trimmed = nextVal.trim();
            const shouldMaintainHighlight = autoHighlightEnabled && trimmed !== "";
            maybeOpenOnInput(trimmed);
            if (open3 && store4.state.activeIndex !== null && !shouldMaintainHighlight) {
              clearHighlight();
            }
            return;
          }
          const inputChangeDetails = createChangeEventDetails(reason_parts_exports.inputChange, nativeEvent);
          store4.context.setInputValue(event.currentTarget.value, inputChangeDetails);
          if (inputChangeDetails.isCanceled) {
            return;
          }
          const empty = event.currentTarget.value === "";
          const clearDetails = createChangeEventDetails(reason_parts_exports.inputClear, nativeEvent);
          if (empty && !store4.state.inputInsidePopup) {
            if (selectionMode === "single") {
              store4.context.setSelectedValue(null, clearDetails);
            }
            if (!store4.state.openOnInputClick) {
              store4.context.setOpen(false, clearDetails);
            }
          }
          maybeOpenOnInput(event.currentTarget.value.trim());
          if (open3 && store4.state.activeIndex !== null && !autoHighlightEnabled) {
            clearHighlight();
          }
        },
        onKeyDown(event) {
          if (event.ctrlKey || event.shiftKey || event.altKey || event.metaKey) {
            return;
          }
          store4.context.keyboardActiveRef.current = true;
          if (disabled2 || readOnly) {
            if (readOnly && event.key === "Enter" && open3 && store4.state.activeIndex !== null) {
              stopEvent(event);
            }
            return;
          }
          const input = event.currentTarget;
          const scrollAmount = input.scrollWidth - input.clientWidth;
          const isRTL27 = direction === "rtl";
          if (event.key === "Home") {
            stopEvent(event);
            const cursor = parts_exports.engine.gecko && isRTL27 ? input.value.length : 0;
            input.setSelectionRange(cursor, cursor);
            input.scrollLeft = 0;
            return;
          }
          if (event.key === "End") {
            stopEvent(event);
            const cursor = parts_exports.engine.gecko && isRTL27 ? 0 : input.value.length;
            input.setSelectionRange(cursor, cursor);
            input.scrollLeft = isRTL27 ? -scrollAmount : scrollAmount;
            return;
          }
          if (!mounted && event.key === "Escape") {
            const isClear = selectionMode === "multiple" && Array.isArray(selectedValue) ? selectedValue.length === 0 : selectedValue === null;
            const details = createChangeEventDetails(reason_parts_exports.escapeKey, event.nativeEvent);
            const value = selectionMode === "multiple" ? [] : null;
            store4.context.setInputValue("", details);
            store4.context.setSelectedValue(value, details);
            if (!isClear && !store4.state.inline && !details.isPropagationAllowed) {
              event.stopPropagation();
            }
            return;
          }
          if (comboboxChipsContext && event.key === "Backspace" && input.value === "" && comboboxChipsContext.highlightedChipIndex === void 0 && Array.isArray(selectedValue) && selectedValue.length > 0) {
            const renderedChipsCount = comboboxChipsContext.chipsRef.current.length;
            const removalIndex = renderedChipsCount > 0 ? renderedChipsCount - 1 : selectedValue.length - 1;
            const newValue = selectedValue.filter((_, index3) => index3 !== removalIndex);
            clearHighlight();
            store4.context.setSelectedValue(newValue, createChangeEventDetails(reason_parts_exports.none, event.nativeEvent));
            return;
          }
          const hadHighlightedChip = comboboxChipsContext?.highlightedChipIndex !== void 0;
          const nextIndex = handleKeyDown(event);
          comboboxChipsContext?.setHighlightedChipIndex(nextIndex);
          if (nextIndex !== void 0) {
            comboboxChipsContext?.chipsRef.current[nextIndex]?.focus();
          } else if (hadHighlightedChip) {
            store4.context.inputRef.current?.focus();
          }
          if (event.which === 229) {
            return;
          }
          if (event.key === "Enter" && open3) {
            const activeIndex = store4.state.activeIndex;
            const nativeEvent = event.nativeEvent;
            if (activeIndex === null) {
              if (inline4) {
                return;
              }
              store4.context.setOpen(false, createChangeEventDetails(reason_parts_exports.none, nativeEvent));
              return;
            }
            stopEvent(event);
            clickHighlightedItem(store4, activeIndex, nativeEvent);
          }
        },
        onPointerMove: markPointerActive,
        onPointerDown: markPointerActive
      }, validationProps],
      stateAttributesMapping: triggerStateAttributesMapping
    });
    const renderedInput = hasPositionerParent ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(FieldRootContext.Provider, {
      value: DEFAULT_FIELD_ROOT_CONTEXT,
      children: element
    }) : element;
    return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(React61.Fragment, {
      children: [open3 && focusManagerModal && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(ComboboxInternalDismissButton, {
        ref: store4.context.startDismissRef
      }), renderedInput]
    });
  });
  if (true) ComboboxInput.displayName = "ComboboxInput";

  // node_modules/@base-ui/react/combobox/input-group/ComboboxInputGroup.mjs
  var React62 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/combobox/utils/handleInputPress.mjs
  function handleInputPress(event, store4, disabled2, shouldIgnoreTarget) {
    if (event.baseUIHandlerPrevented) {
      return;
    }
    const target = getTarget(event.nativeEvent);
    const targetElement = isElement(target) ? target : null;
    if (targetElement !== event.currentTarget && (shouldIgnoreTarget?.(targetElement) || isInteractiveElement(targetElement))) {
      return;
    }
    event.preventDefault();
    if (disabled2) {
      return;
    }
    store4.context.inputRef.current?.focus();
    if (store4.state.openOnInputClick) {
      store4.context.setOpen(true, createChangeEventDetails(reason_parts_exports.inputPress, event.nativeEvent));
    }
  }

  // node_modules/@base-ui/react/combobox/input-group/ComboboxInputGroup.mjs
  var ComboboxInputGroup = /* @__PURE__ */ React62.forwardRef(function ComboboxInputGroup2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      ...elementProps
    } = componentProps;
    const {
      state: fieldState
    } = useFieldRootContext();
    const store4 = useComboboxRootContext();
    const open3 = store4.useState("open");
    const comboboxDisabled = store4.useState("disabled");
    const readOnly = store4.useState("readOnly");
    const hasSelectedValue = store4.useState("hasSelectedValue");
    const selectionMode = store4.useState("selectionMode");
    const popupSide2 = usePopupSide(store4);
    const disabled2 = comboboxDisabled;
    const listEmpty2 = useListEmpty();
    const placeholder = selectionMode === "none" ? false : !hasSelectedValue;
    const state2 = {
      ...fieldState,
      open: open3,
      disabled: disabled2,
      readOnly,
      popupSide: popupSide2,
      listEmpty: listEmpty2,
      placeholder
    };
    const setInputGroupElement = useStableCallback((element) => {
      store4.set("inputGroupElement", element);
    });
    return useRenderElement("div", componentProps, {
      ref: [forwardedRef, setInputGroupElement],
      props: [{
        role: "group",
        onMouseDown(event) {
          handleInputPress(event, store4, disabled2, (target) => {
            return contains(store4.context.chipsContainerRef.current, target);
          });
        }
      }, elementProps],
      state: state2,
      stateAttributesMapping: triggerStateAttributesMapping
    });
  });
  if (true) ComboboxInputGroup.displayName = "ComboboxInputGroup";

  // node_modules/@base-ui/react/combobox/icon/ComboboxIcon.mjs
  var React63 = __toESM(require_react(), 1);
  var ComboboxIcon = /* @__PURE__ */ React63.forwardRef(function ComboboxIcon2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      ...elementProps
    } = componentProps;
    const element = useRenderElement("span", componentProps, {
      ref: forwardedRef,
      props: [{
        "aria-hidden": true,
        children: "\u25BC"
      }, elementProps]
    });
    return element;
  });
  if (true) ComboboxIcon.displayName = "ComboboxIcon";

  // node_modules/@base-ui/react/combobox/clear/ComboboxClear.mjs
  var React64 = __toESM(require_react(), 1);
  var stateAttributesMapping = {
    ...transitionStatusMapping,
    ...triggerOpenStateMapping2
  };
  var ComboboxClear = /* @__PURE__ */ React64.forwardRef(function ComboboxClear2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      disabled: disabledProp = false,
      nativeButton = true,
      keepMounted = false,
      style,
      ...elementProps
    } = componentProps;
    const {
      disabled: fieldDisabled
    } = useFieldRootContext();
    const store4 = useComboboxRootContext();
    const selectionMode = store4.useState("selectionMode");
    const comboboxDisabled = store4.useState("disabled");
    const readOnly = store4.useState("readOnly");
    const open3 = store4.useState("open");
    const selectedValue = store4.useState("selectedValue");
    const hasSelectionChips = store4.useState("hasSelectionChips");
    const inputValue = useComboboxInputValueContext();
    let visible = false;
    if (selectionMode === "none") {
      visible = inputValue !== "";
    } else if (selectionMode === "single") {
      visible = selectedValue != null;
    } else {
      visible = hasSelectionChips;
    }
    const disabled2 = fieldDisabled || comboboxDisabled || disabledProp;
    const {
      buttonRef,
      getButtonProps
    } = useButton({
      native: nativeButton,
      disabled: disabled2
    });
    const {
      mounted,
      transitionStatus,
      setMounted
    } = useTransitionStatus(visible);
    const state2 = {
      disabled: disabled2,
      visible,
      open: open3,
      transitionStatus
    };
    useOpenChangeComplete({
      open: visible,
      ref: store4.context.clearRef,
      onComplete() {
        if (!visible) {
          setMounted(false);
        }
      }
    });
    const element = useRenderElement("button", componentProps, {
      state: state2,
      ref: [forwardedRef, buttonRef, store4.context.clearRef],
      props: [{
        tabIndex: -1,
        children: "x",
        // Avoid stealing focus from the input.
        onMouseDown(event) {
          event.preventDefault();
        },
        onClick(event) {
          if (disabled2 || readOnly) {
            return;
          }
          const type = store4.context.keyboardActiveRef.current ? reason_parts_exports.keyboard : reason_parts_exports.pointer;
          store4.context.setInputValue("", createChangeEventDetails(reason_parts_exports.clearPress, event.nativeEvent));
          if (selectionMode !== "none") {
            store4.context.setSelectedValue(Array.isArray(selectedValue) ? [] : null, createChangeEventDetails(reason_parts_exports.clearPress, event.nativeEvent));
            store4.context.setIndices({
              activeIndex: null,
              selectedIndex: null,
              type
            });
          } else {
            store4.context.setIndices({
              activeIndex: null,
              type
            });
          }
          store4.context.inputRef.current?.focus();
        }
      }, elementProps, getButtonProps],
      stateAttributesMapping
    });
    const shouldRender = keepMounted || mounted;
    if (!shouldRender) {
      return null;
    }
    return element;
  });
  if (true) ComboboxClear.displayName = "ComboboxClear";

  // node_modules/@base-ui/react/combobox/list/ComboboxList.mjs
  var React67 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/combobox/collection/ComboboxCollection.mjs
  var React66 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/combobox/collection/GroupCollectionContext.mjs
  var React65 = __toESM(require_react(), 1);
  var import_jsx_runtime107 = __toESM(require_jsx_runtime(), 1);
  var GroupCollectionContext = /* @__PURE__ */ React65.createContext(null);
  if (true) GroupCollectionContext.displayName = "GroupCollectionContext";
  function useGroupCollectionContext() {
    return React65.useContext(GroupCollectionContext);
  }
  function GroupCollectionProvider(props) {
    const {
      children,
      items
    } = props;
    const contextValue = React65.useMemo(() => ({
      items
    }), [items]);
    return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(GroupCollectionContext.Provider, {
      value: contextValue,
      children
    });
  }

  // node_modules/@base-ui/react/combobox/collection/ComboboxCollection.mjs
  var import_jsx_runtime108 = __toESM(require_jsx_runtime(), 1);
  function ComboboxCollection(props) {
    const {
      children
    } = props;
    const {
      filteredItems
    } = useComboboxDerivedItemsContext();
    const groupContext = useGroupCollectionContext();
    const itemsToRender = groupContext ? groupContext.items : filteredItems;
    return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(React66.Fragment, {
      children: itemsToRender.map(children)
    });
  }

  // node_modules/@base-ui/react/combobox/list/ComboboxList.mjs
  var import_jsx_runtime109 = __toESM(require_jsx_runtime(), 1);
  var ComboboxList = /* @__PURE__ */ React67.forwardRef(function ComboboxList2(componentProps, forwardedRef) {
    var _ComboboxCollection;
    const {
      render: render5,
      className,
      style,
      children,
      ...elementProps
    } = componentProps;
    const store4 = useComboboxRootContext();
    const floatingRootContext = useComboboxFloatingContext();
    const hasPositionerContext = Boolean(useComboboxPositionerContext(true));
    const {
      filteredItems,
      hasItems
    } = useComboboxDerivedItemsContext();
    const selectionMode = store4.useState("selectionMode");
    const grid = store4.useState("grid");
    const readOnly = store4.useState("readOnly");
    const listProps = store4.useState("listProps");
    const virtualized = store4.useState("virtualized");
    const forceMounted = store4.useState("forceMounted");
    const multiple = selectionMode === "multiple";
    const empty = filteredItems.length === 0;
    const setPositionerElement = useStableCallback((element2) => {
      store4.set("positionerElement", element2);
    });
    const setListElement = useStableCallback((element2) => {
      store4.set("listElement", element2);
    });
    const resolvedChildren = React67.useMemo(() => {
      if (typeof children === "function") {
        return _ComboboxCollection || (_ComboboxCollection = /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(ComboboxCollection, {
          children
        }));
      }
      return children;
    }, [children]);
    const state2 = {
      empty
    };
    const floatingId = floatingRootContext.useState("floatingId");
    const element = useRenderElement("div", componentProps, {
      state: state2,
      ref: [forwardedRef, setListElement, hasPositionerContext ? null : setPositionerElement],
      props: [listProps, {
        children: resolvedChildren,
        tabIndex: -1,
        id: floatingId,
        role: grid ? "grid" : "listbox",
        "aria-multiselectable": multiple ? "true" : void 0,
        // On a grid the attribute describes cell editability, not selection, so it's left to the
        // combobox element in that mode.
        "aria-readonly": !grid && readOnly ? true : void 0,
        onKeyDown(event) {
          if (store4.state.disabled || store4.state.readOnly) {
            return;
          }
          if (event.key === "Enter") {
            const activeIndex = store4.state.activeIndex;
            if (activeIndex == null) {
              return;
            }
            stopEvent(event);
            clickHighlightedItem(store4, activeIndex, event.nativeEvent);
          }
        },
        onKeyDownCapture() {
          store4.context.keyboardActiveRef.current = true;
        },
        onPointerMoveCapture() {
          store4.context.keyboardActiveRef.current = false;
        }
      }, elementProps]
    });
    if (virtualized) {
      return element;
    }
    const labelsRef = hasItems && !forceMounted ? void 0 : store4.context.labelsRef;
    return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(CompositeList, {
      elementsRef: store4.context.listRef,
      labelsRef,
      children: element
    });
  });
  if (true) ComboboxList.displayName = "ComboboxList";

  // node_modules/@base-ui/react/combobox/status/ComboboxStatus.mjs
  var React69 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/combobox/utils/useInitialLiveRegionTextMutation.mjs
  var React68 = __toESM(require_react(), 1);
  var LIVE_REGION_MARKER = "\u2060";
  var INITIAL_LIVE_REGION_TEXT_MUTATION_RESET_DELAY = 200;
  function findLastTextNode(root) {
    const walker = root.ownerDocument.createTreeWalker(root, NodeFilter.SHOW_TEXT);
    let lastTextNode = null;
    while (walker.nextNode()) {
      const textNode = walker.currentNode;
      if (textNode.nodeValue !== "") {
        lastTextNode = textNode;
      }
    }
    return lastTextNode;
  }
  function useInitialLiveRegionTextMutation() {
    const timeout = useTimeout();
    const rootRef = React68.useRef(null);
    React68.useEffect(() => {
      if (parts_exports.os.ios) {
        return void 0;
      }
      const root = rootRef.current;
      if (root == null) {
        return void 0;
      }
      const textNode = findLastTextNode(root);
      if (textNode == null) {
        return void 0;
      }
      const originalValue = textNode.data;
      const markedValue = `${originalValue}${LIVE_REGION_MARKER}`;
      textNode.nodeValue = markedValue;
      timeout.start(INITIAL_LIVE_REGION_TEXT_MUTATION_RESET_DELAY, () => {
        if (textNode.nodeValue === markedValue) {
          textNode.nodeValue = originalValue;
        }
      });
      return () => {
        timeout.clear();
        if (textNode.nodeValue === markedValue) {
          textNode.nodeValue = originalValue;
        }
      };
    }, [rootRef, timeout]);
    return rootRef;
  }

  // node_modules/@base-ui/react/combobox/status/ComboboxStatus.mjs
  var ComboboxStatus = /* @__PURE__ */ React69.forwardRef(function ComboboxStatus2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      children: childrenProp,
      ...elementProps
    } = componentProps;
    const statusRef = useInitialLiveRegionTextMutation();
    return useRenderElement("div", componentProps, {
      ref: [forwardedRef, statusRef],
      props: [{
        children: childrenProp,
        role: "status",
        "aria-live": "polite",
        "aria-atomic": true
      }, elementProps]
    });
  });
  if (true) ComboboxStatus.displayName = "ComboboxStatus";

  // node_modules/@base-ui/react/combobox/portal/ComboboxPortal.mjs
  var React71 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/combobox/portal/ComboboxPortalContext.mjs
  var React70 = __toESM(require_react(), 1);
  var ComboboxPortalContext = /* @__PURE__ */ React70.createContext(void 0);
  if (true) ComboboxPortalContext.displayName = "ComboboxPortalContext";
  function useComboboxPortalContext() {
    const context = React70.useContext(ComboboxPortalContext);
    if (context === void 0) {
      throw new Error(true ? "Base UI: <Combobox.Portal> is missing." : formatErrorMessage_default(20));
    }
    return context;
  }

  // node_modules/@base-ui/react/combobox/portal/ComboboxPortal.mjs
  var import_jsx_runtime110 = __toESM(require_jsx_runtime(), 1);
  var ComboboxPortal = /* @__PURE__ */ React71.forwardRef(function ComboboxPortal2(props, forwardedRef) {
    const {
      keepMounted = false,
      ...portalProps
    } = props;
    const store4 = useComboboxRootContext();
    const mounted = store4.useState("mounted");
    const forceMounted = store4.useState("forceMounted");
    const shouldRender = mounted || keepMounted || forceMounted;
    if (!shouldRender) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(ComboboxPortalContext.Provider, {
      value: keepMounted,
      children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(FloatingPortal, {
        ref: forwardedRef,
        ...portalProps
      })
    });
  });
  if (true) ComboboxPortal.displayName = "ComboboxPortal";

  // node_modules/@base-ui/react/combobox/backdrop/ComboboxBackdrop.mjs
  var React72 = __toESM(require_react(), 1);
  var stateAttributesMapping2 = {
    ...popupStateMapping,
    ...transitionStatusMapping
  };
  var ComboboxBackdrop = /* @__PURE__ */ React72.forwardRef(function ComboboxBackdrop2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      ...elementProps
    } = componentProps;
    const store4 = useComboboxRootContext();
    const open3 = store4.useState("open");
    const mounted = store4.useState("mounted");
    const transitionStatus = store4.useState("transitionStatus");
    const state2 = {
      open: open3,
      transitionStatus
    };
    return useRenderElement("div", componentProps, {
      state: state2,
      ref: forwardedRef,
      stateAttributesMapping: stateAttributesMapping2,
      props: [{
        role: "presentation",
        hidden: !mounted,
        style: {
          userSelect: "none",
          WebkitUserSelect: "none"
        }
      }, elementProps]
    });
  });
  if (true) ComboboxBackdrop.displayName = "ComboboxBackdrop";

  // node_modules/@base-ui/react/combobox/positioner/ComboboxPositioner.mjs
  var React75 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/internals/useAnchorPositioning.mjs
  var React73 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/floating-ui-react/middleware/arrow.mjs
  var baseArrow = (options) => ({
    name: "arrow",
    options,
    async fn(state2) {
      const {
        x: x2,
        y: y3,
        placement,
        rects,
        platform: platform3,
        elements: elements2,
        middlewareData
      } = state2;
      const {
        element,
        padding = 0,
        offsetParent = "real"
      } = evaluate(options, state2) || {};
      if (element == null) {
        return {};
      }
      const paddingObject = getPaddingObject(padding);
      const coords = {
        x: x2,
        y: y3
      };
      const axis = getAlignmentAxis(placement);
      const length2 = getAxisLength(axis);
      const arrowDimensions = await platform3.getDimensions(element);
      const isYAxis = axis === "y";
      const minProp = isYAxis ? "top" : "left";
      const maxProp = isYAxis ? "bottom" : "right";
      const clientProp = isYAxis ? "clientHeight" : "clientWidth";
      const endDiff = rects.reference[length2] + rects.reference[axis] - coords[axis] - rects.floating[length2];
      const startDiff = coords[axis] - rects.reference[axis];
      const arrowOffsetParent = offsetParent === "real" ? await platform3.getOffsetParent?.(element) : elements2.floating;
      let clientSize = elements2.floating[clientProp] || rects.floating[length2];
      if (!clientSize || !await platform3.isElement?.(arrowOffsetParent)) {
        clientSize = elements2.floating[clientProp] || rects.floating[length2];
      }
      const centerToReference = endDiff / 2 - startDiff / 2;
      const largestPossiblePadding = clientSize / 2 - arrowDimensions[length2] / 2 - 1;
      const minPadding = Math.min(paddingObject[minProp], largestPossiblePadding);
      const maxPadding = Math.min(paddingObject[maxProp], largestPossiblePadding);
      const min4 = minPadding;
      const max4 = clientSize - arrowDimensions[length2] - maxPadding;
      const center = clientSize / 2 - arrowDimensions[length2] / 2 + centerToReference;
      const offset4 = clamp(min4, center, max4);
      const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length2] / 2 - (center < min4 ? minPadding : maxPadding) - arrowDimensions[length2] / 2 < 0;
      const alignmentOffset = shouldAddOffset ? center < min4 ? center - min4 : center - max4 : 0;
      return {
        [axis]: coords[axis] + alignmentOffset,
        data: {
          [axis]: offset4,
          centerOffset: center - offset4 - alignmentOffset,
          ...shouldAddOffset && {
            alignmentOffset
          }
        },
        reset: shouldAddOffset
      };
    }
  });
  var arrow4 = (options, deps) => {
    const {
      name: name2,
      fn
    } = baseArrow(options);
    return {
      name: name2,
      fn,
      options: [options, deps]
    };
  };

  // node_modules/@base-ui/react/utils/hideMiddleware.mjs
  var hide4 = {
    name: "hide",
    async fn(state2) {
      const {
        width,
        height,
        x: x2,
        y: y3
      } = state2.rects.reference;
      const anchorHidden2 = width === 0 && height === 0 && x2 === 0 && y3 === 0;
      const overflow = await state2.platform.detectOverflow(state2, {
        elementContext: "reference"
      });
      const referenceHidden = overflow.top - height >= 0 || overflow.right - width >= 0 || overflow.bottom - height >= 0 || overflow.left - width >= 0;
      return {
        data: {
          referenceHidden: referenceHidden || anchorHidden2
        }
      };
    }
  };

  // node_modules/@base-ui/react/utils/adaptiveOriginConstants.mjs
  var DEFAULT_SIDES = {
    sideX: "left",
    sideY: "top"
  };

  // node_modules/@base-ui/react/utils/CommonPositionerCssVars.mjs
  var availableWidth = "--available-width";
  var availableHeight = "--available-height";
  var anchorWidth = "--anchor-width";
  var anchorHeight = "--anchor-height";
  var transformOrigin = "--transform-origin";
  var positionerWidth = "--positioner-width";
  var positionerHeight = "--positioner-height";

  // node_modules/@base-ui/react/internals/useAnchorPositioning.mjs
  var AVAILABLE_WIDTH_VAR = availableWidth;
  var AVAILABLE_HEIGHT_VAR = availableHeight;
  function getLogicalSide(sideParam, renderedSide, isRtl) {
    const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end";
    const logicalRight = isRtl ? "inline-start" : "inline-end";
    const logicalLeft = isRtl ? "inline-end" : "inline-start";
    return {
      top: "top",
      right: isLogicalSideParam ? logicalRight : "right",
      bottom: "bottom",
      left: isLogicalSideParam ? logicalLeft : "left"
    }[renderedSide];
  }
  function getOffsetData(state2, sideParam, isRtl) {
    const {
      rects,
      placement
    } = state2;
    const data = {
      side: getLogicalSide(sideParam, getSide(placement), isRtl),
      align: getAlignment(placement) || "center",
      anchor: {
        width: rects.reference.width,
        height: rects.reference.height
      },
      positioner: {
        width: rects.floating.width,
        height: rects.floating.height
      }
    };
    return data;
  }
  function useAnchorPositioning(params) {
    return useAnchorPositioningWithHook(params, useBaseUIFloating);
  }
  function useAnchorPositioningWithHook(params, useFloatingHook) {
    const {
      // Public parameters
      anchor,
      positionMethod = "absolute",
      side: sideParam = "bottom",
      sideOffset = 0,
      align = "center",
      alignOffset = 0,
      collisionBoundary,
      collisionPadding: collisionPaddingParam = 5,
      sticky = false,
      arrowPadding = 5,
      disableAnchorTracking = false,
      inline: inlineMiddleware,
      // Private parameters
      keepMounted = false,
      floatingRootContext,
      mounted,
      collisionAvoidance,
      shift: shift4,
      nodeId,
      adaptiveOrigin: adaptiveOrigin2,
      lazyFlip = false,
      externalTree
    } = params;
    const [mountSide, setMountSide] = React73.useState(null);
    if (!mounted && mountSide !== null) {
      setMountSide(null);
    }
    const collisionAvoidanceSide = collisionAvoidance.side || "flip";
    const collisionAvoidanceAlign = collisionAvoidance.align || "flip";
    const collisionAvoidanceFallbackAxisSide = collisionAvoidance.fallbackAxisSide || "end";
    const shiftCrossAxis = shift4?.crossAxis ?? false;
    const shiftRootBoundary = shift4?.rootBoundary;
    const anchorFn = typeof anchor === "function" ? anchor : void 0;
    const anchorFnCallback = useStableCallback(anchorFn);
    const anchorDep = anchorFn ? anchorFnCallback : anchor;
    const anchorValueRef = useValueAsRef(anchor);
    const mountedRef = useValueAsRef(mounted);
    const direction = useDirection();
    const isRtl = direction === "rtl";
    const side = mountSide || {
      top: "top",
      right: "right",
      bottom: "bottom",
      left: "left",
      "inline-end": isRtl ? "left" : "right",
      "inline-start": isRtl ? "right" : "left"
    }[sideParam];
    const placement = align === "center" ? side : `${side}-${align}`;
    let collisionPadding = collisionPaddingParam;
    if (typeof collisionPadding === "number") {
      collisionPadding = {
        top: collisionPadding,
        right: collisionPadding,
        bottom: collisionPadding,
        left: collisionPadding
      };
    } else if (collisionPadding) {
      collisionPadding = {
        top: collisionPadding.top || 0,
        right: collisionPadding.right || 0,
        bottom: collisionPadding.bottom || 0,
        left: collisionPadding.left || 0
      };
    }
    const bias = 1;
    const biasTop = sideParam === "bottom" ? bias : 0;
    const biasBottom = sideParam === "top" ? bias : 0;
    const biasLeft = sideParam === "right" ? bias : 0;
    const biasRight = sideParam === "left" ? bias : 0;
    const commonCollisionProps = {
      boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary,
      padding: collisionPadding
    };
    const arrowRef = React73.useRef(null);
    const sideOffsetRef = useValueAsRef(sideOffset);
    const alignOffsetRef = useValueAsRef(alignOffset);
    const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0;
    const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0;
    const middleware = [];
    if (inlineMiddleware) {
      middleware.push(inlineMiddleware);
    }
    middleware.push(offset3((state2) => {
      const data = getOffsetData(state2, sideParam, isRtl);
      const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current;
      const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current;
      return {
        mainAxis: sideAxis,
        crossAxis: alignAxis,
        alignmentAxis: alignAxis
      };
    }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam]));
    const shiftDisabled = collisionAvoidanceAlign === "none" && collisionAvoidanceSide !== "shift";
    const crossAxisShiftEnabled = !shiftDisabled && (sticky || shiftCrossAxis || collisionAvoidanceSide === "shift");
    const flipMiddleware = collisionAvoidanceSide === "none" ? null : flip3({
      ...commonCollisionProps,
      // Ensure the popup flips if it's been limited by its --available-height and it resizes.
      // Since the size() padding is smaller than the flip() padding, flip() will take precedence.
      padding: {
        top: collisionPadding.top + bias + biasTop,
        right: collisionPadding.right + bias + biasRight,
        bottom: collisionPadding.bottom + bias + biasBottom,
        left: collisionPadding.left + bias + biasLeft
      },
      mainAxis: !shiftCrossAxis && collisionAvoidanceSide === "flip",
      crossAxis: collisionAvoidanceAlign === "flip" ? "alignment" : false,
      fallbackAxisSideDirection: collisionAvoidanceFallbackAxisSide
    });
    const shiftMiddleware = shiftDisabled ? null : shift3({
      ...commonCollisionProps,
      // Use the Layout Viewport to avoid shifting around when pinch-zooming.
      rootBoundary: shiftRootBoundary,
      mainAxis: collisionAvoidanceAlign !== "none",
      crossAxis: crossAxisShiftEnabled,
      limiter: sticky || shiftCrossAxis ? void 0 : limitShift3((limitData) => {
        if (!arrowRef.current) {
          return {};
        }
        const {
          width,
          height
        } = arrowRef.current.getBoundingClientRect();
        const sideAxis = getSideAxis(getSide(limitData.placement));
        const arrowSize = sideAxis === "y" ? width : height;
        const offsetAmount = sideAxis === "y" ? collisionPadding.left + collisionPadding.right : collisionPadding.top + collisionPadding.bottom;
        return {
          offset: arrowSize / 2 + offsetAmount / 2
        };
      })
    }, [commonCollisionProps, sticky, shiftCrossAxis, shiftRootBoundary, collisionPadding, collisionAvoidanceAlign]);
    if (collisionAvoidanceSide === "shift" || collisionAvoidanceAlign === "shift" || align === "center") {
      middleware.push(shiftMiddleware, flipMiddleware);
    } else {
      middleware.push(flipMiddleware, shiftMiddleware);
    }
    middleware.push(size3({
      ...commonCollisionProps,
      apply({
        elements: {
          floating
        },
        availableWidth: availableWidth2,
        availableHeight: availableHeight2,
        rects
      }) {
        if (!mountedRef.current) {
          return;
        }
        const floatingStyle = floating.style;
        floatingStyle.setProperty(AVAILABLE_WIDTH_VAR, `${availableWidth2}px`);
        floatingStyle.setProperty(AVAILABLE_HEIGHT_VAR, `${availableHeight2}px`);
        const dpr = getWindow(floating).devicePixelRatio || 1;
        const {
          x: x3,
          y: y4,
          width,
          height
        } = rects.reference;
        const anchorWidth2 = (Math.round((x3 + width) * dpr) - Math.round(x3 * dpr)) / dpr;
        const anchorHeight2 = (Math.round((y4 + height) * dpr) - Math.round(y4 * dpr)) / dpr;
        floatingStyle.setProperty(anchorWidth, `${anchorWidth2}px`);
        floatingStyle.setProperty(anchorHeight, `${anchorHeight2}px`);
      }
    }), arrow4((state2) => ({
      // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set,
      // we'll create a fake element.
      element: arrowRef.current || ownerDocument(state2.elements.floating).createElement("div"),
      // No padding for the fake arrow: it would displace aligned popups on narrow anchors.
      padding: arrowRef.current ? arrowPadding : 0,
      offsetParent: "floating"
    }), [arrowPadding]), {
      name: "transformOrigin",
      fn(state2) {
        const {
          elements: {
            floating
          },
          middlewareData: middlewareData2,
          placement: renderedPlacement2,
          platform: platform3,
          rects,
          y: y4
        } = state2;
        const renderedSide2 = getSide(renderedPlacement2);
        const renderedAlign2 = getAlignment(renderedPlacement2);
        const isVertical = getSideAxis(renderedSide2) === "y";
        const arrowEl = arrowRef.current;
        const sideOffsetValue = typeof sideOffset === "function" ? sideOffset(getOffsetData(state2, sideParam, isRtl)) : sideOffset;
        let crossOrigin;
        if (!arrowEl && renderedAlign2 && Math.abs(isVertical ? middlewareData2.shift?.x || 0 : middlewareData2.shift?.y || 0) <= 1) {
          crossOrigin = renderedAlign2 === "start" === (isVertical && platform3.isRTL?.(floating) === true) ? "100%" : "0%";
        } else {
          const arrowOffset = isVertical ? middlewareData2.arrow?.x || 0 : middlewareData2.arrow?.y || 0;
          const arrowSize = isVertical ? arrowEl?.clientWidth || 0 : arrowEl?.clientHeight || 0;
          crossOrigin = `${arrowOffset + arrowSize / 2}px`;
        }
        let sideOrigin = renderedSide2 === "top" || renderedSide2 === "left" ? `calc(100% + ${sideOffsetValue}px)` : `${-sideOffsetValue}px`;
        if (crossAxisShiftEnabled && isVertical && Math.abs(middlewareData2.shift?.y || 0) > sideOffsetValue) {
          sideOrigin = `${rects.reference.y + rects.reference.height / 2 - y4}px`;
        }
        floating.style.setProperty(transformOrigin, isVertical ? `${crossOrigin} ${sideOrigin}` : `${sideOrigin} ${crossOrigin}`);
        return {};
      }
    }, hide4, adaptiveOrigin2);
    useIsoLayoutEffect(() => {
      if (!mounted && floatingRootContext) {
        floatingRootContext.update({
          referenceElement: null,
          floatingElement: null,
          domReferenceElement: null,
          positionReference: null
        });
      }
    }, [mounted, floatingRootContext]);
    const autoUpdateOptions = React73.useMemo(() => ({
      ancestorScroll: !disableAnchorTracking,
      elementResize: !disableAnchorTracking && typeof ResizeObserver !== "undefined",
      layoutShift: !disableAnchorTracking && typeof IntersectionObserver !== "undefined"
    }), [disableAnchorTracking]);
    const {
      refs,
      elements: elements2,
      x: x2,
      y: y3,
      middlewareData,
      update: update4,
      placement: renderedPlacement,
      context,
      isPositioned,
      floatingStyles: originalFloatingStyles
    } = useFloatingHook({
      rootContext: floatingRootContext,
      open: keepMounted ? mounted : void 0,
      placement,
      middleware,
      strategy: positionMethod,
      whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions),
      nodeId,
      externalTree
    });
    const {
      sideX,
      sideY
    } = middlewareData.adaptiveOrigin || DEFAULT_SIDES;
    const resolvedPosition = isPositioned ? positionMethod : "fixed";
    const floatingStyles = React73.useMemo(() => {
      let base;
      if (!isPositioned) {
        base = {
          position: resolvedPosition,
          top: 0,
          left: 0
        };
      } else if (adaptiveOrigin2) {
        base = {
          position: resolvedPosition,
          [sideX]: x2,
          [sideY]: y3
        };
      } else {
        base = {
          ...originalFloatingStyles,
          position: resolvedPosition
        };
      }
      base[AVAILABLE_WIDTH_VAR] = "100vw";
      base[AVAILABLE_HEIGHT_VAR] = "100vh";
      if (!isPositioned) {
        base.opacity = 0;
      }
      return base;
    }, [adaptiveOrigin2, resolvedPosition, sideX, x2, sideY, y3, originalFloatingStyles, isPositioned]);
    const registeredPositionReferenceRef = React73.useRef(null);
    useIsoLayoutEffect(() => {
      if (!mounted) {
        return;
      }
      const anchorValue = anchorValueRef.current;
      const resolvedAnchor = typeof anchorValue === "function" ? anchorValue() : anchorValue;
      const unwrappedElement = (isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor) || null;
      const finalAnchor = unwrappedElement || null;
      if (finalAnchor !== registeredPositionReferenceRef.current) {
        refs.setPositionReference(finalAnchor);
        registeredPositionReferenceRef.current = finalAnchor;
      }
    }, [mounted, refs, anchorDep, anchorValueRef]);
    React73.useEffect(() => {
      if (!mounted) {
        return;
      }
      const anchorValue = anchorValueRef.current;
      if (typeof anchorValue === "function") {
        return;
      }
      if (isRef(anchorValue) && anchorValue.current !== registeredPositionReferenceRef.current) {
        refs.setPositionReference(anchorValue.current);
        registeredPositionReferenceRef.current = anchorValue.current;
      }
    }, [mounted, refs, anchorDep, anchorValueRef]);
    React73.useEffect(() => {
      if (keepMounted && mounted && elements2.reference && elements2.floating) {
        return autoUpdate(elements2.reference, elements2.floating, update4, autoUpdateOptions);
      }
      return void 0;
    }, [keepMounted, mounted, elements2, update4, autoUpdateOptions]);
    const renderedSide = getSide(renderedPlacement);
    const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl);
    const renderedAlign = getAlignment(renderedPlacement) || "center";
    const anchorHidden2 = Boolean(middlewareData.hide?.referenceHidden);
    useIsoLayoutEffect(() => {
      if (lazyFlip && mounted && isPositioned && renderedSide !== side) {
        setMountSide(renderedSide);
      }
    }, [lazyFlip, mounted, isPositioned, renderedSide, side]);
    const arrowStyles = React73.useMemo(() => ({
      position: "absolute",
      top: middlewareData.arrow?.y,
      left: middlewareData.arrow?.x
    }), [middlewareData.arrow]);
    const arrowUncentered = middlewareData.arrow?.centerOffset !== 0;
    return React73.useMemo(() => ({
      positionerStyles: floatingStyles,
      arrowStyles,
      arrowRef,
      arrowUncentered,
      side: logicalRenderedSide,
      align: renderedAlign,
      physicalSide: renderedSide,
      anchorHidden: anchorHidden2,
      refs,
      context,
      isPositioned,
      update: update4
    }), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, renderedSide, anchorHidden2, refs, context, isPositioned, update4]);
  }
  function isRef(param) {
    return param != null && "current" in param;
  }

  // node_modules/@base-ui/react/internals/getDisabledMountTransitionStyles.mjs
  function getDisabledMountTransitionStyles(transitionStatus) {
    return transitionStatus === "starting" ? DISABLED_TRANSITIONS_STYLE : EMPTY_OBJECT2;
  }

  // node_modules/@base-ui/react/utils/usePositioner.mjs
  function usePositioner(componentProps, state2, {
    styles,
    transitionStatus,
    props,
    refs,
    hidden,
    inert = false
  }) {
    const style = {
      ...styles
    };
    if (inert) {
      style.pointerEvents = "none";
    }
    return useRenderElement("div", componentProps, {
      state: state2,
      ref: refs,
      props: [{
        role: "presentation",
        hidden,
        style
      }, getDisabledMountTransitionStyles(transitionStatus), props],
      stateAttributesMapping: popupStateMapping
    });
  }

  // node_modules/@base-ui/react/utils/useAnchoredPopupScrollLock.mjs
  var React74 = __toESM(require_react(), 1);
  var VIEWPORT_WIDTH_TOLERANCE_PX = 20;
  function useAnchoredPopupScrollLock(enabled, touchOpen, positionerElement, referenceElement) {
    const [touchOpenShouldLockScroll, setTouchOpenShouldLockScroll] = React74.useState(false);
    useIsoLayoutEffect(() => {
      if (!enabled || !touchOpen || positionerElement == null) {
        setTouchOpenShouldLockScroll(false);
        return;
      }
      const viewportWidth = ownerDocument(positionerElement).documentElement.clientWidth;
      const popupWidth2 = positionerElement.offsetWidth;
      setTouchOpenShouldLockScroll(viewportWidth > 0 && popupWidth2 > 0 && popupWidth2 >= viewportWidth - VIEWPORT_WIDTH_TOLERANCE_PX);
    }, [enabled, touchOpen, positionerElement]);
    useScrollLock(enabled && (!touchOpen || touchOpenShouldLockScroll), referenceElement);
  }

  // node_modules/@base-ui/react/combobox/positioner/ComboboxPositioner.mjs
  var import_jsx_runtime111 = __toESM(require_jsx_runtime(), 1);
  var ComboboxPositioner = /* @__PURE__ */ React75.forwardRef(function ComboboxPositioner2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      anchor,
      // `useAnchorPositioning` applies the same defaults to the undefined values; the names
      // remain destructured to exclude the props from `elementProps`.
      positionMethod,
      side,
      align,
      sideOffset,
      alignOffset,
      collisionBoundary = "clipping-ancestors",
      collisionPadding,
      arrowPadding,
      sticky,
      disableAnchorTracking = false,
      collisionAvoidance = DROPDOWN_COLLISION_AVOIDANCE,
      style: styleProp,
      ...elementProps
    } = componentProps;
    const store4 = useComboboxRootContext();
    const floatingRootContext = useComboboxFloatingContext();
    const keepMounted = useComboboxPortalContext();
    const modal = store4.useState("modal");
    const open3 = store4.useState("open");
    const mounted = store4.useState("mounted");
    const openMethod = store4.useState("openMethod");
    const positionerElement = store4.useState("positionerElement");
    const triggerElement = store4.useState("triggerElement");
    const inputElement = store4.useState("inputElement");
    const inputGroupElement = store4.useState("inputGroupElement");
    const inputInsidePopup = store4.useState("inputInsidePopup");
    const transitionStatus = store4.useState("transitionStatus");
    const empty = useListEmpty();
    const resolvedAnchor = anchor ?? (inputInsidePopup ? triggerElement : inputGroupElement ?? inputElement);
    const positioning = useAnchorPositioning({
      anchor: resolvedAnchor,
      floatingRootContext,
      positionMethod,
      mounted,
      side,
      sideOffset,
      align,
      alignOffset,
      arrowPadding,
      collisionBoundary,
      collisionPadding,
      sticky,
      disableAnchorTracking,
      keepMounted,
      collisionAvoidance,
      lazyFlip: true
    });
    useAnchoredPopupScrollLock(open3 && modal, openMethod === "touch", positionerElement, triggerElement);
    const state2 = {
      open: open3,
      side: positioning.side,
      align: positioning.align,
      anchorHidden: positioning.anchorHidden,
      empty
    };
    useIsoLayoutEffect(() => {
      store4.set("popupSide", positioning.side);
    }, [store4, positioning.side]);
    const setPositionerElement = useStableCallback((element2) => {
      store4.set("positionerElement", element2);
    });
    const element = usePositioner(componentProps, state2, {
      styles: positioning.positionerStyles,
      transitionStatus,
      props: elementProps,
      refs: [forwardedRef, setPositionerElement],
      hidden: !mounted,
      inert: !open3
    });
    return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(ComboboxPositionerContext.Provider, {
      value: positioning,
      children: [mounted && modal && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(InternalBackdrop, {
        inert: inertValue(!open3),
        cutout: inputGroupElement ?? inputElement ?? triggerElement
      }), element]
    });
  });
  if (true) ComboboxPositioner.displayName = "ComboboxPositioner";

  // node_modules/@base-ui/react/combobox/popup/ComboboxPopup.mjs
  var React76 = __toESM(require_react(), 1);
  var import_jsx_runtime112 = __toESM(require_jsx_runtime(), 1);
  var stateAttributesMapping3 = {
    ...popupStateMapping,
    ...transitionStatusMapping
  };
  var ComboboxPopup = /* @__PURE__ */ React76.forwardRef(function ComboboxPopup2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      initialFocus,
      finalFocus,
      ...elementProps
    } = componentProps;
    const store4 = useComboboxRootContext();
    const positioning = useComboboxPositionerContext();
    const floatingRootContext = useComboboxFloatingContext();
    const mounted = store4.useState("mounted");
    const open3 = store4.useState("open");
    const openMethod = store4.useState("openMethod");
    const popupProps = store4.useState("popupProps");
    const transitionStatus = store4.useState("transitionStatus");
    const inputInsidePopup = store4.useState("inputInsidePopup");
    const inputElement = store4.useState("inputElement");
    const modal = store4.useState("modal");
    const rootId = store4.useState("id");
    const empty = useListEmpty();
    const popupId = elementProps.id ?? (inputInsidePopup ? getComboboxPopupId(rootId) : void 0);
    useIsoLayoutEffect(() => {
      store4.set("popupId", store4.context.popupRef.current?.id || popupId);
      return () => {
        store4.set("popupId", void 0);
      };
    }, [store4, popupId]);
    useOpenChangeComplete({
      open: open3,
      ref: store4.context.popupRef,
      onComplete() {
        if (open3) {
          store4.context.onOpenChangeComplete(true);
        }
      }
    });
    const state2 = {
      open: open3,
      side: positioning.side,
      align: positioning.align,
      anchorHidden: positioning.anchorHidden,
      transitionStatus,
      empty
    };
    const element = useRenderElement("div", componentProps, {
      state: state2,
      ref: [forwardedRef, store4.context.popupRef],
      props: [popupProps, {
        id: popupId,
        role: inputInsidePopup ? "dialog" : "presentation",
        onFocus(event) {
          const target = getTarget(event.nativeEvent);
          if (openMethod !== "touch" && (contains(store4.state.listElement, target) || target === event.currentTarget)) {
            store4.context.inputRef.current?.focus();
          }
        }
      }, getDisabledMountTransitionStyles(transitionStatus), elementProps],
      stateAttributesMapping: stateAttributesMapping3
    });
    const computedDefaultInitialFocus = inputInsidePopup ? (interactionType) => interactionType === "touch" ? store4.context.popupRef.current : inputElement : false;
    const resolvedInitialFocus = initialFocus === void 0 ? computedDefaultInitialFocus : initialFocus;
    let resolvedFinalFocus;
    if (finalFocus != null) {
      resolvedFinalFocus = finalFocus;
    } else {
      resolvedFinalFocus = inputInsidePopup ? void 0 : false;
    }
    const focusManagerModal = !inputInsidePopup || modal;
    return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(FloatingFocusManager, {
      context: floatingRootContext,
      disabled: !mounted,
      modal: focusManagerModal,
      openInteractionType: openMethod,
      initialFocus: resolvedInitialFocus,
      returnFocus: resolvedFinalFocus,
      getInsideElements: () => [store4.context.startDismissRef.current, store4.context.endDismissRef.current],
      children: /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(React76.Fragment, {
        children: [element, focusManagerModal && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(ComboboxInternalDismissButton, {
          ref: store4.context.endDismissRef
        })]
      })
    });
  });
  if (true) ComboboxPopup.displayName = "ComboboxPopup";

  // node_modules/@base-ui/react/combobox/arrow/ComboboxArrow.mjs
  var React77 = __toESM(require_react(), 1);
  var ComboboxArrow = /* @__PURE__ */ React77.forwardRef(function ComboboxArrow2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      ...elementProps
    } = componentProps;
    const store4 = useComboboxRootContext();
    const {
      arrowRef,
      side,
      align,
      arrowUncentered,
      arrowStyles
    } = useComboboxPositionerContext();
    const open3 = store4.useState("open");
    const state2 = {
      open: open3,
      side,
      align,
      uncentered: arrowUncentered
    };
    return useRenderElement("div", componentProps, {
      ref: [arrowRef, forwardedRef],
      stateAttributesMapping: popupStateMapping,
      state: state2,
      props: {
        style: arrowStyles,
        "aria-hidden": true,
        ...elementProps
      }
    });
  });
  if (true) ComboboxArrow.displayName = "ComboboxArrow";

  // node_modules/@base-ui/react/combobox/group/ComboboxGroup.mjs
  var React79 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/combobox/group/ComboboxGroupContext.mjs
  var React78 = __toESM(require_react(), 1);
  var ComboboxGroupContext = /* @__PURE__ */ React78.createContext(void 0);
  if (true) ComboboxGroupContext.displayName = "ComboboxGroupContext";
  function useComboboxGroupContext() {
    const context = React78.useContext(ComboboxGroupContext);
    if (context === void 0) {
      throw new Error(true ? "Base UI: ComboboxGroupContext is missing. ComboboxGroup parts must be placed within <Combobox.Group>." : formatErrorMessage_default(18));
    }
    return context;
  }

  // node_modules/@base-ui/react/combobox/group/ComboboxGroup.mjs
  var import_jsx_runtime113 = __toESM(require_jsx_runtime(), 1);
  var ComboboxGroup = /* @__PURE__ */ React79.forwardRef(function ComboboxGroup2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      items,
      ...elementProps
    } = componentProps;
    const store4 = useComboboxRootContext();
    const grid = store4.useState("grid");
    const [labelId, setLabelId] = React79.useState();
    const contextValue = React79.useMemo(() => ({
      labelId,
      setLabelId,
      items
    }), [labelId, setLabelId, items]);
    const element = useRenderElement("div", componentProps, {
      ref: forwardedRef,
      props: [{
        // `group` is not a valid owned element of `grid`, and `row` must be owned
        // by `grid`, `rowgroup`, or `treegrid`.
        role: grid ? "rowgroup" : "group",
        "aria-labelledby": labelId
      }, elementProps]
    });
    const wrappedElement = /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(ComboboxGroupContext.Provider, {
      value: contextValue,
      children: element
    });
    if (items) {
      return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(GroupCollectionProvider, {
        items,
        children: wrappedElement
      });
    }
    return wrappedElement;
  });
  if (true) ComboboxGroup.displayName = "ComboboxGroup";

  // node_modules/@base-ui/react/combobox/group-label/ComboboxGroupLabel.mjs
  var React80 = __toESM(require_react(), 1);
  var ComboboxGroupLabel = /* @__PURE__ */ React80.forwardRef(function ComboboxGroupLabel2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      id: idProp,
      ...elementProps
    } = componentProps;
    const {
      setLabelId
    } = useComboboxGroupContext();
    const id = useBaseUiId(idProp);
    useIsoLayoutEffect(() => {
      setLabelId(id);
      return () => {
        setLabelId((currentId) => currentId === id ? void 0 : currentId);
      };
    }, [id, setLabelId]);
    const element = useRenderElement("div", componentProps, {
      ref: forwardedRef,
      props: [{
        id,
        "aria-hidden": true
      }, elementProps]
    });
    return element;
  });
  if (true) ComboboxGroupLabel.displayName = "ComboboxGroupLabel";

  // node_modules/@base-ui/react/combobox/item/ComboboxItem.mjs
  var React83 = __toESM(require_react(), 1);
  var ReactDOM6 = __toESM(require_react_dom(), 1);

  // node_modules/@base-ui/react/combobox/item/ComboboxItemContext.mjs
  var React81 = __toESM(require_react(), 1);
  var ComboboxItemContext = /* @__PURE__ */ React81.createContext(void 0);
  if (true) ComboboxItemContext.displayName = "ComboboxItemContext";
  function useComboboxItemContext() {
    const context = React81.useContext(ComboboxItemContext);
    if (!context) {
      throw new Error(true ? "Base UI: ComboboxItemContext is missing. ComboboxItem parts must be placed within <Combobox.Item>." : formatErrorMessage_default(19));
    }
    return context;
  }

  // node_modules/@base-ui/react/combobox/row/ComboboxRowContext.mjs
  var React82 = __toESM(require_react(), 1);
  var ComboboxRowContext = /* @__PURE__ */ React82.createContext(false);
  if (true) ComboboxRowContext.displayName = "ComboboxRowContext";
  function useComboboxRowContext() {
    return React82.useContext(ComboboxRowContext);
  }

  // node_modules/@base-ui/react/combobox/item/ComboboxItem.mjs
  var import_jsx_runtime114 = __toESM(require_jsx_runtime(), 1);
  function ComboboxItemInner(props) {
    const {
      componentProps,
      forwardedRef,
      virtualized,
      indexFromFilter
    } = props;
    const {
      render: render5,
      className,
      style,
      value: itemValue = null,
      index: indexProp,
      disabled: disabledProp = false,
      nativeButton = false,
      ...elementProps
    } = componentProps;
    const textRef = React83.useRef(null);
    const listItem = useCompositeListItem({
      guess: true,
      index: indexProp,
      textRef
    });
    const store4 = useComboboxRootContext();
    const isRow = useComboboxRowContext();
    const hasItems = useComboboxHasItemsContext();
    const selectionMode = store4.useState("selectionMode");
    const rootDisabled = store4.useState("disabled");
    const readOnly = store4.useState("readOnly");
    const isItemEqualToValue = store4.useState("isItemEqualToValue");
    const disabled2 = rootDisabled || disabledProp;
    const selectable = selectionMode !== "none";
    const index3 = indexProp ?? indexFromFilter ?? listItem.index;
    const hasRegistered = index3 !== -1;
    const rootId = store4.useState("id");
    const highlighted = store4.useState("isActive", index3);
    const matchesSelectedValue = store4.useState("isSelected", itemValue);
    const itemProps = store4.useState("itemProps");
    const itemRef = React83.useRef(null);
    const id = rootId != null && hasRegistered ? `${rootId}-${index3}` : void 0;
    const selected = matchesSelectedValue && selectable;
    useIsoLayoutEffect(() => {
      const shouldRun = hasRegistered && (virtualized || indexProp != null);
      if (!shouldRun) {
        return void 0;
      }
      const list = store4.context.listRef.current;
      list[index3] = itemRef.current;
      return () => {
        delete list[index3];
      };
    }, [hasRegistered, virtualized, index3, indexProp, store4]);
    useIsoLayoutEffect(() => {
      if (!hasRegistered || hasItems) {
        return void 0;
      }
      const visibleValues = store4.context.valuesRef.current;
      visibleValues[index3] = itemValue;
      return () => {
        delete visibleValues[index3];
      };
    }, [hasRegistered, hasItems, index3, itemValue, store4]);
    useIsoLayoutEffect(() => {
      if (!hasRegistered || hasItems) {
        return;
      }
      const selectedValue = store4.state.selectedValue;
      let nextIndex = store4.state.selectedIndex;
      if (store4.state.selectionMode === "multiple" && Array.isArray(selectedValue)) {
        nextIndex = resolveSelectedIndex(index3, itemValue, store4.context.valuesRef.current, selectedValue, isItemEqualToValue, nextIndex);
      } else if (compareItemEquality(itemValue, selectedValue, isItemEqualToValue)) {
        nextIndex = index3;
      }
      store4.set("selectedIndex", nextIndex);
    }, [hasRegistered, hasItems, store4, index3, itemValue, isItemEqualToValue]);
    const {
      getButtonProps,
      buttonRef
    } = useButton({
      disabled: disabled2,
      focusableWhenDisabled: true,
      native: nativeButton,
      composite: true
    });
    const state2 = {
      disabled: disabled2,
      selected,
      highlighted
    };
    function commitSelection(nativeEvent) {
      function selectItem() {
        store4.context.handleSelection(nativeEvent, itemValue);
      }
      if (store4.state.submitOnItemClick) {
        ReactDOM6.flushSync(selectItem);
        store4.context.requestSubmit();
      } else {
        selectItem();
      }
    }
    const defaultProps = {
      id,
      role: isRow ? "gridcell" : "option",
      "aria-selected": selectable ? selected : void 0,
      // Focusable items steal focus from the input upon mouseup.
      // Warn if the user renders a natively focusable element like `<button>`,
      // as it should be a `<div>` instead.
      tabIndex: void 0,
      onPointerDownCapture(event) {
        if (event.isPrimary) {
          store4.context.pointerDownItemRef.current = event.currentTarget;
        }
        event.preventDefault();
      },
      onMouseDown(event) {
        event.preventDefault();
      },
      onClick(event) {
        if (disabled2 || readOnly) {
          return;
        }
        commitSelection(event.nativeEvent);
      },
      onMouseUp(event) {
        const pointerStartedOnItem = store4.context.pointerDownItemRef.current === event.currentTarget;
        store4.context.pointerDownItemRef.current = null;
        if (disabled2 || readOnly || event.button !== 0 || pointerStartedOnItem || !highlighted) {
          return;
        }
        commitSelection(event.nativeEvent);
      }
    };
    const element = useRenderElement("div", componentProps, {
      ref: [buttonRef, forwardedRef, listItem.ref, itemRef],
      state: state2,
      props: [itemProps, defaultProps, elementProps, getButtonProps]
    });
    const contextValue = React83.useMemo(() => ({
      selected,
      textRef
    }), [selected, textRef]);
    return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(ComboboxItemContext.Provider, {
      value: contextValue,
      children: element
    });
  }
  function ComboboxItemVirtualizedIndex(props) {
    const {
      componentProps,
      forwardedRef
    } = props;
    const store4 = useComboboxRootContext();
    const isItemEqualToValue = store4.useState("isItemEqualToValue");
    const {
      flatFilteredValues
    } = useComboboxDerivedItemsContext();
    const lookupValue = componentProps.value ?? null;
    const indexFromFilter = findItemIndex(flatFilteredValues, lookupValue, isItemEqualToValue);
    return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(ComboboxItemInner, {
      componentProps,
      forwardedRef,
      virtualized: true,
      indexFromFilter
    });
  }
  var ComboboxItem = /* @__PURE__ */ React83.memo(/* @__PURE__ */ React83.forwardRef(function ComboboxItem2(componentProps, forwardedRef) {
    const store4 = useComboboxRootContext();
    const virtualized = store4.useState("virtualized");
    if (virtualized && componentProps.index == null) {
      return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(ComboboxItemVirtualizedIndex, {
        componentProps,
        forwardedRef
      });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(ComboboxItemInner, {
      componentProps,
      forwardedRef,
      virtualized,
      indexFromFilter: void 0
    });
  }));
  if (true) ComboboxItem.displayName = "ComboboxItem";

  // node_modules/@base-ui/react/combobox/row/ComboboxRow.mjs
  var React84 = __toESM(require_react(), 1);
  var import_jsx_runtime115 = __toESM(require_jsx_runtime(), 1);
  var ComboboxRow = /* @__PURE__ */ React84.forwardRef(function ComboboxRow2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      ...elementProps
    } = componentProps;
    const element = useRenderElement("div", componentProps, {
      ref: forwardedRef,
      props: [{
        role: "row"
      }, elementProps]
    });
    return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(ComboboxRowContext.Provider, {
      value: true,
      children: element
    });
  });
  if (true) ComboboxRow.displayName = "ComboboxRow";

  // node_modules/@base-ui/react/combobox/empty/ComboboxEmpty.mjs
  var React85 = __toESM(require_react(), 1);
  var ComboboxEmpty = /* @__PURE__ */ React85.forwardRef(function ComboboxEmpty2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      children: childrenProp,
      ...elementProps
    } = componentProps;
    const {
      filteredItems
    } = useComboboxDerivedItemsContext();
    const store4 = useComboboxRootContext();
    const emptyRef = useInitialLiveRegionTextMutation();
    const children = filteredItems.length === 0 ? childrenProp : null;
    return useRenderElement("div", componentProps, {
      ref: [forwardedRef, store4.context.emptyRef, emptyRef],
      props: [{
        children,
        role: "status",
        "aria-live": "polite",
        "aria-atomic": true
      }, elementProps]
    });
  });
  if (true) ComboboxEmpty.displayName = "ComboboxEmpty";

  // node_modules/@base-ui/react/utils/listbox-separator/ListboxSeparator.mjs
  var React86 = __toESM(require_react(), 1);
  var ListboxSeparator = /* @__PURE__ */ React86.forwardRef(function ListboxSeparator2(componentProps, forwardedRef) {
    const {
      className,
      render: render5,
      orientation = "horizontal",
      style,
      ...elementProps
    } = componentProps;
    const state2 = {
      orientation
    };
    return useRenderElement("div", componentProps, {
      state: state2,
      ref: forwardedRef,
      props: [{
        role: "presentation"
      }, elementProps]
    });
  });
  if (true) ListboxSeparator.displayName = "ListboxSeparator";

  // node_modules/@base-ui/react/combobox/root/utils/useFilteredItems.mjs
  function useFilteredItems() {
    const items = useComboboxDerivedItemsContext();
    return items.filteredItems;
  }

  // node_modules/@base-ui/react/button/Button.mjs
  var React87 = __toESM(require_react(), 1);
  var Button2 = /* @__PURE__ */ React87.forwardRef(function Button3(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      disabled: disabled2 = false,
      focusableWhenDisabled = false,
      nativeButton = true,
      style,
      ...elementProps
    } = componentProps;
    const {
      getButtonProps,
      buttonRef
    } = useButton({
      disabled: disabled2,
      focusableWhenDisabled,
      native: nativeButton
    });
    const state2 = {
      disabled: disabled2
    };
    return useRenderElement("button", componentProps, {
      state: state2,
      ref: [forwardedRef, buttonRef],
      props: [elementProps, getButtonProps]
    });
  });
  if (true) Button2.displayName = "Button";

  // node_modules/@base-ui/react/field/item/FieldItemContext.mjs
  var React88 = __toESM(require_react(), 1);
  var FieldItemContext = /* @__PURE__ */ React88.createContext({
    disabled: false
  });
  if (true) FieldItemContext.displayName = "FieldItemContext";
  function useFieldItemContext() {
    const context = React88.useContext(FieldItemContext);
    return context;
  }

  // node_modules/@base-ui/react/field/root/useFieldValidation.mjs
  var React89 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/field/utils/getCombinedFieldValidityData.mjs
  function getCombinedFieldValidityData(validityData, invalid2) {
    return {
      ...validityData,
      state: {
        ...validityData.state,
        valid: !invalid2 && validityData.state.valid
      }
    };
  }

  // node_modules/@base-ui/react/field/root/useFieldValidation.mjs
  var validityKeys = Object.keys(DEFAULT_VALIDITY_STATE);
  function isEligibleInput(input, formElement) {
    if (input.matches(":disabled")) {
      return false;
    }
    if (!formElement || input.form === formElement) {
      return true;
    }
    return input.form === null && !input.hasAttribute("form");
  }
  function findRepresentativeInput(inputs, formElement) {
    let fallback = null;
    for (const input of inputs.keys()) {
      if (!isEligibleInput(input, formElement)) {
        continue;
      }
      if (!input.validity.valid) {
        return input;
      }
      fallback ??= input;
    }
    return fallback;
  }
  function makeState(customError) {
    return {
      ...DEFAULT_VALIDITY_STATE,
      valid: !customError,
      customError
    };
  }
  function getNativeErrors(element) {
    return element && element.validationMessage ? [element.validationMessage] : [];
  }
  function useFieldValidation(params) {
    const {
      elementRef,
      formRef
    } = useFormContext();
    const {
      setValidityData,
      validate,
      validityData,
      validationDebounceTime,
      invalid: invalid2,
      markedDirtyRef,
      state: state2,
      shouldValidateOnChange,
      validationMode,
      registeredFieldIdRef
    } = params;
    const {
      controlId,
      getDescriptionProps
    } = useLabelableContext();
    const timeout = useTimeout();
    const inputRef = React89.useRef(null);
    const registeredInputs = useRefWithInit(() => /* @__PURE__ */ new Map()).current;
    const validationCommitIdRef = React89.useRef(0);
    const customValidityRef = React89.useRef(null);
    const registerInput = React89.useCallback((element, registration) => {
      registeredInputs.set(element, registration);
      return () => {
        registeredInputs.delete(element);
      };
    }, [registeredInputs]);
    const getInputControl = useStableCallback(() => {
      const element = findRepresentativeInput(registeredInputs, elementRef.current);
      return element && registeredInputs.get(element)?.controlRef.current || null;
    });
    const commit = useStableCallback(async (value, revalidate = false) => {
      validationCommitIdRef.current += 1;
      const validationCommitId = validationCommitIdRef.current;
      function updateRegisteredFieldValidity(nextValidityData, externalInvalid = invalid2) {
        const fieldId = registeredFieldIdRef.current ?? controlId;
        if (fieldId == null) {
          return;
        }
        const currentFieldData = formRef.current.fields.get(fieldId);
        if (!currentFieldData) {
          return;
        }
        const validityDataWithFormErrors = getCombinedFieldValidityData(nextValidityData, externalInvalid);
        formRef.current.fields.set(fieldId, {
          ...currentFieldData,
          validityData: validityDataWithFormErrors
        });
      }
      function makeValidityData(validityState, errorMessages) {
        const errors = validityState.valid === false ? errorMessages : [];
        return {
          value,
          state: validityState,
          error: errors[0] ?? "",
          errors,
          initialValue: validityData.initialValue
        };
      }
      function setCustomValidity(element2, message2) {
        const displaced = element2.validity.customError ? element2.validationMessage : "";
        const ownedMessage = message2.replace(/\r\n?/g, "\n");
        element2.setCustomValidity(ownedMessage);
        customValidityRef.current = [element2, ownedMessage, displaced];
      }
      function clearCustomValidity() {
        const record = customValidityRef.current;
        customValidityRef.current = null;
        if (record && (!record[0].willValidate || record[0].validationMessage === record[1])) {
          record[0].setCustomValidity(record[2]);
        }
      }
      function publish(validityState, errorMessages, externalInvalid) {
        const nextValidityData = makeValidityData(validityState, errorMessages);
        updateRegisteredFieldValidity(nextValidityData, externalInvalid);
        setValidityData(nextValidityData);
      }
      function getState2(el) {
        const computedState = validityKeys.reduce((acc, key) => {
          acc[key] = el.validity[key];
          return acc;
        }, {});
        let hasOnlyValueMissingError = false;
        for (const key of validityKeys) {
          if (key === "valid") {
            continue;
          }
          if (key === "valueMissing" && computedState[key]) {
            hasOnlyValueMissingError = true;
          } else if (computedState[key]) {
            return computedState;
          }
        }
        if (hasOnlyValueMissingError && !markedDirtyRef.current) {
          computedState.valid = true;
          computedState.valueMissing = false;
        }
        return computedState;
      }
      function resolveRepresentativeInput() {
        return registeredInputs.size > 0 ? findRepresentativeInput(registeredInputs, elementRef.current) : inputRef.current;
      }
      let element = resolveRepresentativeInput();
      function refreshState() {
        element = resolveRepresentativeInput();
        return element?.willValidate ? getState2(element) : makeState(false);
      }
      if (revalidate) {
        if (state2.valid !== false || !element) {
          return;
        }
        if (!element.validity.valueMissing) {
          clearCustomValidity();
          const currentElement = resolveRepresentativeInput();
          const foreign = currentElement?.validity.customError ? getNativeErrors(currentElement) : [];
          publish(makeState(foreign.length > 0), foreign, false);
          return;
        }
        for (const key of validityKeys) {
          if (key !== "valid" && key !== "valueMissing" && key !== "customError" && element.validity[key]) {
            return;
          }
        }
      }
      timeout.clear();
      clearCustomValidity();
      let nextState = refreshState();
      let validationErrors = getNativeErrors(element);
      const isValidatingOnChange = shouldValidateOnChange();
      if (validationErrors.length === 0 || isValidatingOnChange) {
        const formValues = Array.from(formRef.current.fields.values()).reduce((acc, field) => {
          if (field.name) {
            acc[field.name] = field.getValue();
          }
          return acc;
        }, {});
        const resultOrPromise = validate(value, formValues);
        let result;
        if (typeof resultOrPromise === "object" && resultOrPromise !== null && "then" in resultOrPromise) {
          if (nextState.valid === false) {
            publish(nextState, validationErrors);
          } else if (validationMode === "onSubmit" || !validityData.state.customError) {
            nextState.valid = null;
            publish(nextState, validationErrors);
          }
          result = await resultOrPromise;
          if (validationCommitId !== validationCommitIdRef.current) {
            return;
          }
          nextState = refreshState();
        } else {
          result = resultOrPromise;
        }
        validationErrors = result ? [].concat(result).filter(Boolean) : [];
        if (validationErrors.length > 0) {
          nextState.valid = false;
          nextState.customError = true;
          if (element?.willValidate) {
            setCustomValidity(element, validationErrors.join("\n"));
          }
        } else {
          validationErrors = getNativeErrors(element);
        }
      }
      publish(nextState, validationErrors);
    });
    const change = useStableCallback((value, cancelPending = false) => {
      timeout.clear();
      validationCommitIdRef.current += 1;
      if (cancelPending) {
        return;
      }
      const validateOnChange = shouldValidateOnChange();
      if (validateOnChange && value !== "" && validationDebounceTime) {
        timeout.start(validationDebounceTime, () => {
          commit(value);
        });
      } else {
        commit(value, !validateOnChange);
      }
    });
    const getValidationProps = React89.useCallback((disabled2, externalProps = {}) => mergeProps(getDescriptionProps(externalProps), state2.valid === false && !state2.disabled && !disabled2 ? {
      "aria-invalid": true
    } : EMPTY_OBJECT2), [getDescriptionProps, state2.disabled, state2.valid]);
    return React89.useMemo(() => ({
      getValidationProps,
      inputRef,
      registeredInputs,
      registerInput,
      getInputControl,
      commit,
      change
    }), [getValidationProps, registeredInputs, registerInput, getInputControl, commit, change]);
  }

  // node_modules/@base-ui/react/collapsible/index.parts.mjs
  var index_parts_exports = {};
  __export(index_parts_exports, {
    Panel: () => CollapsiblePanel,
    Root: () => CollapsibleRoot,
    Trigger: () => CollapsibleTrigger
  });

  // node_modules/@base-ui/react/collapsible/root/CollapsibleRoot.mjs
  var React90 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/collapsible/root/stateAttributesMapping.mjs
  var collapsibleStateAttributesMapping = {
    ...collapsibleOpenStateMapping,
    ...transitionStatusMapping
  };

  // node_modules/@base-ui/react/collapsible/root/CollapsibleRoot.mjs
  var import_jsx_runtime116 = __toESM(require_jsx_runtime(), 1);
  var CollapsibleRoot = /* @__PURE__ */ React90.forwardRef(function CollapsibleRoot2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      defaultOpen = false,
      disabled: disabled2 = false,
      onOpenChange: onOpenChangeProp,
      open: open3,
      style,
      ...elementProps
    } = componentProps;
    const onOpenChange = useStableCallback(onOpenChangeProp);
    const collapsible = useCollapsibleRoot({
      open: open3,
      defaultOpen,
      onOpenChange,
      disabled: disabled2
    });
    const state2 = React90.useMemo(() => ({
      open: collapsible.open,
      disabled: collapsible.disabled,
      transitionStatus: collapsible.transitionStatus
    }), [collapsible.open, collapsible.disabled, collapsible.transitionStatus]);
    const contextValue = React90.useMemo(() => ({
      ...collapsible,
      onOpenChange,
      state: state2
    }), [collapsible, onOpenChange, state2]);
    const element = useRenderElement("div", componentProps, {
      state: state2,
      ref: forwardedRef,
      props: elementProps,
      stateAttributesMapping: collapsibleStateAttributesMapping
    });
    return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(CollapsibleRootContext.Provider, {
      value: contextValue,
      children: element
    });
  });
  if (true) CollapsibleRoot.displayName = "CollapsibleRoot";

  // node_modules/@base-ui/react/collapsible/trigger/CollapsibleTrigger.mjs
  var React91 = __toESM(require_react(), 1);
  var stateAttributesMapping4 = {
    ...triggerOpenStateMapping,
    ...transitionStatusMapping
  };
  var CollapsibleTrigger = /* @__PURE__ */ React91.forwardRef(function CollapsibleTrigger2(componentProps, forwardedRef) {
    const {
      panelId,
      open: open3,
      handleTrigger,
      state: state2,
      disabled: contextDisabled
    } = useCollapsibleRootContext();
    const {
      className,
      disabled: disabled2 = contextDisabled,
      render: render5,
      nativeButton = true,
      style,
      ...elementProps
    } = componentProps;
    const {
      getButtonProps,
      buttonRef
    } = useButton({
      disabled: disabled2,
      focusableWhenDisabled: true,
      native: nativeButton
    });
    const element = useRenderElement("button", componentProps, {
      state: state2,
      ref: [forwardedRef, buttonRef],
      props: [{
        "aria-controls": open3 ? panelId : void 0,
        "aria-expanded": open3,
        onClick: handleTrigger
      }, elementProps, getButtonProps],
      stateAttributesMapping: stateAttributesMapping4
    });
    return element;
  });
  if (true) CollapsibleTrigger.displayName = "CollapsibleTrigger";

  // node_modules/@base-ui/react/collapsible/panel/CollapsiblePanel.mjs
  var React92 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/collapsible/panel/CollapsiblePanelCssVars.mjs
  var collapsiblePanelHeight = "--collapsible-panel-height";
  var collapsiblePanelWidth = "--collapsible-panel-width";

  // node_modules/@base-ui/react/collapsible/panel/CollapsiblePanel.mjs
  var CollapsiblePanel = /* @__PURE__ */ React92.forwardRef(function CollapsiblePanel2(componentProps, forwardedRef) {
    const {
      className,
      hiddenUntilFound: hiddenUntilFoundProp,
      keepMounted: keepMountedProp,
      render: render5,
      id: idProp,
      style,
      ...elementProps
    } = componentProps;
    if (true) {
      React92.useEffect(() => {
        if (hiddenUntilFoundProp && keepMountedProp === false) {
          warn("The `keepMounted={false}` prop on `Collapsible.Panel` is ignored when `hiddenUntilFound` is enabled, since the panel must remain mounted while closed.");
        }
      }, [hiddenUntilFoundProp, keepMountedProp]);
    }
    const {
      defaultPanelId,
      mounted,
      onOpenChange,
      open: open3,
      setMounted,
      setPanelIdState,
      setOpen,
      state: state2,
      transitionStatus
    } = useCollapsibleRootContext();
    const hiddenUntilFound = hiddenUntilFoundProp ?? false;
    const keepMounted = keepMountedProp ?? false;
    const registeredId = idProp || void 0;
    const id = registeredId ?? defaultPanelId;
    useIsoLayoutEffect(() => {
      setPanelIdState((currentId) => registeredId ?? (currentId === null ? void 0 : currentId));
      return () => {
        setPanelIdState((currentId) => currentId === registeredId ? null : currentId);
      };
    }, [registeredId, setPanelIdState]);
    const {
      height,
      props,
      ref,
      shouldPreventOpenAnimation,
      shouldRender,
      transitionStatus: panelTransitionStatus,
      width
    } = useCollapsiblePanel({
      externalRef: forwardedRef,
      hiddenUntilFound,
      id,
      keepMounted,
      mounted,
      onOpenChange,
      open: open3,
      setMounted,
      setOpen,
      transitionStatus
    });
    const panelState = {
      ...state2,
      transitionStatus: panelTransitionStatus
    };
    const resolvedStyle = resolveStyle2(style, panelState);
    const element = useRenderElement("div", {
      ...componentProps,
      style: void 0
    }, {
      state: panelState,
      ref,
      props: [
        props,
        {
          style: {
            [collapsiblePanelHeight]: height === void 0 ? "auto" : `${height}px`,
            [collapsiblePanelWidth]: width === void 0 ? "auto" : `${width}px`
          }
        },
        elementProps,
        resolvedStyle ? {
          style: resolvedStyle
        } : void 0,
        // Resolve the public `style` prop so temporary `animationName: 'none'`
        // can still win after user's inline styles have been merged.
        shouldPreventOpenAnimation ? {
          style: {
            animationName: "none"
          }
        } : void 0
      ],
      stateAttributesMapping: collapsibleStateAttributesMapping
    });
    if (!shouldRender) {
      return null;
    }
    return element;
  });
  if (true) CollapsiblePanel.displayName = "CollapsiblePanel";

  // node_modules/@base-ui/react/combobox/index.parts.mjs
  var index_parts_exports2 = {};
  __export(index_parts_exports2, {
    Arrow: () => ComboboxArrow,
    Backdrop: () => ComboboxBackdrop,
    Chip: () => ComboboxChip,
    ChipRemove: () => ComboboxChipRemove,
    Chips: () => ComboboxChips,
    Clear: () => ComboboxClear,
    Collection: () => ComboboxCollection,
    Empty: () => ComboboxEmpty,
    Group: () => ComboboxGroup,
    GroupLabel: () => ComboboxGroupLabel,
    Icon: () => ComboboxIcon,
    Input: () => ComboboxInput,
    InputGroup: () => ComboboxInputGroup,
    Item: () => ComboboxItem,
    ItemIndicator: () => ComboboxItemIndicator,
    Label: () => ComboboxLabel,
    List: () => ComboboxList,
    Popup: () => ComboboxPopup,
    Portal: () => ComboboxPortal,
    Positioner: () => ComboboxPositioner,
    Root: () => ComboboxRoot,
    Row: () => ComboboxRow,
    Separator: () => ComboboxSeparator,
    Status: () => ComboboxStatus,
    Trigger: () => ComboboxTrigger,
    Value: () => ComboboxValue,
    createItems: () => createComboboxItems,
    useFilter: () => useComboboxFilter,
    useFilteredItems: () => useFilteredItems
  });

  // node_modules/@base-ui/react/combobox/root/ComboboxRoot.mjs
  var React93 = __toESM(require_react(), 1);
  var import_jsx_runtime117 = __toESM(require_jsx_runtime(), 1);
  function ComboboxRoot(props) {
    const {
      multiple = false,
      defaultValue: defaultValue2,
      value,
      onValueChange,
      autoComplete,
      ...other
    } = props;
    return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(AriaCombobox, {
      ...other,
      selectionMode: multiple ? "multiple" : "single",
      selectedValue: value,
      defaultSelectedValue: defaultValue2,
      onSelectedValueChange: onValueChange,
      formAutoComplete: autoComplete
    });
  }

  // node_modules/@base-ui/react/combobox/label/ComboboxLabel.mjs
  var React94 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/utils/useRegisteredLabelId.mjs
  function useRegisteredLabelId(idProp, setLabelId) {
    const id = useBaseUiId(idProp);
    useIsoLayoutEffect(() => {
      setLabelId(id);
      return () => {
        setLabelId((currentId) => currentId === id ? void 0 : currentId);
      };
    }, [id, setLabelId]);
    return id;
  }

  // node_modules/@base-ui/react/internals/labelable-provider/useLabel.mjs
  function useLabel(params = {}) {
    const {
      id: idProp,
      fallbackControlId,
      native = false,
      setLabelId: setLabelIdProp,
      focusControl: focusControlProp
    } = params;
    const {
      controlId: contextControlId,
      setLabelId: setContextLabelId
    } = useLabelableContext();
    const syncLabelId = useStableCallback((nextLabelId) => {
      setContextLabelId(nextLabelId);
      setLabelIdProp?.(nextLabelId);
    });
    const id = useRegisteredLabelId(idProp, syncLabelId);
    const resolvedControlId = contextControlId ?? fallbackControlId;
    function focusControl(event) {
      if (focusControlProp) {
        focusControlProp(event, resolvedControlId);
        return;
      }
      if (!resolvedControlId) {
        return;
      }
      const controlElement = ownerDocument(event.currentTarget).getElementById(resolvedControlId);
      if (isHTMLElement(controlElement)) {
        focusElementWithVisible(controlElement);
      }
    }
    function handleInteraction(event) {
      const target = getTarget(event.nativeEvent);
      if (target?.closest("button,input,select,textarea")) {
        return;
      }
      if (!event.defaultPrevented && event.detail > 1) {
        event.preventDefault();
      }
      if (native) {
        return;
      }
      focusControl(event);
    }
    return native ? {
      id,
      htmlFor: resolvedControlId,
      onMouseDown: handleInteraction
    } : {
      id,
      onClick: handleInteraction,
      onPointerDown(event) {
        event.preventDefault();
      }
    };
  }
  function focusElementWithVisible(element) {
    element.focus({
      // Available from Chrome 144+ (January 2026).
      // Safari and Firefox already support it.
      focusVisible: true
    });
  }

  // node_modules/@base-ui/react/combobox/label/ComboboxLabel.mjs
  var ComboboxLabel = /* @__PURE__ */ React94.forwardRef(function ComboboxLabel2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      ...elementProps
    } = componentProps;
    const elementPropsWithoutId = elementProps;
    delete elementPropsWithoutId.id;
    const fieldRootContext = useFieldRootContext();
    const store4 = useComboboxRootContext();
    const inputInsidePopup = store4.useState("inputInsidePopup");
    const triggerElement = store4.useState("triggerElement");
    const inputElement = store4.useState("inputElement");
    const rootId = store4.useState("id");
    const defaultLabelId = getDefaultLabelId(rootId);
    const localControlId = triggerElement?.id ?? (inputInsidePopup ? rootId : void 0);
    if (true) {
      React94.useEffect(() => {
        if (!inputElement || inputInsidePopup) {
          return;
        }
        const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
        const message2 = "<Combobox.Label> labels <Combobox.Trigger> only. When <Combobox.Input> is the form control, use a native <label> or <Field.Label> instead.";
        error(`${message2}${ownerStackMessage}`);
      }, [inputElement, inputInsidePopup]);
    }
    const labelProps = useLabel({
      id: defaultLabelId,
      fallbackControlId: localControlId,
      setLabelId(nextLabelId) {
        const resolvedLabelId = typeof nextLabelId === "function" ? nextLabelId(store4.state.labelId) : nextLabelId;
        store4.set("labelId", resolvedLabelId);
      }
    });
    return useRenderElement("div", componentProps, {
      ref: forwardedRef,
      state: fieldRootContext.state,
      props: [labelProps, elementProps],
      stateAttributesMapping: fieldValidityMapping
    });
  });
  if (true) ComboboxLabel.displayName = "ComboboxLabel";

  // node_modules/@base-ui/react/combobox/value/ComboboxValue.mjs
  var React95 = __toESM(require_react(), 1);
  var import_jsx_runtime118 = __toESM(require_jsx_runtime(), 1);
  function ComboboxValue(props) {
    const {
      children: childrenProp,
      placeholder
    } = props;
    const store4 = useComboboxRootContext();
    const itemToStringLabel = store4.useState("itemToStringLabel");
    const selectedValue = store4.useState("selectedValue");
    const items = store4.useState("items");
    const multiple = store4.useState("selectionMode") === "multiple";
    const hasSelectedValue = store4.useState("hasSelectedValue");
    const shouldCheckNullItemLabel = !hasSelectedValue && placeholder != null && childrenProp == null;
    const hasNullLabel = store4.useState("hasNullItemLabel", shouldCheckNullItemLabel);
    let children = null;
    if (typeof childrenProp === "function") {
      children = childrenProp(selectedValue);
    } else if (childrenProp != null) {
      children = childrenProp;
    } else if (!hasSelectedValue && placeholder != null && !hasNullLabel) {
      children = placeholder;
    } else if (multiple && Array.isArray(selectedValue)) {
      children = resolveMultipleLabels(selectedValue, items, itemToStringLabel);
    } else {
      children = resolveSelectedLabel(selectedValue, items, itemToStringLabel);
    }
    return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(React95.Fragment, {
      children
    });
  }

  // node_modules/@base-ui/react/combobox/item-indicator/ComboboxItemIndicator.mjs
  var React96 = __toESM(require_react(), 1);
  var import_jsx_runtime119 = __toESM(require_jsx_runtime(), 1);
  var ComboboxItemIndicator = /* @__PURE__ */ React96.forwardRef(function ComboboxItemIndicator2(componentProps, forwardedRef) {
    const {
      selected
    } = useComboboxItemContext();
    const shouldRender = componentProps.keepMounted || selected;
    if (!shouldRender) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(Inner, {
      ...componentProps,
      ref: forwardedRef
    });
  });
  if (true) ComboboxItemIndicator.displayName = "ComboboxItemIndicator";
  var Inner = /* @__PURE__ */ React96.memo(/* @__PURE__ */ React96.forwardRef((componentProps, forwardedRef) => {
    const {
      render: render5,
      className,
      style,
      keepMounted,
      ...elementProps
    } = componentProps;
    const {
      selected
    } = useComboboxItemContext();
    const indicatorRef = React96.useRef(null);
    const {
      transitionStatus,
      setMounted
    } = useTransitionStatus(selected);
    const state2 = {
      selected,
      transitionStatus
    };
    const element = useRenderElement("span", componentProps, {
      ref: [forwardedRef, indicatorRef],
      state: state2,
      props: [{
        "aria-hidden": true,
        children: "\u2714\uFE0F"
      }, elementProps],
      stateAttributesMapping: transitionStatusMapping
    });
    useOpenChangeComplete({
      batch: true,
      enabled: !selected,
      open: selected,
      ref: indicatorRef,
      onComplete() {
        if (!selected) {
          setMounted(false);
        }
      }
    });
    return element;
  }));
  if (true) Inner.displayName = "Inner";

  // node_modules/@base-ui/react/combobox/chips/ComboboxChips.mjs
  var React97 = __toESM(require_react(), 1);
  var import_jsx_runtime120 = __toESM(require_jsx_runtime(), 1);
  var ComboboxChips = /* @__PURE__ */ React97.forwardRef(function ComboboxChips2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      ...elementProps
    } = componentProps;
    const store4 = useComboboxRootContext();
    const open3 = store4.useState("open");
    const hasSelectionChips = store4.useState("hasSelectionChips");
    const [highlightedChipIndex, setHighlightedChipIndex] = React97.useState(void 0);
    if (open3 && highlightedChipIndex !== void 0) {
      setHighlightedChipIndex(void 0);
    }
    const chipsRef = React97.useRef([]);
    const element = useRenderElement("div", componentProps, {
      ref: [forwardedRef, store4.context.chipsContainerRef],
      // NVDA enters browse mode instead of staying in focus mode when navigating with
      // arrow keys inside a container unless it has a toolbar role.
      props: [hasSelectionChips ? {
        role: "toolbar"
      } : EMPTY_OBJECT2, {
        onMouseDown(event) {
          handleInputPress(event, store4, store4.state.disabled);
        }
      }, elementProps]
    });
    const contextValue = React97.useMemo(() => ({
      highlightedChipIndex,
      setHighlightedChipIndex,
      chipsRef
    }), [highlightedChipIndex, setHighlightedChipIndex, chipsRef]);
    return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(ComboboxChipsContext.Provider, {
      value: contextValue,
      children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(CompositeList, {
        elementsRef: chipsRef,
        children: element
      })
    });
  });
  if (true) ComboboxChips.displayName = "ComboboxChips";

  // node_modules/@base-ui/react/combobox/chip/ComboboxChip.mjs
  var React99 = __toESM(require_react(), 1);
  var ReactDOM7 = __toESM(require_react_dom(), 1);

  // node_modules/@base-ui/react/combobox/chip/ComboboxChipContext.mjs
  var React98 = __toESM(require_react(), 1);
  var ComboboxChipContext = /* @__PURE__ */ React98.createContext(void 0);
  if (true) ComboboxChipContext.displayName = "ComboboxChipContext";
  function useComboboxChipContext() {
    const context = React98.useContext(ComboboxChipContext);
    if (!context) {
      throw new Error(true ? "Base UI: ComboboxChipContext is missing. ComboboxChip parts must be placed within <Combobox.Chip>." : formatErrorMessage_default(17));
    }
    return context;
  }

  // node_modules/@base-ui/react/combobox/chip/ComboboxChip.mjs
  var import_jsx_runtime121 = __toESM(require_jsx_runtime(), 1);
  var ComboboxChip = /* @__PURE__ */ React99.forwardRef(function ComboboxChip2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      ...elementProps
    } = componentProps;
    const store4 = useComboboxRootContext();
    const {
      setHighlightedChipIndex,
      chipsRef
    } = useComboboxChipsContext();
    const direction = useDirection();
    const disabled2 = store4.useState("disabled");
    const readOnly = store4.useState("readOnly");
    const selectedValue = store4.useState("selectedValue");
    const {
      ref,
      index: index3
    } = useCompositeListItem();
    function handleKeyDown(event) {
      let nextIndex = index3;
      const [previousChipKey, nextChipKey] = getChipNavigationKeys(direction);
      if (event.key === previousChipKey) {
        event.preventDefault();
        if (index3 > 0) {
          nextIndex = index3 - 1;
        } else {
          nextIndex = void 0;
        }
      } else if (event.key === nextChipKey) {
        event.preventDefault();
        if (index3 < chipsRef.current.length - 1) {
          nextIndex = index3 + 1;
        } else {
          nextIndex = void 0;
        }
      } else if (event.key === "Backspace" || event.key === "Delete") {
        nextIndex = getIndexAfterChipRemoval(index3, selectedValue.length);
        stopEvent(event);
        store4.context.setIndices({
          activeIndex: null,
          selectedIndex: null,
          type: reason_parts_exports.keyboard
        });
        store4.context.setSelectedValue(selectedValue.filter((_, i2) => i2 !== index3), createChangeEventDetails(reason_parts_exports.none, event.nativeEvent));
      } else if (event.key === "Enter" || event.key === " ") {
        stopEvent(event);
        nextIndex = void 0;
      } else if (event.key === "ArrowDown" || event.key === "ArrowUp") {
        stopEvent(event);
        store4.context.setOpen(true, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent));
        nextIndex = void 0;
      } else if (
        // Check for printable characters (letters, numbers, symbols)
        event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey
      ) {
        nextIndex = void 0;
      }
      return nextIndex;
    }
    const state2 = {
      disabled: disabled2
    };
    const element = useRenderElement("div", componentProps, {
      ref: [forwardedRef, ref],
      state: state2,
      props: [{
        tabIndex: -1,
        "aria-disabled": disabled2 || void 0,
        "aria-readonly": readOnly || void 0,
        onKeyDown(event) {
          if (disabled2 || readOnly) {
            return;
          }
          const nextIndex = handleKeyDown(event);
          ReactDOM7.flushSync(() => {
            setHighlightedChipIndex(nextIndex);
          });
          if (nextIndex === void 0) {
            store4.context.inputRef.current?.focus();
          } else {
            chipsRef.current[nextIndex]?.focus();
          }
        }
      }, elementProps]
    });
    const contextValue = React99.useMemo(() => ({
      index: index3
    }), [index3]);
    return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(ComboboxChipContext.Provider, {
      value: contextValue,
      children: element
    });
  });
  if (true) ComboboxChip.displayName = "ComboboxChip";

  // node_modules/@base-ui/react/combobox/chip-remove/ComboboxChipRemove.mjs
  var React100 = __toESM(require_react(), 1);
  var ComboboxChipRemove = /* @__PURE__ */ React100.forwardRef(function ComboboxChipRemove2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      disabled: disabledProp = false,
      nativeButton = true,
      style,
      ...elementProps
    } = componentProps;
    const store4 = useComboboxRootContext();
    const {
      index: index3
    } = useComboboxChipContext();
    const comboboxDisabled = store4.useState("disabled");
    const readOnly = store4.useState("readOnly");
    const selectedValue = store4.useState("selectedValue");
    const isItemEqualToValue = store4.useState("isItemEqualToValue");
    const disabled2 = comboboxDisabled || disabledProp;
    const {
      buttonRef,
      getButtonProps
    } = useButton({
      native: nativeButton,
      disabled: disabled2 || readOnly,
      focusableWhenDisabled: true
    });
    const state2 = {
      disabled: disabled2
    };
    function clearActiveIndexForRemovedItem(removedItem) {
      const activeIndex = store4.state.activeIndex;
      if (activeIndex == null) {
        return;
      }
      const removedIndex = findItemIndex(store4.context.valuesRef.current, removedItem, isItemEqualToValue);
      if (removedIndex !== -1 && activeIndex === removedIndex) {
        store4.context.setIndices({
          activeIndex: null,
          type: store4.context.keyboardActiveRef.current ? reason_parts_exports.keyboard : reason_parts_exports.pointer
        });
      }
    }
    function removeChip(event) {
      const eventDetails = createChangeEventDetails(reason_parts_exports.chipRemovePress, event.nativeEvent);
      const removedItem = selectedValue[index3];
      clearActiveIndexForRemovedItem(removedItem);
      store4.context.setSelectedValue(selectedValue.filter((_, i2) => i2 !== index3), eventDetails);
      store4.context.inputRef.current?.focus();
      return eventDetails;
    }
    const element = useRenderElement("button", componentProps, {
      ref: [forwardedRef, buttonRef],
      state: state2,
      props: [{
        tabIndex: -1,
        onMouseDown(event) {
          event.preventDefault();
        },
        onClick(event) {
          const eventDetails = removeChip(event);
          if (!eventDetails.isPropagationAllowed) {
            event.stopPropagation();
          }
        },
        onKeyDown(event) {
          if (event.key === "Enter" || event.key === " ") {
            const eventDetails = removeChip(event);
            if (!eventDetails.isPropagationAllowed) {
              stopEvent(event);
            }
          }
        }
      }, elementProps, getButtonProps]
    });
    return element;
  });
  if (true) ComboboxChipRemove.displayName = "ComboboxChipRemove";

  // node_modules/@base-ui/react/combobox/separator/ComboboxSeparator.mjs
  var ComboboxSeparator = ListboxSeparator;

  // node_modules/@base-ui/react/combobox/items/createItems.mjs
  function createComboboxItems(data, options) {
    const {
      getValue: getValue3,
      getLabel
    } = options;
    let valueToItem = null;
    function ensureDerived() {
      if (valueToItem === null) {
        const derived = /* @__PURE__ */ new Map();
        const leafItems = data ? flattenLeafItems(data) : EMPTY_ARRAY3;
        for (const item of leafItems) {
          if (item == null) {
            continue;
          }
          const derivedValue = getValue3(item);
          if (!derived.has(derivedValue)) {
            derived.set(derivedValue, item);
          } else if (true) {
            error(`Two items passed to createItems() derived the value ${String(derivedValue)}, so selection and label resolution cannot tell them apart: the first item wins the label and every item carrying the value renders as selected. Return a unique value from \`getValue\`.`);
          }
        }
        valueToItem = derived;
      }
      return valueToItem;
    }
    function value(item) {
      if (item == null) {
        return item;
      }
      return getValue3(item);
    }
    return {
      // Passed through rather than defaulted: data that has not loaded must stay the absence of
      // items rather than an empty list that filters everything away.
      data,
      value,
      hasValue(itemValue, isEqual2) {
        return findCollectionItem(ensureDerived(), itemValue, isEqual2) !== void 0;
      },
      itemLabel: getLabel,
      label(itemValue, isEqual2, fallback) {
        const item = findCollectionItem(ensureDerived(), itemValue, isEqual2);
        if (item !== void 0) {
          return getLabel(item);
        }
        return stringifyAsLabel(itemValue, fallback);
      }
    };
  }

  // node_modules/@base-ui/react/context-menu/root/ContextMenuRootContext.mjs
  var React101 = __toESM(require_react(), 1);
  var ContextMenuRootContext = /* @__PURE__ */ React101.createContext(void 0);
  if (true) ContextMenuRootContext.displayName = "ContextMenuRootContext";
  function useContextMenuRootContext(optional = true) {
    const context = React101.useContext(ContextMenuRootContext);
    if (context === void 0 && !optional) {
      throw new Error(true ? "Base UI: ContextMenuRootContext is missing. ContextMenu parts must be placed within <ContextMenu.Root>." : formatErrorMessage_default(25));
    }
    return context;
  }

  // node_modules/@base-ui/react/menu/index.parts.mjs
  var index_parts_exports3 = {};
  __export(index_parts_exports3, {
    Arrow: () => MenuArrow,
    Backdrop: () => MenuBackdrop,
    CheckboxItem: () => MenuCheckboxItem,
    CheckboxItemIndicator: () => MenuCheckboxItemIndicator,
    Group: () => MenuGroup,
    GroupLabel: () => MenuGroupLabel,
    Handle: () => MenuHandle,
    Item: () => MenuItem,
    LinkItem: () => MenuLinkItem,
    Popup: () => MenuPopup,
    Portal: () => MenuPortal,
    Positioner: () => MenuPositioner,
    RadioGroup: () => MenuRadioGroup,
    RadioItem: () => MenuRadioItem,
    RadioItemIndicator: () => MenuRadioItemIndicator,
    Root: () => MenuRoot,
    Separator: () => Separator,
    SubmenuRoot: () => MenuSubmenuRoot,
    SubmenuTrigger: () => MenuSubmenuTrigger,
    Trigger: () => MenuTrigger,
    Viewport: () => MenuViewport,
    createHandle: () => createMenuHandle
  });

  // node_modules/@base-ui/react/menu/arrow/MenuArrow.mjs
  var React104 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/menu/positioner/MenuPositionerContext.mjs
  var React102 = __toESM(require_react(), 1);
  var MenuPositionerContext = /* @__PURE__ */ React102.createContext(void 0);
  if (true) MenuPositionerContext.displayName = "MenuPositionerContext";
  function useMenuPositionerContext(optional) {
    const context = React102.useContext(MenuPositionerContext);
    if (context === void 0 && !optional) {
      throw new Error(true ? "Base UI: MenuPositionerContext is missing. MenuPositioner parts must be placed within <Menu.Positioner>." : formatErrorMessage_default(33));
    }
    return context;
  }

  // node_modules/@base-ui/react/menu/root/MenuRootContext.mjs
  var React103 = __toESM(require_react(), 1);
  var MenuRootContext = /* @__PURE__ */ React103.createContext(void 0);
  if (true) MenuRootContext.displayName = "MenuRootContext";
  function useMenuRootContext(optional) {
    const context = React103.useContext(MenuRootContext);
    if (context === void 0 && !optional) {
      throw new Error(true ? "Base UI: MenuRootContext is missing. Menu parts must be placed within <Menu.Root>." : formatErrorMessage_default(36));
    }
    return context;
  }

  // node_modules/@base-ui/react/menu/arrow/MenuArrow.mjs
  var MenuArrow = /* @__PURE__ */ React104.forwardRef(function MenuArrow2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      ...elementProps
    } = componentProps;
    const {
      store: store4
    } = useMenuRootContext();
    const {
      arrowRef,
      side,
      align,
      arrowUncentered,
      arrowStyles
    } = useMenuPositionerContext();
    const open3 = store4.useState("open");
    const state2 = {
      open: open3,
      side,
      align,
      uncentered: arrowUncentered
    };
    return useRenderElement("div", componentProps, {
      ref: [arrowRef, forwardedRef],
      stateAttributesMapping: popupStateMapping,
      state: state2,
      props: {
        style: arrowStyles,
        "aria-hidden": true,
        ...elementProps
      }
    });
  });
  if (true) MenuArrow.displayName = "MenuArrow";

  // node_modules/@base-ui/react/menu/backdrop/MenuBackdrop.mjs
  var React105 = __toESM(require_react(), 1);
  var MenuBackdrop = /* @__PURE__ */ React105.forwardRef(function MenuBackdrop2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      ...elementProps
    } = componentProps;
    const {
      store: store4
    } = useMenuRootContext();
    const open3 = store4.useState("open");
    const mounted = store4.useState("mounted");
    const transitionStatus = store4.useState("transitionStatus");
    const lastOpenChangeReason = store4.useState("lastOpenChangeReason");
    const contextMenuContext = useContextMenuRootContext();
    const state2 = {
      open: open3,
      transitionStatus
    };
    return useRenderElement("div", componentProps, {
      ref: contextMenuContext?.backdropRef ? [forwardedRef, contextMenuContext.backdropRef] : forwardedRef,
      state: state2,
      stateAttributesMapping: popupTransitionStateMapping,
      props: [{
        role: "presentation",
        hidden: !mounted,
        style: {
          pointerEvents: lastOpenChangeReason === reason_parts_exports.triggerHover ? "none" : void 0,
          userSelect: "none",
          WebkitUserSelect: "none"
        }
      }, elementProps]
    });
  });
  if (true) MenuBackdrop.displayName = "MenuBackdrop";

  // node_modules/@base-ui/react/menu/checkbox-item/MenuCheckboxItem.mjs
  var React109 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/menu/checkbox-item/MenuCheckboxItemContext.mjs
  var React106 = __toESM(require_react(), 1);
  var MenuCheckboxItemContext = /* @__PURE__ */ React106.createContext(void 0);
  if (true) MenuCheckboxItemContext.displayName = "MenuCheckboxItemContext";
  function useMenuCheckboxItemContext() {
    const context = React106.useContext(MenuCheckboxItemContext);
    if (context === void 0) {
      throw new Error(true ? "Base UI: MenuCheckboxItemContext is missing. MenuCheckboxItem parts must be placed within <Menu.CheckboxItem>." : formatErrorMessage_default(30));
    }
    return context;
  }

  // node_modules/@base-ui/react/menu/item/useMenuItem.mjs
  var React108 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/menu/item/useMenuItemCommonProps.mjs
  var React107 = __toESM(require_react(), 1);
  function useMenuItemCommonProps(params) {
    const {
      closeOnClick,
      highlighted,
      id,
      nodeId,
      store: store4,
      typingRef,
      itemRef,
      itemMetadata
    } = params;
    const {
      events: menuEvents
    } = store4.useState("floatingTreeRoot");
    const open3 = store4.useState("open");
    const contextMenuContext = useContextMenuRootContext(true);
    const isContextMenu = contextMenuContext !== void 0;
    return React107.useMemo(() => ({
      id,
      role: "menuitem",
      tabIndex: open3 && highlighted ? 0 : -1,
      onKeyDown(event) {
        if (event.key === " " && typingRef?.current) {
          event.preventDefault();
        }
      },
      onMouseMove(event) {
        if (!nodeId) {
          return;
        }
        menuEvents.emit("itemhover", {
          nodeId,
          target: event.currentTarget
        });
      },
      onClick(event) {
        if (closeOnClick) {
          menuEvents.emit("close", {
            domEvent: event,
            reason: reason_parts_exports.itemPress
          });
        }
      },
      onMouseUp(event) {
        if (contextMenuContext) {
          const initialCursorPoint = contextMenuContext.initialCursorPointRef.current;
          contextMenuContext.initialCursorPointRef.current = null;
          if (isContextMenu && initialCursorPoint && Math.abs(event.clientX - initialCursorPoint.x) <= 1 && Math.abs(event.clientY - initialCursorPoint.y) <= 1) {
            return;
          }
          if (isContextMenu && !parts_exports.os.mac && event.button === 2) {
            return;
          }
        }
        if (itemRef.current && store4.context.allowMouseUpTriggerRef.current && (!isContextMenu || event.button === 2)) {
          if (itemMetadata.type === "regular-item") {
            dispatchClickWithModifiers(itemRef.current, event, {
              detail: 1
            });
          }
        }
      }
    }), [closeOnClick, highlighted, id, menuEvents, nodeId, open3, store4, typingRef, itemRef, contextMenuContext, isContextMenu, itemMetadata]);
  }

  // node_modules/@base-ui/react/menu/item/useMenuItem.mjs
  var REGULAR_ITEM = {
    type: "regular-item"
  };
  function useMenuItem(params) {
    const {
      closeOnClick,
      disabled: disabled2,
      highlighted,
      id,
      store: store4,
      typingRef = store4.context.typingRef,
      nativeButton,
      itemMetadata,
      nodeId
    } = params;
    const itemRef = React108.useRef(null);
    const {
      getButtonProps,
      buttonRef
    } = useButton({
      disabled: disabled2,
      focusableWhenDisabled: true,
      native: nativeButton,
      composite: true
    });
    const commonProps = useMenuItemCommonProps({
      closeOnClick,
      highlighted,
      id,
      nodeId,
      store: store4,
      typingRef,
      itemRef,
      itemMetadata
    });
    const getItemProps = React108.useCallback((externalProps) => {
      return mergeProps(commonProps, {
        onMouseEnter() {
          if (itemMetadata.type !== "submenu-trigger") {
            return;
          }
          itemMetadata.setActive();
        }
      }, externalProps, getButtonProps);
    }, [commonProps, getButtonProps, itemMetadata]);
    const mergedRef = useMergedRefs(itemRef, buttonRef);
    return React108.useMemo(() => ({
      getItemProps,
      itemRef: mergedRef
    }), [getItemProps, mergedRef]);
  }

  // node_modules/@base-ui/react/menu/checkbox-item/MenuCheckboxItemDataAttributes.mjs
  var checked = "data-checked";
  var unchecked = "data-unchecked";

  // node_modules/@base-ui/react/menu/utils/stateAttributesMapping.mjs
  var itemMapping = {
    checked(value) {
      if (value) {
        return {
          [checked]: ""
        };
      }
      return {
        [unchecked]: ""
      };
    },
    ...transitionStatusMapping
  };

  // node_modules/@base-ui/react/menu/checkbox-item/MenuCheckboxItem.mjs
  var import_jsx_runtime122 = __toESM(require_jsx_runtime(), 1);
  var MenuCheckboxItem = /* @__PURE__ */ React109.forwardRef(function MenuCheckboxItem2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      id: idProp,
      label,
      nativeButton = false,
      disabled: disabledProp = false,
      closeOnClick = false,
      checked: checkedProp,
      defaultChecked,
      onCheckedChange,
      style,
      ...elementProps
    } = componentProps;
    const listItem = useCompositeListItem({
      guess: true,
      label
    });
    const menuPositionerContext = useMenuPositionerContext(true);
    const id = useBaseUiId(idProp);
    const {
      store: store4
    } = useMenuRootContext();
    const rootDisabled = store4.useState("disabled");
    const disabled2 = disabledProp || rootDisabled;
    const highlighted = store4.useState("isActive", listItem.index);
    const itemProps = store4.useState("itemProps");
    const [checked2, setChecked] = useControlled({
      controlled: checkedProp,
      default: defaultChecked ?? false,
      name: "MenuCheckboxItem",
      state: "checked"
    });
    const {
      getItemProps,
      itemRef
    } = useMenuItem({
      closeOnClick,
      disabled: disabled2,
      highlighted,
      id,
      store: store4,
      nativeButton,
      nodeId: menuPositionerContext?.context.nodeId,
      itemMetadata: REGULAR_ITEM
    });
    const state2 = React109.useMemo(() => ({
      disabled: disabled2,
      highlighted,
      checked: checked2
    }), [disabled2, highlighted, checked2]);
    function handleClick(event) {
      const details = createChangeEventDetails(reason_parts_exports.itemPress, event.nativeEvent, void 0, {
        preventUnmountOnClose: NOOP
      });
      onCheckedChange?.(!checked2, details);
      if (details.isCanceled) {
        return;
      }
      setChecked((currentlyChecked) => !currentlyChecked);
    }
    const element = useRenderElement("div", componentProps, {
      state: state2,
      stateAttributesMapping: itemMapping,
      props: [itemProps, {
        role: "menuitemcheckbox",
        "aria-checked": checked2,
        onClick: handleClick
      }, elementProps, getItemProps],
      ref: [itemRef, forwardedRef, listItem.ref]
    });
    return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(MenuCheckboxItemContext.Provider, {
      value: state2,
      children: element
    });
  });
  if (true) MenuCheckboxItem.displayName = "MenuCheckboxItem";

  // node_modules/@base-ui/react/menu/checkbox-item-indicator/MenuCheckboxItemIndicator.mjs
  var React110 = __toESM(require_react(), 1);
  var MenuCheckboxItemIndicator = /* @__PURE__ */ React110.forwardRef(function MenuCheckboxItemIndicator2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      keepMounted = false,
      ...elementProps
    } = componentProps;
    const item = useMenuCheckboxItemContext();
    const indicatorRef = React110.useRef(null);
    const {
      transitionStatus,
      mounted,
      setMounted
    } = useTransitionStatus(item.checked);
    useOpenChangeComplete({
      batch: true,
      enabled: !item.checked,
      open: item.checked,
      ref: indicatorRef,
      onComplete() {
        if (!item.checked) {
          setMounted(false);
        }
      }
    });
    const state2 = {
      checked: item.checked,
      disabled: item.disabled,
      highlighted: item.highlighted,
      transitionStatus
    };
    const element = useRenderElement("span", componentProps, {
      state: state2,
      ref: [forwardedRef, indicatorRef],
      stateAttributesMapping: itemMapping,
      props: {
        "aria-hidden": true,
        ...elementProps
      },
      enabled: keepMounted || mounted
    });
    return element;
  });
  if (true) MenuCheckboxItemIndicator.displayName = "MenuCheckboxItemIndicator";

  // node_modules/@base-ui/react/menu/group/MenuGroup.mjs
  var React112 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/menu/group/MenuGroupContext.mjs
  var React111 = __toESM(require_react(), 1);
  var MenuGroupContext = /* @__PURE__ */ React111.createContext(void 0);
  if (true) MenuGroupContext.displayName = "MenuGroupContext";
  function useMenuGroupRootContext() {
    const context = React111.useContext(MenuGroupContext);
    if (context === void 0) {
      throw new Error(true ? "Base UI: MenuGroupContext is missing. Menu group parts must be used within <Menu.Group> or <Menu.RadioGroup>." : formatErrorMessage_default(31));
    }
    return context;
  }

  // node_modules/@base-ui/react/menu/group/MenuGroup.mjs
  var import_jsx_runtime123 = __toESM(require_jsx_runtime(), 1);
  var MenuGroup = /* @__PURE__ */ React112.forwardRef(function MenuGroup2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      ...elementProps
    } = componentProps;
    const [labelId, setLabelId] = React112.useState(void 0);
    const element = useRenderElement("div", componentProps, {
      ref: forwardedRef,
      props: {
        role: "group",
        "aria-labelledby": labelId,
        ...elementProps
      }
    });
    return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(MenuGroupContext.Provider, {
      value: setLabelId,
      children: element
    });
  });
  if (true) MenuGroup.displayName = "MenuGroup";

  // node_modules/@base-ui/react/menu/group-label/MenuGroupLabel.mjs
  var React113 = __toESM(require_react(), 1);
  var MenuGroupLabel = /* @__PURE__ */ React113.forwardRef(function MenuGroupLabel2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      id: idProp,
      ...elementProps
    } = componentProps;
    const id = useBaseUiId(idProp);
    const setLabelId = useMenuGroupRootContext();
    useIsoLayoutEffect(() => {
      setLabelId(id);
      return () => {
        setLabelId((currentId) => currentId === id ? void 0 : currentId);
      };
    }, [setLabelId, id]);
    return useRenderElement("div", componentProps, {
      ref: forwardedRef,
      props: {
        id,
        "aria-hidden": true,
        ...elementProps
      }
    });
  });
  if (true) MenuGroupLabel.displayName = "MenuGroupLabel";

  // node_modules/@base-ui/react/menu/item/MenuItem.mjs
  var React114 = __toESM(require_react(), 1);
  var MenuItem = /* @__PURE__ */ React114.forwardRef(function MenuItem2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      id: idProp,
      label,
      nativeButton = false,
      disabled: disabledProp = false,
      closeOnClick = true,
      style,
      ...elementProps
    } = componentProps;
    const listItem = useCompositeListItem({
      guess: true,
      label
    });
    const menuPositionerContext = useMenuPositionerContext(true);
    const id = useBaseUiId(idProp);
    const {
      store: store4
    } = useMenuRootContext();
    const rootDisabled = store4.useState("disabled");
    const disabled2 = disabledProp || rootDisabled;
    const highlighted = store4.useState("isActive", listItem.index);
    const itemProps = store4.useState("itemProps");
    const {
      getItemProps,
      itemRef
    } = useMenuItem({
      closeOnClick,
      disabled: disabled2,
      highlighted,
      id,
      store: store4,
      nativeButton,
      nodeId: menuPositionerContext?.context.nodeId,
      itemMetadata: REGULAR_ITEM
    });
    const state2 = {
      disabled: disabled2,
      highlighted
    };
    return useRenderElement("div", componentProps, {
      state: state2,
      props: [itemProps, elementProps, getItemProps],
      ref: [itemRef, forwardedRef, listItem.ref]
    });
  });
  if (true) MenuItem.displayName = "MenuItem";

  // node_modules/@base-ui/react/menu/link-item/MenuLinkItem.mjs
  var React115 = __toESM(require_react(), 1);
  var MenuLinkItem = /* @__PURE__ */ React115.forwardRef(function MenuLinkItem2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      id: idProp,
      label,
      closeOnClick = false,
      style,
      ...elementProps
    } = componentProps;
    const linkRef = React115.useRef(null);
    const listItem = useCompositeListItem({
      guess: true,
      label
    });
    const menuPositionerContext = useMenuPositionerContext(true);
    const nodeId = menuPositionerContext?.context.nodeId;
    const id = useBaseUiId(idProp);
    const {
      store: store4
    } = useMenuRootContext();
    const highlighted = store4.useState("isActive", listItem.index);
    const itemProps = store4.useState("itemProps");
    const typingRef = store4.context.typingRef;
    const {
      getButtonProps,
      buttonRef
    } = useButton({
      native: false,
      composite: true
    });
    const commonProps = useMenuItemCommonProps({
      closeOnClick,
      highlighted,
      id,
      nodeId,
      store: store4,
      typingRef,
      itemRef: linkRef,
      itemMetadata: REGULAR_ITEM
    });
    function getItemProps(externalProps) {
      return mergeProps(commonProps, externalProps, getButtonProps);
    }
    const state2 = {
      highlighted
    };
    return useRenderElement("a", componentProps, {
      state: state2,
      props: [itemProps, elementProps, getItemProps],
      ref: [linkRef, buttonRef, forwardedRef, listItem.ref]
    });
  });
  if (true) MenuLinkItem.displayName = "MenuLinkItem";

  // node_modules/@base-ui/react/menu/popup/MenuPopup.mjs
  var React117 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/toolbar/root/ToolbarRootContext.mjs
  var React116 = __toESM(require_react(), 1);
  var ToolbarRootContext = /* @__PURE__ */ React116.createContext(void 0);
  if (true) ToolbarRootContext.displayName = "ToolbarRootContext";
  function useToolbarRootContext(optional) {
    const context = React116.useContext(ToolbarRootContext);
    if (context === void 0 && !optional) {
      throw new Error(true ? "Base UI: ToolbarRootContext is missing. Toolbar parts must be placed within <Toolbar.Root>." : formatErrorMessage_default(69));
    }
    return context;
  }

  // node_modules/@base-ui/react/menu/popup/MenuPopup.mjs
  var import_jsx_runtime124 = __toESM(require_jsx_runtime(), 1);
  var MenuPopup = /* @__PURE__ */ React117.forwardRef(function MenuPopup2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      finalFocus,
      ...elementProps
    } = componentProps;
    const {
      store: store4
    } = useMenuRootContext();
    const {
      side,
      align
    } = useMenuPositionerContext();
    const insideToolbar = useToolbarRootContext(true) != null;
    const open3 = store4.useState("open");
    const transitionStatus = store4.useState("transitionStatus");
    const popupProps = store4.useState("popupProps");
    const mounted = store4.useState("mounted");
    const instantType = store4.useState("instantType");
    const activeTriggerElement = store4.useState("activeTriggerElement");
    const parent = store4.useState("parent");
    const lastOpenChangeReason = store4.useState("lastOpenChangeReason");
    const rootId = store4.useState("rootId");
    const floatingContext = store4.useState("floatingRootContext");
    const floatingTreeRoot = store4.useState("floatingTreeRoot");
    const closeDelay = store4.useState("closeDelay");
    const hoverEnabled = store4.useState("hoverEnabled");
    const disabled2 = store4.useState("disabled");
    const openMethod = store4.useState("openMethod");
    const isContextMenu = parent.type === "context-menu";
    useOpenChangeComplete({
      open: open3,
      ref: store4.context.popupRef,
      onComplete() {
        if (open3) {
          store4.context.onOpenChangeComplete?.(true);
        }
      }
    });
    React117.useEffect(() => {
      function handleClose(event) {
        store4.setOpen(false, createChangeEventDetails(event.reason, event.domEvent));
      }
      floatingTreeRoot.events.on("close", handleClose);
      return () => {
        floatingTreeRoot.events.off("close", handleClose);
      };
    }, [floatingTreeRoot.events, store4]);
    useHoverFloatingInteraction(floatingContext, {
      enabled: hoverEnabled && !disabled2 && !isContextMenu && parent.type !== "menubar",
      closeDelay
    });
    const setPopupElement = store4.useStateSetter("popupElement");
    const state2 = {
      transitionStatus,
      side,
      align,
      open: open3,
      nested: parent.type === "menu",
      instant: instantType
    };
    const element = useRenderElement("div", componentProps, {
      state: state2,
      ref: [forwardedRef, store4.context.popupRef, setPopupElement],
      stateAttributesMapping: popupTransitionStateMapping,
      props: [popupProps, {
        onKeyDown(event) {
          if (insideToolbar && COMPOSITE_KEYS.has(event.key)) {
            event.stopPropagation();
          }
        }
      }, getDisabledMountTransitionStyles(transitionStatus), elementProps, {
        "data-rootownerid": rootId
      }]
    });
    let returnFocus = parent.type === void 0 || isContextMenu;
    if (activeTriggerElement || parent.type === "menubar" && lastOpenChangeReason !== reason_parts_exports.outsidePress) {
      returnFocus = true;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(FloatingFocusManager, {
      context: floatingContext,
      openInteractionType: openMethod,
      modal: isContextMenu,
      disabled: !mounted,
      returnFocus: finalFocus === void 0 ? returnFocus : finalFocus,
      initialFocus: parent.type !== "menu",
      restoreFocus: true,
      externalTree: parent.type !== "menubar" ? floatingTreeRoot : void 0,
      previousFocusableElement: activeTriggerElement,
      nextFocusableElement: parent.type === void 0 ? store4.context.triggerFocusTargetRef : void 0,
      beforeContentFocusGuardRef: parent.type === void 0 ? store4.context.beforeContentFocusGuardRef : void 0,
      children: element
    });
  });
  if (true) MenuPopup.displayName = "MenuPopup";

  // node_modules/@base-ui/react/menu/portal/MenuPortal.mjs
  var React119 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/menu/portal/MenuPortalContext.mjs
  var React118 = __toESM(require_react(), 1);
  var MenuPortalContext = /* @__PURE__ */ React118.createContext(void 0);
  if (true) MenuPortalContext.displayName = "MenuPortalContext";
  function useMenuPortalContext() {
    const value = React118.useContext(MenuPortalContext);
    if (value === void 0) {
      throw new Error(true ? "Base UI: <Menu.Portal> is missing." : formatErrorMessage_default(32));
    }
    return value;
  }

  // node_modules/@base-ui/react/menu/portal/MenuPortal.mjs
  var import_jsx_runtime125 = __toESM(require_jsx_runtime(), 1);
  var MenuPortal = /* @__PURE__ */ React119.forwardRef(function MenuPortal2(props, forwardedRef) {
    const {
      keepMounted = false,
      ...portalProps
    } = props;
    const {
      store: store4,
      parent
    } = useMenuRootContext();
    const mounted = store4.useState("mounted");
    const shouldRender = mounted || keepMounted;
    if (!shouldRender) {
      return null;
    }
    const portalOwnerRole = parent.type === "menu" || parent.type === "menubar" ? "group" : void 0;
    return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(MenuPortalContext.Provider, {
      value: keepMounted,
      children: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(FloatingPortal, {
        ref: forwardedRef,
        ...portalProps,
        portalOwnerRole
      })
    });
  });
  if (true) MenuPortal.displayName = "MenuPortal";

  // node_modules/@base-ui/react/menu/positioner/MenuPositioner.mjs
  var React120 = __toESM(require_react(), 1);
  var import_jsx_runtime126 = __toESM(require_jsx_runtime(), 1);
  var MenuPositioner = /* @__PURE__ */ React120.forwardRef(function MenuPositioner2(componentProps, forwardedRef) {
    const {
      anchor: anchorProp,
      positionMethod: positionMethodProp = "absolute",
      className,
      render: render5,
      side,
      align: alignProp,
      sideOffset: sideOffsetProp = 0,
      alignOffset: alignOffsetProp = 0,
      collisionBoundary = "clipping-ancestors",
      collisionPadding = 5,
      arrowPadding = 5,
      sticky = false,
      disableAnchorTracking = false,
      collisionAvoidance: collisionAvoidanceProp = DROPDOWN_COLLISION_AVOIDANCE,
      style,
      ...elementProps
    } = componentProps;
    const {
      store: store4
    } = useMenuRootContext();
    const keepMounted = useMenuPortalContext();
    const contextMenuContext = useContextMenuRootContext(true);
    const parent = store4.useState("parent");
    const floatingRootContext = store4.useState("floatingRootContext");
    const floatingTreeRoot = store4.useState("floatingTreeRoot");
    const mounted = store4.useState("mounted");
    const open3 = store4.useState("open");
    const modal = store4.useState("modal");
    const openMethod = store4.useState("openMethod");
    const triggerElement = store4.useState("activeTriggerElement");
    const transitionStatus = store4.useState("transitionStatus");
    const positionerElement = store4.useState("positionerElement");
    const instantType = store4.useState("instantType");
    const adaptiveOrigin2 = store4.useState("adaptiveOrigin");
    const lastOpenChangeReason = store4.useState("lastOpenChangeReason");
    const floatingNodeId = store4.useState("floatingNodeId");
    const floatingParentNodeId = store4.useState("floatingParentNodeId");
    const domReference = floatingRootContext.useState("domReferenceElement");
    const previousTriggerRef = React120.useRef(null);
    const runOnceAnimationsFinish = useAnimationsFinished(positionerElement);
    let anchor = anchorProp;
    let sideOffset = sideOffsetProp;
    let alignOffset = alignOffsetProp;
    let align = alignProp;
    let collisionAvoidance = collisionAvoidanceProp;
    if (parent.type === "context-menu") {
      anchor = anchorProp ?? parent.context?.anchor;
      align = align ?? "start";
      if (!side && align !== "center") {
        alignOffset = componentProps.alignOffset ?? 2;
        sideOffset = componentProps.sideOffset ?? -5;
      }
    }
    let computedSide = side;
    let computedAlign = align;
    if (parent.type === "menu") {
      computedSide = computedSide ?? "inline-end";
      computedAlign = computedAlign ?? "start";
      collisionAvoidance = componentProps.collisionAvoidance ?? POPUP_COLLISION_AVOIDANCE;
    } else if (parent.type === "menubar") {
      computedSide = computedSide ?? (parent.context.orientation === "vertical" ? "inline-end" : "bottom");
      computedAlign = computedAlign ?? "start";
    }
    const contextMenu = parent.type === "context-menu";
    const positioner = useAnchorPositioning({
      anchor,
      floatingRootContext,
      positionMethod: contextMenuContext ? "fixed" : positionMethodProp,
      mounted,
      side: computedSide,
      sideOffset,
      align: computedAlign,
      alignOffset,
      arrowPadding: contextMenu ? 0 : arrowPadding,
      collisionBoundary,
      collisionPadding,
      sticky,
      nodeId: floatingNodeId,
      keepMounted,
      disableAnchorTracking,
      collisionAvoidance,
      shift: contextMenu ? {
        crossAxis: !("side" in collisionAvoidance && collisionAvoidance.side === "flip"),
        rootBoundary: "layoutViewport"
      } : void 0,
      externalTree: floatingTreeRoot,
      adaptiveOrigin: adaptiveOrigin2
    });
    React120.useEffect(() => {
      function onMenuOpenChange(details) {
        if (details.open) {
          if (details.parentNodeId === floatingNodeId) {
            store4.set("hoverEnabled", false);
          }
          if (details.nodeId !== floatingNodeId && details.parentNodeId === store4.select("floatingParentNodeId")) {
            store4.setOpen(false, createChangeEventDetails(reason_parts_exports.siblingOpen));
          }
        }
      }
      floatingTreeRoot.events.on("menuopenchange", onMenuOpenChange);
      return () => {
        floatingTreeRoot.events.off("menuopenchange", onMenuOpenChange);
      };
    }, [store4, floatingTreeRoot.events, floatingNodeId]);
    React120.useEffect(() => {
      if (store4.select("floatingParentNodeId") == null) {
        return void 0;
      }
      function onParentClose(details) {
        if (details.open || details.nodeId !== store4.select("floatingParentNodeId")) {
          return;
        }
        const reason = details.reason ?? reason_parts_exports.siblingOpen;
        store4.setOpen(false, createChangeEventDetails(reason));
      }
      floatingTreeRoot.events.on("menuopenchange", onParentClose);
      return () => {
        floatingTreeRoot.events.off("menuopenchange", onParentClose);
      };
    }, [floatingTreeRoot.events, store4]);
    const closeTimeout = useTimeout();
    React120.useEffect(() => {
      if (!open3) {
        closeTimeout.clear();
      }
    }, [open3, closeTimeout]);
    React120.useEffect(() => {
      function onItemHover(event) {
        if (!open3 || event.nodeId !== store4.select("floatingParentNodeId")) {
          return;
        }
        if (event.target && triggerElement && triggerElement !== event.target) {
          const delay = store4.select("closeDelay");
          if (delay > 0) {
            if (!closeTimeout.isStarted()) {
              closeTimeout.start(delay, () => {
                store4.setOpen(false, createChangeEventDetails(reason_parts_exports.siblingOpen));
              });
            }
          } else {
            store4.setOpen(false, createChangeEventDetails(reason_parts_exports.siblingOpen));
          }
        } else {
          closeTimeout.clear();
        }
      }
      floatingTreeRoot.events.on("itemhover", onItemHover);
      return () => {
        floatingTreeRoot.events.off("itemhover", onItemHover);
      };
    }, [floatingTreeRoot.events, open3, triggerElement, store4, closeTimeout]);
    React120.useEffect(() => {
      const eventDetails = {
        open: open3,
        nodeId: floatingNodeId,
        parentNodeId: floatingParentNodeId,
        reason: store4.select("lastOpenChangeReason")
      };
      floatingTreeRoot.events.emit("menuopenchange", eventDetails);
    }, [floatingTreeRoot.events, open3, store4, floatingNodeId, floatingParentNodeId]);
    useIsoLayoutEffect(() => {
      const currentTrigger = domReference;
      const previousTrigger = previousTriggerRef.current;
      if (currentTrigger) {
        previousTriggerRef.current = currentTrigger;
      }
      if (previousTrigger && currentTrigger && currentTrigger !== previousTrigger) {
        store4.set("instantType", void 0);
        const abortController = new AbortController();
        runOnceAnimationsFinish(() => {
          store4.set("instantType", "trigger-change");
        }, abortController.signal);
        return () => {
          abortController.abort();
        };
      }
      return void 0;
    }, [domReference, runOnceAnimationsFinish, store4]);
    const state2 = {
      open: open3,
      side: positioner.side,
      align: positioner.align,
      anchorHidden: positioner.anchorHidden,
      nested: parent.type === "menu",
      instant: instantType
    };
    const menubarModal = parent.type === "menubar" && parent.context.modal;
    const popupModal = modal && lastOpenChangeReason !== reason_parts_exports.triggerHover;
    useAnchoredPopupScrollLock(open3 && (menubarModal || popupModal), openMethod === "touch", positionerElement, triggerElement);
    const element = usePositioner(componentProps, state2, {
      styles: positioner.positionerStyles,
      transitionStatus,
      props: elementProps,
      refs: [forwardedRef, store4.useStateSetter("positionerElement")],
      hidden: !mounted,
      inert: !open3
    });
    const shouldRenderBackdrop = mounted && parent.type !== "menu" && (parent.type !== "menubar" && modal && lastOpenChangeReason !== reason_parts_exports.triggerHover || parent.type === "menubar" && parent.context.modal);
    let backdropCutout = null;
    if (parent.type === "menubar") {
      backdropCutout = parent.context.contentElement;
    } else if (parent.type === void 0) {
      backdropCutout = triggerElement;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(MenuPositionerContext.Provider, {
      value: positioner,
      children: [shouldRenderBackdrop && /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(InternalBackdrop, {
        ref: parent.type === "context-menu" || parent.type === "nested-context-menu" ? parent.context.internalBackdropRef : null,
        inert: inertValue(!open3),
        cutout: backdropCutout
      }), /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(FloatingNode, {
        id: floatingNodeId,
        children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(CompositeList, {
          elementsRef: store4.context.itemDomElements,
          labelsRef: store4.context.itemLabels,
          children: element
        })
      })]
    });
  });
  if (true) MenuPositioner.displayName = "MenuPositioner";

  // node_modules/@base-ui/react/menu/radio-group/MenuRadioGroup.mjs
  var React122 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/menu/radio-group/MenuRadioGroupContext.mjs
  var React121 = __toESM(require_react(), 1);
  var MenuRadioGroupContext = /* @__PURE__ */ React121.createContext(void 0);
  if (true) MenuRadioGroupContext.displayName = "MenuRadioGroupContext";
  function useMenuRadioGroupContext() {
    const context = React121.useContext(MenuRadioGroupContext);
    if (context === void 0) {
      throw new Error(true ? "Base UI: MenuRadioGroupContext is missing. MenuRadioGroup parts must be placed within <Menu.RadioGroup>." : formatErrorMessage_default(34));
    }
    return context;
  }

  // node_modules/@base-ui/react/menu/radio-group/MenuRadioGroup.mjs
  var import_jsx_runtime127 = __toESM(require_jsx_runtime(), 1);
  var MenuRadioGroup = /* @__PURE__ */ React122.memo(/* @__PURE__ */ React122.forwardRef(function MenuRadioGroup2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      value: valueProp,
      defaultValue: defaultValue2,
      onValueChange: onValueChangeProp,
      disabled: disabled2 = false,
      style,
      "aria-labelledby": ariaLabelledByProp,
      ...elementProps
    } = componentProps;
    const [labelId, setLabelId] = React122.useState(void 0);
    const [value, setValueUnwrapped] = useControlled({
      controlled: valueProp,
      default: defaultValue2,
      name: "MenuRadioGroup"
    });
    const setValue = useStableCallback((newValue, eventDetails) => {
      onValueChangeProp?.(newValue, eventDetails);
      if (eventDetails.isCanceled) {
        return;
      }
      setValueUnwrapped(newValue);
    });
    const state2 = {
      disabled: disabled2
    };
    const element = useRenderElement("div", componentProps, {
      state: state2,
      ref: forwardedRef,
      props: {
        role: "group",
        "aria-labelledby": ariaLabelledByProp ?? labelId,
        "aria-disabled": disabled2 || void 0,
        ...elementProps
      }
    });
    const context = React122.useMemo(() => ({
      value,
      setValue,
      disabled: disabled2
    }), [value, setValue, disabled2]);
    return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(MenuGroupContext.Provider, {
      value: setLabelId,
      children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(MenuRadioGroupContext.Provider, {
        value: context,
        children: element
      })
    });
  }));
  if (true) MenuRadioGroup.displayName = "MenuRadioGroup";

  // node_modules/@base-ui/react/menu/radio-item/MenuRadioItem.mjs
  var React124 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/menu/radio-item/MenuRadioItemContext.mjs
  var React123 = __toESM(require_react(), 1);
  var MenuRadioItemContext = /* @__PURE__ */ React123.createContext(void 0);
  if (true) MenuRadioItemContext.displayName = "MenuRadioItemContext";
  function useMenuRadioItemContext() {
    const context = React123.useContext(MenuRadioItemContext);
    if (context === void 0) {
      throw new Error(true ? "Base UI: MenuRadioItemContext is missing. MenuRadioItem parts must be placed within <Menu.RadioItem>." : formatErrorMessage_default(35));
    }
    return context;
  }

  // node_modules/@base-ui/react/menu/radio-item/MenuRadioItem.mjs
  var import_jsx_runtime128 = __toESM(require_jsx_runtime(), 1);
  var MenuRadioItem = /* @__PURE__ */ React124.forwardRef(function MenuRadioItem2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      id: idProp,
      label,
      nativeButton = false,
      disabled: disabledProp = false,
      closeOnClick = false,
      value,
      style,
      ...elementProps
    } = componentProps;
    const listItem = useCompositeListItem({
      guess: true,
      label
    });
    const menuPositionerContext = useMenuPositionerContext(true);
    const id = useBaseUiId(idProp);
    const {
      store: store4
    } = useMenuRootContext();
    const highlighted = store4.useState("isActive", listItem.index);
    const itemProps = store4.useState("itemProps");
    const {
      value: selectedValue,
      setValue: setSelectedValue,
      disabled: groupDisabled
    } = useMenuRadioGroupContext();
    const rootDisabled = store4.useState("disabled");
    const disabled2 = disabledProp || groupDisabled || rootDisabled;
    const checked2 = selectedValue === value;
    const {
      getItemProps,
      itemRef
    } = useMenuItem({
      closeOnClick,
      disabled: disabled2,
      highlighted,
      id,
      store: store4,
      nativeButton,
      nodeId: menuPositionerContext?.context.nodeId,
      itemMetadata: REGULAR_ITEM
    });
    const state2 = React124.useMemo(() => ({
      disabled: disabled2,
      highlighted,
      checked: checked2
    }), [disabled2, highlighted, checked2]);
    function handleClick(event) {
      const details = createChangeEventDetails(reason_parts_exports.itemPress, event.nativeEvent, void 0, {
        preventUnmountOnClose: NOOP
      });
      setSelectedValue(value, details);
    }
    const element = useRenderElement("div", componentProps, {
      state: state2,
      stateAttributesMapping: itemMapping,
      props: [itemProps, {
        role: "menuitemradio",
        "aria-checked": checked2,
        onClick: handleClick
      }, elementProps, getItemProps],
      ref: [itemRef, forwardedRef, listItem.ref]
    });
    return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(MenuRadioItemContext.Provider, {
      value: state2,
      children: element
    });
  });
  if (true) MenuRadioItem.displayName = "MenuRadioItem";

  // node_modules/@base-ui/react/menu/radio-item-indicator/MenuRadioItemIndicator.mjs
  var React125 = __toESM(require_react(), 1);
  var MenuRadioItemIndicator = /* @__PURE__ */ React125.forwardRef(function MenuRadioItemIndicator2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      keepMounted = false,
      ...elementProps
    } = componentProps;
    const item = useMenuRadioItemContext();
    const indicatorRef = React125.useRef(null);
    const {
      transitionStatus,
      mounted,
      setMounted
    } = useTransitionStatus(item.checked);
    useOpenChangeComplete({
      batch: true,
      enabled: !item.checked,
      open: item.checked,
      ref: indicatorRef,
      onComplete() {
        if (!item.checked) {
          setMounted(false);
        }
      }
    });
    const state2 = {
      checked: item.checked,
      disabled: item.disabled,
      highlighted: item.highlighted,
      transitionStatus
    };
    const element = useRenderElement("span", componentProps, {
      state: state2,
      stateAttributesMapping: itemMapping,
      ref: [forwardedRef, indicatorRef],
      props: {
        "aria-hidden": true,
        ...elementProps
      },
      enabled: keepMounted || mounted
    });
    return element;
  });
  if (true) MenuRadioItemIndicator.displayName = "MenuRadioItemIndicator";

  // node_modules/@base-ui/react/menu/root/MenuRoot.mjs
  var React129 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/menubar/MenubarContext.mjs
  var React126 = __toESM(require_react(), 1);
  var MenubarContext = /* @__PURE__ */ React126.createContext(null);
  if (true) MenubarContext.displayName = "MenubarContext";
  function useMenubarContext(optional) {
    const context = React126.useContext(MenubarContext);
    if (context === null && !optional) {
      throw new Error(true ? "Base UI: MenubarContext is missing. Menubar parts must be placed within <Menubar>." : formatErrorMessage_default(5));
    }
    return context;
  }

  // node_modules/@base-ui/react/menu/store/MenuStore.mjs
  var React127 = __toESM(require_react(), 1);
  var selectors3 = {
    ...popupStoreSelectors,
    disabled: (state2) => state2.parent.type === "menubar" ? state2.parent.context.disabled || state2.disabled : state2.disabled,
    modal: (state2) => (state2.parent.type === void 0 || state2.parent.type === "context-menu") && (state2.modal ?? true),
    openMethod: (state2) => state2.openMethod,
    allowMouseEnter: (state2) => state2.allowMouseEnter,
    highlightItemOnHover: (state2) => state2.highlightItemOnHover,
    parent: (state2) => state2.parent,
    rootId: (state2) => {
      if (state2.parent.type === "menu") {
        return state2.parent.store.select("rootId");
      }
      return state2.parent.type !== void 0 ? state2.parent.context.rootId : state2.rootId;
    },
    activeIndex: (state2) => state2.activeIndex,
    isActive: (state2, itemIndex) => state2.activeIndex === itemIndex,
    hoverEnabled: (state2) => state2.hoverEnabled,
    instantType: (state2) => state2.instantType,
    lastOpenChangeReason: (state2) => state2.openChangeReason,
    floatingTreeRoot: (state2) => {
      if (state2.parent.type === "menu") {
        return state2.parent.store.select("floatingTreeRoot");
      }
      return state2.floatingTreeRoot;
    },
    floatingNodeId: (state2) => state2.floatingNodeId,
    floatingParentNodeId: (state2) => state2.floatingParentNodeId,
    itemProps: (state2) => state2.itemProps,
    closeDelay: (state2) => state2.closeDelay,
    adaptiveOrigin: (state2) => state2.adaptiveOrigin,
    keyboardEventRelay: (state2) => {
      if (state2.keyboardEventRelay) {
        return state2.keyboardEventRelay;
      }
      if (state2.parent.type === "menu") {
        return state2.parent.store.select("keyboardEventRelay");
      }
      return void 0;
    }
  };
  var MenuStore = class extends ReactStore {
    constructor(initialState, floatingId, nested = false) {
      const triggerElements = new PopupTriggerMap();
      const state2 = createInitialState(triggerElements, floatingId, nested, initialState);
      super(state2, createInitialContext(triggerElements), selectors3);
      this.unsubscribeParentListener = this.observe("parent", (parent) => {
        this.unsubscribeParentListener?.();
        if (parent.type === "menu") {
          let rootId = parent.store.select("rootId");
          let floatingTreeRoot = parent.store.select("floatingTreeRoot");
          let keyboardEventRelay = parent.store.select("keyboardEventRelay");
          this.unsubscribeParentListener = parent.store.subscribe(() => {
            const nextRootId = parent.store.select("rootId");
            const nextFloatingTreeRoot = parent.store.select("floatingTreeRoot");
            const nextKeyboardEventRelay = parent.store.select("keyboardEventRelay");
            if (rootId === nextRootId && floatingTreeRoot === nextFloatingTreeRoot && keyboardEventRelay === nextKeyboardEventRelay) {
              return;
            }
            rootId = nextRootId;
            floatingTreeRoot = nextFloatingTreeRoot;
            keyboardEventRelay = nextKeyboardEventRelay;
            this.notifyAll();
          });
          this.context.allowMouseUpTriggerRef = parent.store.context.allowMouseUpTriggerRef;
          return;
        }
        if (parent.type !== void 0) {
          this.context.allowMouseUpTriggerRef = parent.context.allowMouseUpTriggerRef;
        }
        this.unsubscribeParentListener = null;
      });
    }
    setOpen(open3, eventDetails) {
      this.state.floatingRootContext.context.events.emit("setOpen", {
        open: open3,
        eventDetails
      });
    }
    unsubscribeParentListener = null;
  };
  function createNullMenuStore() {
    const triggerElements = new PopupTriggerMap();
    const store4 = new NullStore(Object.freeze(createInitialState(triggerElements)), Object.freeze(createInitialContext(triggerElements)), selectors3);
    return Object.assign(store4, {
      setOpen: NOOP
    });
  }
  function createInitialContext(triggerElements) {
    return {
      positionerRef: /* @__PURE__ */ React127.createRef(),
      popupRef: /* @__PURE__ */ React127.createRef(),
      typingRef: {
        current: false
      },
      itemDomElements: {
        current: []
      },
      itemLabels: {
        current: []
      },
      allowMouseUpTriggerRef: {
        current: false
      },
      triggerFocusTargetRef: /* @__PURE__ */ React127.createRef(),
      beforeContentFocusGuardRef: /* @__PURE__ */ React127.createRef(),
      onOpenChangeComplete: void 0,
      triggerElements
    };
  }
  function createInitialState(triggerElements, floatingId, nested = false, initialState) {
    return {
      ...createInitialPopupStoreState(triggerElements, floatingId, nested),
      disabled: false,
      modal: true,
      openMethod: null,
      allowMouseEnter: false,
      highlightItemOnHover: true,
      parent: {
        type: void 0
      },
      rootId: void 0,
      activeIndex: null,
      hoverEnabled: true,
      instantType: void 0,
      openChangeReason: null,
      floatingTreeRoot: new FloatingTreeStore(),
      floatingNodeId: void 0,
      floatingParentNodeId: null,
      itemProps: EMPTY_OBJECT2,
      keyboardEventRelay: void 0,
      closeDelay: 0,
      adaptiveOrigin: void 0,
      ...initialState
    };
  }

  // node_modules/@base-ui/react/menu/submenu-root/MenuSubmenuRootContext.mjs
  var React128 = __toESM(require_react(), 1);
  var MenuSubmenuRootContext = /* @__PURE__ */ React128.createContext(void 0);
  if (true) MenuSubmenuRootContext.displayName = "MenuSubmenuRootContext";
  function useMenuSubmenuRootContext() {
    return React128.useContext(MenuSubmenuRootContext);
  }

  // node_modules/@base-ui/react/menu/root/MenuRoot.mjs
  var import_jsx_runtime129 = __toESM(require_jsx_runtime(), 1);
  var MenuRoot = fastComponent(function MenuRoot2(props) {
    const {
      children,
      open: openProp,
      onOpenChange,
      onOpenChangeComplete,
      defaultOpen = false,
      disabled: disabledProp = false,
      modal: modalProp,
      loopFocus = true,
      orientation = "vertical",
      actionsRef,
      closeParentOnEsc = false,
      handle,
      triggerId: triggerIdProp,
      defaultTriggerId: defaultTriggerIdProp = null,
      highlightItemOnHover = true
    } = props;
    const contextMenuContext = useContextMenuRootContext(true);
    const parentMenuRootContext = useMenuRootContext(true);
    const menubarContext = useMenubarContext(true);
    const isSubmenu = useMenuSubmenuRootContext();
    const parentFromContext = React129.useMemo(() => {
      if (isSubmenu && parentMenuRootContext) {
        return {
          type: "menu",
          store: parentMenuRootContext.store
        };
      }
      if (menubarContext) {
        return {
          type: "menubar",
          context: menubarContext
        };
      }
      if (contextMenuContext && !parentMenuRootContext) {
        return {
          type: "context-menu",
          context: contextMenuContext
        };
      }
      return {
        type: void 0
      };
    }, [contextMenuContext, parentMenuRootContext, menubarContext, isSubmenu]);
    const rootId = useId();
    const floatingId = useId();
    const floatingParentNodeIdFromContext = useFloatingParentNodeId();
    const parentMenuStore = parentFromContext.type === "menu" ? parentFromContext.store : void 0;
    const animateInitialOpen = (openProp ?? defaultOpen) && parentMenuStore?.state.transitionStatus === "starting";
    const seededInstantType = useRefWithInit(() => animateInitialOpen ? parentMenuStore?.state.instantType : void 0).current;
    const store4 = useMenuRootStore({
      open: defaultOpen,
      openProp,
      activeTriggerId: defaultTriggerIdProp,
      triggerIdProp,
      parent: parentFromContext,
      disabled: disabledProp,
      highlightItemOnHover,
      modal: parentFromContext.type === void 0 ? modalProp : void 0,
      rootId,
      instantType: seededInstantType
    }, floatingId, floatingParentNodeIdFromContext != null);
    store4.useControlledProp("openProp", openProp);
    store4.useControlledProp("triggerIdProp", triggerIdProp);
    store4.useContextCallback("onOpenChangeComplete", onOpenChangeComplete);
    const floatingTreeRoot = store4.useState("floatingTreeRoot");
    const floatingNodeIdFromContext = useFloatingNodeId(floatingTreeRoot);
    const open3 = store4.useState("open");
    const activeTriggerElement = store4.useState("activeTriggerElement");
    const positionerElement = store4.useState("positionerElement");
    const hoverEnabled = store4.useState("hoverEnabled");
    const disabled2 = store4.useState("disabled");
    const lastOpenChangeReason = store4.useState("lastOpenChangeReason");
    const parent = store4.useState("parent");
    const activeIndex = store4.useState("activeIndex");
    const payload = store4.useState("payload");
    const floatingParentNodeId = store4.useState("floatingParentNodeId");
    const openEventRef = React129.useRef(null);
    const allowOutsidePressDismissalRef = React129.useRef(parent.type !== "context-menu");
    const allowOutsidePressDismissalTimeout = useTimeout();
    const allowTouchToCloseRef = React129.useRef(true);
    const allowTouchToCloseTimeout = useTimeout();
    const nested = floatingParentNodeId != null;
    if (true) {
      if (parent.type !== void 0 && modalProp !== void 0) {
        console.warn("Base UI: The `modal` prop is not supported on nested menus. It will be ignored.");
      }
    }
    const {
      openMethod,
      triggerProps: interactionTypeProps
    } = useOpenInteractionType(open3);
    store4.useSyncedValues({
      disabled: disabledProp,
      highlightItemOnHover,
      modal: parent.type === void 0 ? modalProp : void 0,
      openMethod,
      rootId
    });
    useImplicitActiveTrigger(store4);
    const {
      forceUnmount,
      transitionStatus
    } = useOpenStateTransitions(open3, store4, () => {
      store4.set("allowMouseEnter", false);
    }, animateInitialOpen);
    const runOnceAnimationsFinish = useAnimationsFinished(store4.context.popupRef);
    React129.useEffect(() => {
      if (seededInstantType === void 0) {
        return void 0;
      }
      const clearSeededInstantType = () => {
        if (store4.state.instantType === seededInstantType) {
          store4.set("instantType", void 0);
        }
      };
      if (!open3) {
        clearSeededInstantType();
        return void 0;
      }
      if (transitionStatus !== void 0) {
        return void 0;
      }
      if (store4.context.popupRef.current == null) {
        clearSeededInstantType();
        return void 0;
      }
      const abortController = new AbortController();
      runOnceAnimationsFinish(clearSeededInstantType, abortController.signal);
      return () => {
        abortController.abort();
      };
    }, [seededInstantType, open3, transitionStatus, runOnceAnimationsFinish, store4]);
    useIsoLayoutEffect(() => {
      if (contextMenuContext && !parentMenuRootContext) {
        store4.update({
          parent: {
            type: "context-menu",
            context: contextMenuContext
          },
          floatingNodeId: floatingNodeIdFromContext,
          floatingParentNodeId: floatingParentNodeIdFromContext
        });
      } else if (parentMenuRootContext) {
        store4.update({
          floatingNodeId: floatingNodeIdFromContext,
          floatingParentNodeId: floatingParentNodeIdFromContext
        });
      }
    }, [contextMenuContext, parentMenuRootContext, floatingNodeIdFromContext, floatingParentNodeIdFromContext, store4]);
    React129.useEffect(() => {
      if (!open3) {
        openEventRef.current = null;
      }
      if (parent.type !== "context-menu") {
        return;
      }
      if (!open3) {
        allowOutsidePressDismissalTimeout.clear();
        allowOutsidePressDismissalRef.current = false;
        return;
      }
      allowOutsidePressDismissalTimeout.start(500, () => {
        allowOutsidePressDismissalRef.current = true;
      });
    }, [allowOutsidePressDismissalTimeout, open3, parent.type]);
    useIsoLayoutEffect(() => {
      if (!open3 && !hoverEnabled) {
        store4.set("hoverEnabled", true);
      }
    }, [open3, hoverEnabled, store4]);
    const setOpen = useStableCallback((nextOpen, eventDetails) => {
      const reason = eventDetails.reason;
      if (!nextOpen && !store4.select("open")) {
        return;
      }
      if (open3 === nextOpen && eventDetails.trigger === activeTriggerElement && lastOpenChangeReason === reason) {
        return;
      }
      const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(eventDetails);
      if (!nextOpen && eventDetails.trigger == null) {
        eventDetails.trigger = activeTriggerElement ?? void 0;
      }
      onOpenChange?.(nextOpen, eventDetails);
      if (eventDetails.isCanceled) {
        return;
      }
      store4.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails);
      const nativeEvent = eventDetails.event;
      if (nextOpen === false && nativeEvent?.type === "click" && nativeEvent.pointerType === "touch" && !allowTouchToCloseRef.current) {
        return;
      }
      if (nextOpen && reason === reason_parts_exports.triggerFocus) {
        allowTouchToCloseRef.current = false;
        allowTouchToCloseTimeout.start(300, () => {
          allowTouchToCloseRef.current = true;
        });
      } else {
        allowTouchToCloseRef.current = true;
        allowTouchToCloseTimeout.clear();
      }
      const isKeyboardClick = (reason === reason_parts_exports.triggerPress || reason === reason_parts_exports.itemPress) && nativeEvent.detail === 0;
      const isDismissClose = !nextOpen && (reason === reason_parts_exports.escapeKey || reason == null);
      openEventRef.current = eventDetails.event;
      const popupOpenState = createPopupOpenState(store4.state, nextOpen, eventDetails.trigger, shouldPreventUnmountOnClose());
      popupOpenState.openChangeReason = reason;
      if (parent.type === "menubar" && (reason === reason_parts_exports.triggerFocus || reason === reason_parts_exports.focusOut || reason === reason_parts_exports.triggerHover || reason === reason_parts_exports.listNavigation || reason === reason_parts_exports.siblingOpen)) {
        popupOpenState.instantType = "group";
      } else if (isKeyboardClick || isDismissClose) {
        popupOpenState.instantType = isKeyboardClick ? "click" : "dismiss";
      } else {
        popupOpenState.instantType = void 0;
      }
      store4.update(popupOpenState);
    });
    const floatingRootContext = useSyncedFloatingRootContext({
      popupStore: store4,
      floatingRootContext: store4.state.floatingRootContext,
      floatingId,
      nested: floatingParentNodeIdFromContext != null,
      onOpenChange: setOpen
    });
    const floatingEvents = floatingRootContext.context.events;
    useIsoLayoutEffect(() => {
      const handleSetOpenEvent = ({
        open: nextOpen,
        eventDetails
      }) => setOpen(nextOpen, eventDetails);
      floatingEvents.on("setOpen", handleSetOpenEvent);
      return () => {
        floatingEvents?.off("setOpen", handleSetOpenEvent);
      };
    }, [floatingEvents, setOpen]);
    const handleImperativeClose = React129.useCallback(() => {
      store4.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction));
    }, [store4]);
    React129.useImperativeHandle(actionsRef, () => ({
      unmount: forceUnmount,
      close: handleImperativeClose
    }), [forceUnmount, handleImperativeClose]);
    let ctx9;
    if (parent.type === "context-menu") {
      ctx9 = parent.context;
    }
    React129.useImperativeHandle(ctx9?.positionerRef, () => positionerElement, [positionerElement]);
    React129.useImperativeHandle(ctx9?.actionsRef, () => ({
      setOpen
    }), [setOpen]);
    const dismiss = useDismiss(floatingRootContext, {
      enabled: !disabled2,
      bubbles: {
        escapeKey: closeParentOnEsc && parent.type === "menu"
      },
      outsidePress() {
        if (parent.type !== "context-menu" || openEventRef.current?.type === "contextmenu") {
          return true;
        }
        return allowOutsidePressDismissalRef.current;
      },
      externalTree: nested ? floatingTreeRoot : void 0
    });
    const direction = useDirection();
    const setActiveIndex = React129.useCallback((index3) => {
      if (store4.select("activeIndex") === index3) {
        return;
      }
      store4.set("activeIndex", index3);
    }, [store4]);
    const listNavigation2 = useListNavigation(floatingRootContext, {
      enabled: !disabled2,
      listRef: store4.context.itemDomElements,
      activeIndex,
      nested: parent.type !== void 0,
      loopFocus,
      orientation,
      parentOrientation: parent.type === "menubar" ? parent.context.orientation : void 0,
      rtl: direction === "rtl",
      disabledIndices: EMPTY_ARRAY3,
      onNavigate: setActiveIndex,
      openOnArrowKeyDown: parent.type !== "context-menu",
      externalTree: nested ? floatingTreeRoot : void 0,
      focusItemOnHover: highlightItemOnHover
    });
    const onTyping = React129.useCallback((nextTyping) => {
      store4.context.typingRef.current = nextTyping;
    }, [store4]);
    const typeahead = useTypeahead(floatingRootContext, {
      enabled: !disabled2,
      listRef: store4.context.itemLabels,
      elementsRef: store4.context.itemDomElements,
      activeIndex,
      resetMs: TYPEAHEAD_RESET_MS,
      onMatch: (index3) => {
        if (open3 && index3 !== activeIndex) {
          store4.set("activeIndex", index3);
        }
      },
      onTyping
    });
    const activeTriggerProps = React129.useMemo(() => {
      const mergedProps = mergeProps(typeahead.reference, listNavigation2.reference, dismiss.reference, {
        onMouseMove() {
          store4.set("allowMouseEnter", true);
        }
      }, interactionTypeProps);
      mergedProps["aria-haspopup"] = "menu";
      mergedProps["aria-expanded"] = open3;
      return mergedProps;
    }, [store4, typeahead.reference, listNavigation2.reference, dismiss.reference, interactionTypeProps, open3]);
    const inactiveTriggerProps = React129.useMemo(() => {
      const mergedProps = mergeProps(listNavigation2.trigger, dismiss.trigger, interactionTypeProps);
      mergedProps["aria-haspopup"] = "menu";
      mergedProps["aria-expanded"] = false;
      return mergedProps;
    }, [listNavigation2.trigger, dismiss.trigger, interactionTypeProps]);
    useRefWithInit(() => {
      store4.update({
        inactiveTriggerProps
      });
      return null;
    });
    const popupProps = React129.useMemo(() => mergeProps(FOCUSABLE_POPUP_PROPS, {
      id: floatingId,
      role: "menu",
      // `menu` is implicitly vertical, so only the non-default value needs to be rendered.
      "aria-orientation": orientation === "horizontal" ? "horizontal" : void 0,
      "aria-labelledby": activeTriggerElement?.id,
      onMouseMove() {
        store4.set("allowMouseEnter", true);
        if (parent.type === "menu") {
          store4.set("hoverEnabled", false);
        }
      },
      onClick() {
        if (store4.select("hoverEnabled")) {
          store4.set("hoverEnabled", false);
        }
      },
      onKeyDown(event) {
        const relay = store4.select("keyboardEventRelay");
        if (relay && !event.isPropagationStopped()) {
          relay(event);
        }
      }
    }, typeahead.floating, listNavigation2.floating, dismiss.floating), [activeTriggerElement, floatingId, orientation, parent.type, store4, typeahead.floating, listNavigation2.floating, dismiss.floating]);
    const itemProps = listNavigation2.item ?? EMPTY_OBJECT2;
    usePopupInteractionProps(store4, {
      floatingRootContext,
      activeTriggerProps,
      inactiveTriggerProps,
      popupProps,
      itemProps
    });
    const context = React129.useMemo(() => ({
      store: store4,
      parent: parentFromContext
    }), [store4, parentFromContext]);
    const content = /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(MenuRootContext.Provider, {
      value: context,
      children: [handle && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(PopupHandleAttachment, {
        handle,
        store: store4
      }), typeof children === "function" ? children({
        payload
      }) : children]
    });
    if (parent.type === void 0 || parent.type === "context-menu") {
      return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(FloatingTree, {
        externalTree: floatingTreeRoot,
        children: content
      });
    }
    return content;
  });
  if (true) MenuRoot.displayName = "MenuRoot";
  function useMenuRootStore(initialState, floatingId, nested) {
    const store4 = useRefWithInit(() => new MenuStore(initialState, floatingId, nested)).current;
    return store4;
  }

  // node_modules/@base-ui/react/menu/submenu-root/MenuSubmenuRoot.mjs
  var React130 = __toESM(require_react(), 1);
  var import_jsx_runtime130 = __toESM(require_jsx_runtime(), 1);
  function MenuSubmenuRoot(props) {
    const parentMenu = useMenuRootContext().store;
    const contextValue = React130.useMemo(() => ({
      parentMenu
    }), [parentMenu]);
    return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(MenuSubmenuRootContext.Provider, {
      value: contextValue,
      children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(MenuRoot, {
        ...props
      })
    });
  }

  // node_modules/@base-ui/react/menu/trigger/MenuTrigger.mjs
  var React134 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/internals/composite/item/useCompositeItem.mjs
  var React131 = __toESM(require_react(), 1);
  function useCompositeItem(params = {}) {
    const {
      highlightItemOnHover,
      highlightedIndex,
      onHighlightedIndexChange
    } = useCompositeRootContext();
    const {
      ref,
      index: index3
    } = useCompositeListItem(params);
    const isHighlighted = highlightedIndex === index3;
    const itemRef = React131.useRef(null);
    const mergedRef = useMergedRefs(ref, itemRef);
    const compositeProps = {
      tabIndex: isHighlighted ? 0 : -1,
      onFocus() {
        onHighlightedIndexChange(index3);
      },
      onMouseMove() {
        const item = itemRef.current;
        if (!highlightItemOnHover || !item) {
          return;
        }
        const disabled2 = item.hasAttribute("disabled") || item.ariaDisabled === "true";
        if (!isHighlighted && !disabled2) {
          item.focus();
        }
      }
    };
    return {
      compositeProps,
      compositeRef: mergedRef,
      index: index3
    };
  }

  // node_modules/@base-ui/react/internals/composite/item/CompositeItem.mjs
  function CompositeItem(componentProps) {
    const {
      render: render5,
      className,
      style,
      state: state2 = EMPTY_OBJECT2,
      props = EMPTY_ARRAY3,
      refs = EMPTY_ARRAY3,
      metadata,
      stateAttributesMapping: stateAttributesMapping8,
      tag = "div",
      ...elementProps
    } = componentProps;
    const {
      compositeProps,
      compositeRef
    } = useCompositeItem({
      metadata
    });
    return useRenderElement(tag, componentProps, {
      state: state2,
      // The composite ref attaches first so an outer item wins when nested items share a DOM node.
      ref: [compositeRef, ...refs],
      props: [compositeProps, ...props, elementProps],
      stateAttributesMapping: stateAttributesMapping8
    });
  }

  // node_modules/@base-ui/react/menu/utils/findRootOwnerId.mjs
  function findRootOwnerId(node) {
    if (isHTMLElement(node) && node.hasAttribute("data-rootownerid")) {
      return node.getAttribute("data-rootownerid");
    }
    if (isLastTraversableNode(node)) {
      return void 0;
    }
    return findRootOwnerId(getParentNode(node));
  }

  // node_modules/@base-ui/react/utils/popups/useTriggerFocusGuards.mjs
  var React132 = __toESM(require_react(), 1);
  var ReactDOM8 = __toESM(require_react_dom(), 1);
  function useTriggerFocusGuards(store4, triggerElementRef) {
    const preFocusGuardRef = React132.useRef(null);
    function handlePreFocusGuardFocus(event) {
      ReactDOM8.flushSync(() => {
        store4.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent, event.currentTarget));
      });
      const previousTabbable = getTabbableBeforeElement(preFocusGuardRef.current);
      previousTabbable?.focus();
    }
    function handleFocusTargetFocus(event) {
      const positionerElement = store4.select("positionerElement");
      if (positionerElement && isOutsideEvent(event, positionerElement)) {
        store4.context.beforeContentFocusGuardRef.current?.focus();
      } else {
        ReactDOM8.flushSync(() => {
          store4.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent, event.currentTarget));
        });
        let nextTabbable = getTabbableAfterElement(store4.context.triggerFocusTargetRef.current || triggerElementRef.current);
        while (nextTabbable !== null && contains(positionerElement, nextTabbable)) {
          const prevTabbable = nextTabbable;
          nextTabbable = getNextTabbable(nextTabbable);
          if (nextTabbable === prevTabbable) {
            break;
          }
        }
        nextTabbable?.focus();
      }
    }
    return {
      preFocusGuardRef,
      handlePreFocusGuardFocus,
      handleFocusTargetFocus
    };
  }

  // node_modules/@base-ui/react/utils/useMixedToggleClickHandler.mjs
  var React133 = __toESM(require_react(), 1);
  function useMixedToggleClickHandler(params) {
    const {
      enabled = true,
      mouseDownAction,
      open: open3
    } = params;
    const ignoreClickRef = React133.useRef(false);
    return React133.useMemo(() => {
      if (!enabled) {
        return EMPTY_OBJECT2;
      }
      return {
        onMouseDown: (event) => {
          if (mouseDownAction === "open" && !open3 || mouseDownAction === "close" && open3) {
            ignoreClickRef.current = true;
            ownerDocument(event.currentTarget).addEventListener("click", () => {
              ignoreClickRef.current = false;
            }, {
              once: true
            });
          }
        },
        onClick: (event) => {
          if (ignoreClickRef.current) {
            ignoreClickRef.current = false;
            event.preventBaseUIHandler();
          }
        }
      };
    }, [enabled, mouseDownAction, open3]);
  }

  // node_modules/@base-ui/react/menu/trigger/MenuTrigger.mjs
  var import_jsx_runtime131 = __toESM(require_jsx_runtime(), 1);
  var MenuTrigger = fastComponentRef(function MenuTrigger2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      disabled: disabledProp = false,
      nativeButton = true,
      id: idProp,
      openOnHover: openOnHoverProp,
      delay = 100,
      closeDelay = 0,
      handle,
      payload,
      ...elementProps
    } = componentProps;
    const rootContext = useMenuRootContext(true);
    const handleStore = usePopupHandleStore(handle);
    const store4 = handleStore ?? rootContext?.store;
    if (!store4) {
      throw new Error(true ? "Base UI: <Menu.Trigger> must be either used within a <Menu.Root> component or provided with a handle." : formatErrorMessage_default(85));
    }
    const thisTriggerId = useBaseUiId(idProp);
    const isTriggerActive = store4.useState("isTriggerActive", thisTriggerId);
    const floatingRootContext = store4.useState("floatingRootContext");
    const isOpenedByThisTrigger = store4.useState("isOpenedByTrigger", thisTriggerId);
    const popupId = store4.useState("triggerPopupId", thisTriggerId);
    const triggerElementRef = React134.useRef(null);
    const parent = useMenuParent();
    const compositeRootContext = useCompositeRootContext(true);
    const floatingTreeRootFromContext = useFloatingTree();
    const floatingTreeRoot = React134.useMemo(() => {
      return floatingTreeRootFromContext ?? new FloatingTreeStore();
    }, [floatingTreeRootFromContext]);
    const floatingNodeId = useFloatingNodeId(floatingTreeRoot);
    const floatingParentNodeId = useFloatingParentNodeId();
    const {
      registerTrigger,
      isMountedByThisTrigger
    } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store4, {
      payload,
      closeDelay,
      parent,
      floatingTreeRoot,
      floatingNodeId,
      floatingParentNodeId,
      keyboardEventRelay: compositeRootContext?.relayKeyboardEvent
    });
    const isInMenubar = parent.type === "menubar";
    const rootDisabled = store4.useState("disabled");
    const disabled2 = disabledProp || rootDisabled || isInMenubar && parent.context.disabled;
    const {
      getButtonProps,
      buttonRef
    } = useButton({
      disabled: disabled2,
      native: nativeButton
    });
    React134.useEffect(() => {
      if (!isOpenedByThisTrigger && parent.type === void 0) {
        store4.context.allowMouseUpTriggerRef.current = false;
      }
    }, [store4, isOpenedByThisTrigger, parent.type]);
    const triggerRef = React134.useRef(null);
    const allowMouseUpTriggerTimeout = useTimeout();
    const handleDocumentMouseUp = useStableCallback((mouseEvent) => {
      if (!triggerRef.current) {
        return;
      }
      allowMouseUpTriggerTimeout.clear();
      store4.context.allowMouseUpTriggerRef.current = false;
      const mouseUpTarget = mouseEvent.target;
      if (contains(triggerRef.current, mouseUpTarget) || contains(store4.select("positionerElement"), mouseUpTarget) || mouseUpTarget === triggerRef.current) {
        return;
      }
      if (mouseUpTarget != null && findRootOwnerId(mouseUpTarget) === store4.select("rootId")) {
        return;
      }
      if (isMouseWithinBounds(mouseEvent, triggerRef.current)) {
        return;
      }
      floatingTreeRoot.events.emit("close", {
        domEvent: mouseEvent,
        reason: reason_parts_exports.cancelOpen
      });
    });
    React134.useEffect(() => {
      if (isOpenedByThisTrigger && store4.select("lastOpenChangeReason") === reason_parts_exports.triggerHover) {
        const doc = ownerDocument(triggerRef.current);
        doc.addEventListener("mouseup", handleDocumentMouseUp, {
          once: true
        });
      }
    }, [isOpenedByThisTrigger, handleDocumentMouseUp, store4]);
    const parentMenubarHasSubmenuOpen = isInMenubar && parent.context.hasSubmenuOpen;
    const openOnHover = openOnHoverProp ?? parentMenubarHasSubmenuOpen;
    const hoverProps = useHoverReferenceInteraction(floatingRootContext, {
      enabled: openOnHover && !disabled2 && (!isInMenubar || parentMenubarHasSubmenuOpen && !isMountedByThisTrigger),
      handleClose: safePolygon({
        blockPointerEvents: !isInMenubar
      }),
      mouseOnly: true,
      move: false,
      restMs: parent.type === void 0 ? delay : void 0,
      delay: {
        close: closeDelay
      },
      triggerElementRef,
      externalTree: floatingTreeRoot,
      isActiveTrigger: isTriggerActive,
      isClosing: () => store4.select("transitionStatus") === "ending"
    });
    const stickIfOpen = useStickIfOpen(isOpenedByThisTrigger, store4.select("lastOpenChangeReason"));
    const click = useClick(floatingRootContext, {
      enabled: !disabled2,
      event: isOpenedByThisTrigger && isInMenubar ? "click" : "mousedown",
      toggle: true,
      ignoreMouse: false,
      stickIfOpen: parent.type === void 0 ? stickIfOpen : false
    });
    const focus2 = useFocus(floatingRootContext, {
      enabled: !disabled2 && parentMenubarHasSubmenuOpen
    });
    const mixedToggleHandlers = useMixedToggleClickHandler({
      open: isOpenedByThisTrigger,
      enabled: isInMenubar,
      mouseDownAction: "open"
    });
    const localInteractionProps = React134.useMemo(() => mergeProps(focus2.reference, click.reference), [focus2.reference, click.reference]);
    const rootTriggerProps = store4.useState("triggerProps", isMountedByThisTrigger);
    const {
      preFocusGuardRef,
      handlePreFocusGuardFocus,
      handleFocusTargetFocus
    } = useTriggerFocusGuards(store4, triggerElementRef);
    const state2 = {
      disabled: disabled2,
      open: isOpenedByThisTrigger
    };
    const ref = [triggerRef, forwardedRef, buttonRef, registerTrigger, triggerElementRef];
    const props = [localInteractionProps, hoverProps ?? EMPTY_OBJECT2, rootTriggerProps, {
      "aria-haspopup": "menu",
      "aria-controls": popupId,
      id: thisTriggerId,
      onMouseDown: (event) => {
        if (store4.select("open")) {
          return;
        }
        allowMouseUpTriggerTimeout.start(200, () => {
          store4.context.allowMouseUpTriggerRef.current = true;
        });
        const doc = ownerDocument(event.currentTarget);
        doc.addEventListener("mouseup", handleDocumentMouseUp, {
          once: true
        });
      }
    }, isInMenubar ? {
      role: "menuitem"
    } : {}, mixedToggleHandlers, elementProps, getButtonProps];
    const element = useRenderElement("button", componentProps, {
      enabled: !isInMenubar,
      stateAttributesMapping: pressableTriggerOpenStateMapping,
      state: state2,
      ref,
      props
    });
    if (isInMenubar) {
      return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(CompositeItem, {
        tag: "button",
        render: render5,
        className,
        style,
        state: state2,
        refs: ref,
        props,
        stateAttributesMapping: pressableTriggerOpenStateMapping
      });
    }
    if (isOpenedByThisTrigger) {
      return /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(React134.Fragment, {
        children: [/* @__PURE__ */ (0, import_jsx_runtime131.jsx)(FocusGuard, {
          ref: preFocusGuardRef,
          onFocus: handlePreFocusGuardFocus
        }, `${thisTriggerId}-pre-focus-guard`), /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(React134.Fragment, {
          children: element
        }, thisTriggerId), /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(FocusGuard, {
          ref: store4.context.triggerFocusTargetRef,
          onFocus: handleFocusTargetFocus
        }, `${thisTriggerId}-post-focus-guard`)]
      });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(React134.Fragment, {
      children: element
    }, thisTriggerId);
  });
  if (true) MenuTrigger.displayName = "MenuTrigger";
  function useStickIfOpen(open3, openReason) {
    const stickIfOpenTimeout = useTimeout();
    const [stickIfOpen, setStickIfOpen] = React134.useState(false);
    useIsoLayoutEffect(() => {
      if (open3 && openReason === reason_parts_exports.triggerHover) {
        setStickIfOpen(true);
        stickIfOpenTimeout.start(PATIENT_CLICK_THRESHOLD, () => {
          setStickIfOpen(false);
        });
      } else if (!open3) {
        stickIfOpenTimeout.clear();
        setStickIfOpen(false);
      }
    }, [open3, openReason, stickIfOpenTimeout]);
    return stickIfOpen;
  }
  function useMenuParent() {
    const menubarContext = useMenubarContext(true);
    const parent = React134.useMemo(() => {
      if (menubarContext) {
        return {
          type: "menubar",
          context: menubarContext
        };
      }
      return {
        type: void 0
      };
    }, [menubarContext]);
    return parent;
  }

  // node_modules/@base-ui/react/menu/viewport/MenuViewport.mjs
  var React139 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/utils/usePopupViewport.mjs
  var React138 = __toESM(require_react(), 1);
  var ReactDOM9 = __toESM(require_react_dom(), 1);

  // node_modules/@base-ui/utils/usePreviousValue.mjs
  var React135 = __toESM(require_react(), 1);
  function usePreviousValue(value) {
    const [state2, setState] = React135.useState({
      current: value,
      previous: null
    });
    if (!Object.is(value, state2.current)) {
      setState({
        current: value,
        previous: state2.current
      });
    }
    return state2.previous;
  }

  // node_modules/@base-ui/react/utils/usePopupAutoResize.mjs
  var React136 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/utils/getCssDimensions.mjs
  function getCssDimensions2(element) {
    const css = getComputedStyle2(element);
    let width = parseFloat(css.width) || 0;
    let height = parseFloat(css.height) || 0;
    const hasOffset = isHTMLElement(element);
    const offsetWidth = hasOffset ? element.offsetWidth : width;
    const offsetHeight = hasOffset ? element.offsetHeight : height;
    const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
    if (shouldFallback) {
      width = offsetWidth;
      height = offsetHeight;
    }
    return {
      width,
      height
    };
  }

  // node_modules/@base-ui/react/utils/CommonPopupCssVars.mjs
  var popupWidth = "--popup-width";
  var popupHeight = "--popup-height";

  // node_modules/@base-ui/react/utils/usePopupAutoResize.mjs
  function usePopupAutoResize(parameters) {
    const {
      popupElement,
      positionerElement,
      content,
      mounted,
      onMeasureLayout: onMeasureLayoutParam,
      onMeasureLayoutComplete: onMeasureLayoutCompleteParam,
      side,
      direction
    } = parameters;
    const runOnceAnimationsFinish = useAnimationsFinished(popupElement, true);
    const animationFrame = useAnimationFrame();
    const committedDimensionsRef = React136.useRef(null);
    const isInitialRenderRef = React136.useRef(true);
    const restoreAnchoringStylesRef = React136.useRef(NOOP);
    const onMeasureLayout = useStableCallback(onMeasureLayoutParam);
    const onMeasureLayoutComplete = useStableCallback(onMeasureLayoutCompleteParam);
    const anchoringStyles = React136.useMemo(() => getPopupAnchoringStyles(side, direction), [side, direction]);
    useIsoLayoutEffect(() => {
      if (!mounted) {
        restoreAnchoringStylesRef.current = NOOP;
        isInitialRenderRef.current = true;
        committedDimensionsRef.current = null;
        return void 0;
      }
      if (!popupElement || !positionerElement) {
        return void 0;
      }
      restoreAnchoringStylesRef.current = applyElementStyles(popupElement, anchoringStyles);
      setPopupCssSize(popupElement, "auto");
      const restorePopupPosition = overrideElementStyle(popupElement, "position", "static");
      const restorePopupTransform = overrideElementStyle(popupElement, "transform", "none");
      const restorePopupScale = overrideElementStyle(popupElement, "scale", "1");
      const restorePositionerAvailableSize = applyElementStyles(positionerElement, {
        [availableWidth]: "max-content",
        [availableHeight]: "max-content"
      });
      function restoreMeasurementOverrides() {
        restorePopupPosition();
        restorePopupTransform();
        restorePositionerAvailableSize();
      }
      function restoreMeasurementOverridesIncludingScale() {
        restoreMeasurementOverrides();
        restorePopupScale();
      }
      onMeasureLayout?.();
      if (isInitialRenderRef.current || committedDimensionsRef.current === null) {
        setPositionerCssSize(positionerElement, "max-content");
        const dimensions = getCssDimensions2(popupElement);
        committedDimensionsRef.current = dimensions;
        setPositionerCssSize(positionerElement, dimensions);
        restoreMeasurementOverridesIncludingScale();
        onMeasureLayoutComplete?.(null, dimensions);
        isInitialRenderRef.current = false;
        return () => {
          restoreAnchoringStylesRef.current();
          restoreAnchoringStylesRef.current = NOOP;
        };
      }
      setPositionerCssSize(positionerElement, "max-content");
      const previousDimensions = committedDimensionsRef.current;
      const newDimensions = getCssDimensions2(popupElement);
      committedDimensionsRef.current = newDimensions;
      setPopupCssSize(popupElement, previousDimensions);
      restoreMeasurementOverridesIncludingScale();
      onMeasureLayoutComplete?.(previousDimensions, newDimensions);
      setPositionerCssSize(positionerElement, newDimensions);
      const abortController = new AbortController();
      animationFrame.request(() => {
        setPopupCssSize(popupElement, newDimensions);
        runOnceAnimationsFinish(() => {
          popupElement.style.setProperty(popupWidth, "auto");
          popupElement.style.setProperty(popupHeight, "auto");
        }, abortController.signal);
      });
      return () => {
        abortController.abort();
        animationFrame.cancel();
        restoreAnchoringStylesRef.current();
        restoreAnchoringStylesRef.current = NOOP;
      };
    }, [content, popupElement, positionerElement, runOnceAnimationsFinish, animationFrame, mounted, onMeasureLayout, onMeasureLayoutComplete, anchoringStyles]);
  }
  function getPopupAnchoringStyles(side, direction) {
    const isPhysicalTop = side === "top";
    const isPhysicalLeft = side === "left" || side === (direction === "rtl" ? "inline-end" : "inline-start");
    if (!isPhysicalTop && !isPhysicalLeft) {
      return EMPTY_OBJECT2;
    }
    return {
      position: "absolute",
      [isPhysicalTop ? "bottom" : "top"]: "0",
      [isPhysicalLeft ? "right" : "left"]: "0"
    };
  }
  function overrideElementStyle(element, property, value) {
    const originalValue = element.style.getPropertyValue(property);
    element.style.setProperty(property, value);
    return () => {
      element.style.setProperty(property, originalValue);
    };
  }
  function applyElementStyles(element, styles) {
    const restorers = [];
    for (const [key, value] of Object.entries(styles)) {
      restorers.push(overrideElementStyle(element, key, value));
    }
    return restorers.length ? () => {
      restorers.forEach((restore) => restore());
    } : NOOP;
  }
  function setPopupCssSize(popupElement, size4) {
    const width = size4 === "auto" ? "auto" : `${size4.width}px`;
    const height = size4 === "auto" ? "auto" : `${size4.height}px`;
    popupElement.style.setProperty(popupWidth, width);
    popupElement.style.setProperty(popupHeight, height);
  }
  function setPositionerCssSize(positionerElement, size4) {
    const width = size4 === "max-content" ? "max-content" : `${size4.width}px`;
    const height = size4 === "max-content" ? "max-content" : `${size4.height}px`;
    positionerElement.style.setProperty(positionerWidth, width);
    positionerElement.style.setProperty(positionerHeight, height);
  }

  // node_modules/@base-ui/react/direction-provider/DirectionProvider.mjs
  var React137 = __toESM(require_react(), 1);
  var import_jsx_runtime132 = __toESM(require_jsx_runtime(), 1);
  var DirectionProvider = function DirectionProvider2(props) {
    const {
      direction = "ltr"
    } = props;
    const contextValue = React137.useMemo(() => ({
      direction
    }), [direction]);
    return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(DirectionContext.Provider, {
      value: contextValue,
      children: props.children
    });
  };
  if (true) DirectionProvider.displayName = "DirectionProvider";

  // node_modules/@base-ui/react/utils/adaptiveOriginMiddleware.mjs
  var adaptiveOrigin = {
    name: "adaptiveOrigin",
    async fn(state2) {
      const {
        x: rawX,
        y: rawY,
        rects: {
          floating: floatRect
        },
        elements: {
          floating
        },
        platform: platform3,
        strategy,
        placement
      } = state2;
      const win = getWindow(floating);
      const styles = win.getComputedStyle(floating);
      const hasTransition = styles.transitionDuration !== "0s" && styles.transitionDuration !== "";
      if (!hasTransition) {
        return {
          x: rawX,
          y: rawY,
          data: DEFAULT_SIDES
        };
      }
      const offsetParent = await platform3.getOffsetParent?.(floating);
      let offsetDimensions = {
        width: 0,
        height: 0
      };
      if (strategy === "fixed" && win?.visualViewport) {
        offsetDimensions = {
          width: win.visualViewport.width,
          height: win.visualViewport.height
        };
      } else if (offsetParent === win) {
        const doc = ownerDocument(floating);
        offsetDimensions = {
          width: doc.documentElement.clientWidth,
          height: doc.documentElement.clientHeight
        };
      } else if (await platform3.isElement?.(offsetParent)) {
        offsetDimensions = await platform3.getDimensions(offsetParent);
      }
      const currentSide = getSide(placement);
      let x2 = rawX;
      let y3 = rawY;
      if (currentSide === "left") {
        x2 = offsetDimensions.width - (rawX + floatRect.width);
      }
      if (currentSide === "top") {
        y3 = offsetDimensions.height - (rawY + floatRect.height);
      }
      const sideX = currentSide === "left" ? "right" : DEFAULT_SIDES.sideX;
      const sideY = currentSide === "top" ? "bottom" : DEFAULT_SIDES.sideY;
      return {
        x: x2,
        y: y3,
        data: {
          sideX,
          sideY
        }
      };
    }
  };

  // node_modules/@base-ui/react/utils/CommonViewportDataAttributes.mjs
  var activationDirection = "data-activation-direction";

  // node_modules/@base-ui/react/utils/usePopupViewport.mjs
  var import_jsx_runtime133 = __toESM(require_jsx_runtime(), 1);
  var popupViewportStateMapping = {
    activationDirection: (value) => value ? {
      [activationDirection]: value
    } : null
  };
  function usePopupViewport(parameters) {
    const {
      store: store4,
      side,
      children
    } = parameters;
    const direction = useDirection();
    const activeTrigger = store4.useState("activeTriggerElement");
    const activeTriggerId = store4.useState("activeTriggerId");
    const open3 = store4.useState("open");
    const payload = store4.useState("payload");
    const mounted = store4.useState("mounted");
    const popupElement = store4.useState("popupElement");
    const positionerElement = store4.useState("positionerElement");
    const previousActiveTrigger = usePreviousValue(open3 ? activeTrigger : null);
    const currentContentKey = usePopupContentKey(activeTriggerId, payload);
    const capturedNodeRef = React138.useRef(null);
    const [previousContentNode, setPreviousContentNode] = React138.useState(null);
    const [newTriggerOffset, setNewTriggerOffset] = React138.useState(null);
    const currentContainerRef = React138.useRef(null);
    const previousContainerRef = React138.useRef(null);
    const onAnimationsFinished = useAnimationsFinished(currentContainerRef, true);
    const cleanupFrame = useAnimationFrame();
    const cleanupControllerRef = React138.useRef(null);
    const [previousContentDimensions, setPreviousContentDimensions] = React138.useState(null);
    const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React138.useState(false);
    useIsoLayoutEffect(() => {
      store4.set("adaptiveOrigin", adaptiveOrigin);
      return () => {
        store4.set("adaptiveOrigin", void 0);
      };
    }, [store4]);
    const handleMeasureLayout = useStableCallback(() => {
      currentContainerRef.current?.style.setProperty("animation", "none");
      currentContainerRef.current?.style.setProperty("transition", "none");
      previousContainerRef.current?.style.setProperty("display", "none");
    });
    const handleMeasureLayoutComplete = useStableCallback((previousDimensions) => {
      currentContainerRef.current?.style.removeProperty("animation");
      currentContainerRef.current?.style.removeProperty("transition");
      previousContainerRef.current?.style.removeProperty("display");
      if (previousDimensions) {
        setPreviousContentDimensions(previousDimensions);
      }
    });
    const armViewportCleanup = useStableCallback(() => {
      cleanupControllerRef.current?.abort();
      const controller = new AbortController();
      cleanupControllerRef.current = controller;
      onAnimationsFinished(() => {
        setPreviousContentNode(null);
        setPreviousContentDimensions(null);
        capturedNodeRef.current = null;
      }, controller.signal);
    });
    const lastHandledTriggerRef = React138.useRef(null);
    useIsoLayoutEffect(() => {
      if (!open3 || !mounted) {
        lastHandledTriggerRef.current = null;
      }
    }, [open3, mounted]);
    useIsoLayoutEffect(() => {
      if (activeTrigger && previousActiveTrigger && activeTrigger !== previousActiveTrigger && lastHandledTriggerRef.current !== activeTrigger && capturedNodeRef.current) {
        setPreviousContentNode(capturedNodeRef.current);
        setShowStartingStyleAttribute(true);
        const offset4 = calculateRelativePosition(previousActiveTrigger, activeTrigger);
        setNewTriggerOffset(offset4);
        lastHandledTriggerRef.current = activeTrigger;
      }
    }, [activeTrigger, previousActiveTrigger]);
    useIsoLayoutEffect(() => {
      if (previousContentNode == null) {
        return;
      }
      cleanupControllerRef.current?.abort();
      setShowStartingStyleAttribute(true);
      cleanupFrame.request(() => {
        ReactDOM9.flushSync(() => {
          setShowStartingStyleAttribute(false);
        });
        armViewportCleanup();
      });
    }, [currentContentKey, previousContentNode, armViewportCleanup, cleanupFrame]);
    useIsoLayoutEffect(() => {
      const source = currentContainerRef.current;
      if (!source) {
        return;
      }
      const wrapper = ownerDocument(source).createElement("div");
      for (const child of Array.from(source.childNodes)) {
        wrapper.appendChild(child.cloneNode(true));
      }
      capturedNodeRef.current = wrapper;
    });
    const isTransitioning = previousContentNode != null;
    let childrenToRender;
    if (!isTransitioning) {
      childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", {
        "data-current": true,
        ref: currentContainerRef,
        children
      }, currentContentKey);
    } else {
      childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(React138.Fragment, {
        children: [/* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", {
          "data-previous": true,
          inert: inertValue(true),
          ref: previousContainerRef,
          style: {
            ...previousContentDimensions ? {
              [popupWidth]: `${previousContentDimensions.width}px`,
              [popupHeight]: `${previousContentDimensions.height}px`
            } : null,
            position: "absolute"
          },
          "data-ending-style": showStartingStyleAttribute ? void 0 : ""
        }, "previous"), /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", {
          "data-current": true,
          ref: currentContainerRef,
          "data-starting-style": showStartingStyleAttribute ? "" : void 0,
          children
        }, currentContentKey)]
      });
    }
    useIsoLayoutEffect(() => {
      const container = previousContainerRef.current;
      if (!container || !previousContentNode) {
        return;
      }
      container.replaceChildren(...Array.from(previousContentNode.childNodes));
    }, [previousContentNode]);
    usePopupAutoResize({
      popupElement,
      positionerElement,
      mounted,
      content: payload,
      onMeasureLayout: handleMeasureLayout,
      onMeasureLayoutComplete: handleMeasureLayoutComplete,
      side,
      direction
    });
    const state2 = {
      activationDirection: getActivationDirection(newTriggerOffset),
      transitioning: isTransitioning
    };
    return {
      children: childrenToRender,
      state: state2
    };
  }
  function getActivationDirection(offset4) {
    if (!offset4) {
      return void 0;
    }
    return `${getValueWithTolerance(offset4.horizontal, 5, "right", "left")} ${getValueWithTolerance(offset4.vertical, 5, "down", "up")}`;
  }
  function getValueWithTolerance(value, tolerance, positiveLabel, negativeLabel) {
    if (value > tolerance) {
      return positiveLabel;
    }
    if (value < -tolerance) {
      return negativeLabel;
    }
    return "";
  }
  function calculateRelativePosition(from, to2) {
    const fromRect = from.getBoundingClientRect();
    const toRect = to2.getBoundingClientRect();
    const fromCenter = {
      x: fromRect.left + fromRect.width / 2,
      y: fromRect.top + fromRect.height / 2
    };
    const toCenter = {
      x: toRect.left + toRect.width / 2,
      y: toRect.top + toRect.height / 2
    };
    return {
      horizontal: toCenter.x - fromCenter.x,
      vertical: toCenter.y - fromCenter.y
    };
  }
  function usePopupContentKey(activeTriggerId, payload) {
    const [contentKey, setContentKey] = React138.useState(0);
    const previousActiveTriggerIdRef = React138.useRef(activeTriggerId);
    const previousPayloadRef = React138.useRef(payload);
    const pendingPayloadUpdateRef = React138.useRef(false);
    useIsoLayoutEffect(() => {
      const previousActiveTriggerId = previousActiveTriggerIdRef.current;
      const previousPayload = previousPayloadRef.current;
      const triggerIdChanged = activeTriggerId !== previousActiveTriggerId;
      const payloadChanged = payload !== previousPayload;
      if (triggerIdChanged) {
        setContentKey((value) => value + 1);
        pendingPayloadUpdateRef.current = !payloadChanged;
      } else if (pendingPayloadUpdateRef.current && payloadChanged) {
        setContentKey((value) => value + 1);
        pendingPayloadUpdateRef.current = false;
      }
      previousActiveTriggerIdRef.current = activeTriggerId;
      previousPayloadRef.current = payload;
    }, [activeTriggerId, payload]);
    return `${activeTriggerId ?? "current"}-${contentKey}`;
  }

  // node_modules/@base-ui/react/menu/viewport/MenuViewport.mjs
  var MenuViewport = /* @__PURE__ */ React139.forwardRef(function MenuViewport2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      children,
      ...elementProps
    } = componentProps;
    const {
      store: store4
    } = useMenuRootContext();
    const {
      side
    } = useMenuPositionerContext();
    const instantType = store4.useState("instantType");
    const {
      children: childrenToRender,
      state: viewportState
    } = usePopupViewport({
      store: store4,
      side,
      children
    });
    const state2 = {
      activationDirection: viewportState.activationDirection,
      transitioning: viewportState.transitioning,
      instant: instantType
    };
    return useRenderElement("div", componentProps, {
      state: state2,
      ref: forwardedRef,
      props: [elementProps, {
        children: childrenToRender
      }],
      stateAttributesMapping: popupViewportStateMapping
    });
  });
  if (true) MenuViewport.displayName = "MenuViewport";

  // node_modules/@base-ui/react/separator/Separator.mjs
  var React140 = __toESM(require_react(), 1);
  var Separator = /* @__PURE__ */ React140.forwardRef(function SeparatorComponent(componentProps, forwardedRef) {
    const {
      className,
      render: render5,
      orientation = "horizontal",
      style,
      ...elementProps
    } = componentProps;
    const state2 = {
      orientation
    };
    const element = useRenderElement("div", componentProps, {
      state: state2,
      ref: forwardedRef,
      props: [{
        role: "separator",
        "aria-orientation": orientation
      }, elementProps]
    });
    return element;
  });
  if (true) Separator.displayName = "Separator";

  // node_modules/@base-ui/react/menu/submenu-trigger/MenuSubmenuTrigger.mjs
  var React141 = __toESM(require_react(), 1);

  // node_modules/@base-ui/utils/isElementDisabled.mjs
  function isElementDisabled(element) {
    return element == null || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true";
  }

  // node_modules/@base-ui/react/menu/submenu-trigger/MenuSubmenuTrigger.mjs
  var VOICE_OVER_EXPANDED_PROPS = {
    "aria-expanded": void 0
  };
  var MenuSubmenuTrigger = /* @__PURE__ */ React141.forwardRef(function MenuSubmenuTrigger2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      label,
      id: idProp,
      nativeButton = false,
      openOnHover = true,
      delay = 100,
      closeDelay = 0,
      disabled: disabledProp = false,
      ...elementProps
    } = componentProps;
    const submenuRootContext = useMenuSubmenuRootContext();
    if (!submenuRootContext?.parentMenu) {
      throw new Error(true ? "Base UI: <Menu.SubmenuTrigger> must be placed in <Menu.SubmenuRoot>." : formatErrorMessage_default(37));
    }
    const listItem = useCompositeListItem({
      guess: true,
      label
    });
    const menuPositionerContext = useMenuPositionerContext();
    const {
      store: store4
    } = useMenuRootContext();
    const thisTriggerId = useBaseUiId(idProp);
    const open3 = store4.useState("open");
    const floatingRootContext = store4.useState("floatingRootContext");
    const floatingTreeRoot = store4.useState("floatingTreeRoot");
    const popupId = store4.useState("triggerPopupId", thisTriggerId);
    const baseRegisterTrigger = useTriggerRegistration(thisTriggerId, store4);
    const registerTrigger = useStableCallback((element2) => {
      baseRegisterTrigger(element2);
      if (element2 !== null && store4.select("open") && store4.select("activeTriggerId") == null) {
        store4.update({
          activeTriggerId: thisTriggerId ?? null,
          activeTriggerElement: element2,
          closeDelay
        });
      }
    });
    const triggerElementRef = React141.useRef(null);
    const handleTriggerElementRef = React141.useCallback((el) => {
      triggerElementRef.current = el;
      store4.set("activeTriggerElement", el);
    }, [store4]);
    useIsoLayoutEffect(() => {
      registerTrigger(triggerElementRef.current);
      return () => registerTrigger(null);
    }, [registerTrigger, thisTriggerId, store4]);
    store4.useSyncedValue("closeDelay", closeDelay);
    const parentMenuStore = submenuRootContext.parentMenu;
    const rootDisabled = store4.useState("disabled");
    const parentDisabled = parentMenuStore.useState("disabled");
    const disabled2 = disabledProp || rootDisabled || parentDisabled;
    if (true) {
      React141.useEffect(() => {
        const element2 = triggerElementRef.current;
        if (element2 && isElementDisabled(element2) && !disabled2) {
          const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
          warn(`A disabled element was detected on <Menu.SubmenuTrigger>. To properly disable the trigger, use the \`disabled\` prop on the component instead of setting it on the rendered element.${ownerStackMessage}`);
        }
      });
    }
    const itemProps = parentMenuStore.useState("itemProps");
    const highlighted = parentMenuStore.useState("isActive", listItem.index);
    const itemMetadata = React141.useMemo(() => ({
      type: "submenu-trigger",
      setActive() {
        if (parentMenuStore.select("highlightItemOnHover")) {
          parentMenuStore.set("activeIndex", listItem.index);
        }
      }
    }), [parentMenuStore, listItem.index]);
    const {
      getItemProps,
      itemRef
    } = useMenuItem({
      closeOnClick: false,
      disabled: disabled2,
      highlighted,
      id: thisTriggerId,
      store: store4,
      typingRef: parentMenuStore.context.typingRef,
      nativeButton,
      itemMetadata,
      nodeId: menuPositionerContext?.context.nodeId
    });
    const hoverEnabled = store4.useState("hoverEnabled");
    const hoverProps = useHoverReferenceInteraction(floatingRootContext, {
      enabled: hoverEnabled && openOnHover && !disabled2,
      handleClose: safePolygon({
        blockPointerEvents: true
      }),
      mouseOnly: true,
      move: true,
      restMs: delay,
      delay: {
        open: delay,
        close: closeDelay
      },
      shouldOpen: delay > 0 ? () => parentMenuStore.select("allowMouseEnter") : void 0,
      triggerElementRef,
      externalTree: floatingTreeRoot,
      isClosing: () => store4.select("transitionStatus") === "ending",
      // Chrome can drop the trigger's `mouseleave` during a fast pointer sweep,
      // leaving a stale submenu open (see #5152) — cancel from `mouseout` too.
      guardStaleOpen: true
    });
    const click = useClick(floatingRootContext, {
      enabled: !disabled2,
      event: "mousedown",
      toggle: !openOnHover,
      ignoreMouse: openOnHover,
      stickIfOpen: false
    });
    const localInteractionProps = click.reference ?? EMPTY_OBJECT2;
    const rootTriggerProps = store4.useState("triggerProps", true);
    delete rootTriggerProps.id;
    const state2 = {
      disabled: disabled2,
      highlighted,
      open: open3
    };
    const openMethod = store4.useState("openMethod");
    const lastOpenChangeReason = store4.useState("lastOpenChangeReason");
    const openedByKeyboard = lastOpenChangeReason === reason_parts_exports.listNavigation || openMethod === "keyboard";
    const shouldOmitExpanded = open3 && openedByKeyboard && parts_exports.screenReader.voiceOver;
    const element = useRenderElement("div", componentProps, {
      state: state2,
      stateAttributesMapping: triggerOpenStateMapping2,
      props: [
        localInteractionProps,
        hoverProps,
        rootTriggerProps,
        itemProps,
        // Opening a submenu changes the trigger's expanded state while the trigger still holds
        // focus, and VoiceOver announces that state change instead of the submenu item that focus
        // moves to a moment later, so the first item is never announced. Dropping the state while
        // the submenu is open avoids the announcement without claiming the submenu is collapsed;
        // `aria-haspopup` still conveys that the item opens a submenu.
        shouldOmitExpanded ? VOICE_OVER_EXPANDED_PROPS : void 0,
        {
          "aria-controls": popupId,
          tabIndex: open3 || highlighted ? 0 : -1,
          onBlur() {
            if (highlighted) {
              parentMenuStore.set("activeIndex", null);
            }
          }
        },
        elementProps,
        getItemProps
      ],
      ref: [forwardedRef, listItem.ref, itemRef, registerTrigger, handleTriggerElementRef]
    });
    return element;
  });
  if (true) MenuSubmenuTrigger.displayName = "MenuSubmenuTrigger";

  // node_modules/@base-ui/react/menu/store/MenuHandle.mjs
  var MenuHandle = class extends BasePopupHandle {
    constructor() {
      super(createNullMenuStore(), "Menu");
    }
    /**
     * Opens the menu and associates it with the trigger with the given id.
     *
     * This method should only be called in an event handler or an effect (not during rendering).
     *
     * @param triggerId ID of the trigger to associate with the menu. The trigger must be a matching
     * `Menu.Trigger` with this handle passed as a prop.
     */
    open(triggerId) {
      this.openByTrigger(triggerId);
    }
    /**
     * Closes the menu.
     *
     * This method should only be called in an event handler or an effect (not during rendering).
     */
    close() {
      this.closePopup();
    }
    /**
     * Whether the menu is currently open. Returns `false` while no root is attached to the handle.
     */
    get isOpen() {
      return this.attachedStore?.select("open") ?? false;
    }
  };
  function createMenuHandle() {
    return new MenuHandle();
  }

  // node_modules/@base-ui/react/internals/csp-context/CSPContext.mjs
  var React142 = __toESM(require_react(), 1);
  var CSPContext = /* @__PURE__ */ React142.createContext(void 0);
  if (true) CSPContext.displayName = "CSPContext";
  var DEFAULT_CSP_CONTEXT_VALUE = {
    disableStyleElements: false
  };
  function useCSPContext() {
    return React142.useContext(CSPContext) ?? DEFAULT_CSP_CONTEXT_VALUE;
  }

  // node_modules/@base-ui/react/utils/getElementTransform.mjs
  function getElementTransform(element, computedStyle) {
    const transform = (computedStyle ?? getWindow(element).getComputedStyle(element)).transform;
    let translateX = 0;
    let translateY = 0;
    let scale3 = 1;
    if (transform && transform !== "none") {
      const matrix = transform.match(/matrix(?:3d)?\(([^)]+)\)/);
      if (matrix) {
        const values = matrix[1].split(", ").map(parseFloat);
        if (values.length === 6) {
          translateX = values[4];
          translateY = values[5];
          scale3 = Math.sqrt(values[0] * values[0] + values[1] * values[1]);
        } else if (values.length === 16) {
          translateX = values[12];
          translateY = values[13];
          scale3 = values[0];
        }
      }
    }
    return {
      x: translateX,
      y: translateY,
      scale: scale3
    };
  }

  // node_modules/@base-ui/react/field/index.parts.mjs
  var index_parts_exports4 = {};
  __export(index_parts_exports4, {
    Control: () => FieldControl,
    Description: () => FieldDescription,
    Error: () => FieldError,
    Item: () => FieldItem,
    Label: () => FieldLabel,
    Root: () => FieldRoot,
    Validity: () => FieldValidity
  });

  // node_modules/@base-ui/react/field/root/FieldRoot.mjs
  var React146 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/fieldset/root/FieldsetRootContext.mjs
  var React143 = __toESM(require_react(), 1);
  var FieldsetRootContext = /* @__PURE__ */ React143.createContext(void 0);
  if (true) FieldsetRootContext.displayName = "FieldsetRootContext";
  function useFieldsetRootContext(optional = false) {
    const context = React143.useContext(FieldsetRootContext);
    if (!context && !optional) {
      throw new Error(true ? "Base UI: FieldsetRootContext is missing. Fieldset parts must be placed within <Fieldset.Root>." : formatErrorMessage_default(86));
    }
    return context;
  }

  // node_modules/@base-ui/react/internals/labelable-provider/LabelableProvider.mjs
  var React144 = __toESM(require_react(), 1);
  var import_jsx_runtime134 = __toESM(require_jsx_runtime(), 1);
  var LabelableProvider = function LabelableProvider2(props) {
    const defaultId = useBaseUiId();
    const [controlIdState, setControlIdState] = React144.useState(defaultId);
    const [labelId, setLabelId] = React144.useState();
    const [messageIds, setMessageIds] = React144.useState([]);
    const controlId = controlIdState === void 0 ? defaultId : controlIdState;
    const registrationsRef = useRefWithInit(() => /* @__PURE__ */ new Map());
    const {
      messageIds: parentMessageIds
    } = useLabelableContext();
    const registerControlId = useStableCallback((source, nextId2) => {
      const registrations = registrationsRef.current;
      if (nextId2 === void 0) {
        registrations.delete(source);
      } else {
        registrations.set(source, nextId2);
      }
      setControlIdState((prev) => {
        if (registrations.size === 0) {
          return prev;
        }
        let nextControlId;
        for (const id of registrations.values()) {
          if (id === prev) {
            return prev;
          }
          if (nextControlId === void 0) {
            nextControlId = id;
          }
        }
        return nextControlId;
      });
    });
    const resetControlId = useStableCallback(() => {
      if (registrationsRef.current.size === 0) {
        setControlIdState(defaultId);
      }
    });
    const getDescriptionProps = React144.useCallback((externalProps) => {
      const ids = externalProps["aria-describedby"] ? externalProps["aria-describedby"].split(" ") : [];
      ids.push(...parentMessageIds, ...messageIds);
      return {
        ...externalProps,
        "aria-describedby": Array.from(new Set(ids)).join(" ") || void 0
      };
    }, [parentMessageIds, messageIds]);
    const contextValue = React144.useMemo(() => ({
      controlId,
      registerControlId,
      resetControlId,
      labelId,
      setLabelId,
      messageIds,
      setMessageIds,
      getDescriptionProps
    }), [controlId, registerControlId, resetControlId, labelId, setLabelId, messageIds, setMessageIds, getDescriptionProps]);
    return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(LabelableContext.Provider, {
      value: contextValue,
      children: props.children
    });
  };
  if (true) LabelableProvider.displayName = "LabelableProvider";

  // node_modules/@base-ui/react/internals/field-register-control/useFieldControlRegistration.mjs
  var React145 = __toESM(require_react(), 1);
  function useFieldControlRegistration(params) {
    const {
      change,
      commit,
      invalid: invalid2,
      markedDirtyRef,
      name: name2,
      setRegisteredFieldName,
      registeredFieldIdRef,
      setValidityData,
      validityData
    } = params;
    const {
      formRef
    } = useFormContext();
    const activeFieldControlSourceRef = React145.useRef(null);
    const registrationRef = React145.useRef(null);
    const initialValueCapturedRef = React145.useRef(false);
    const getValueForForm = useStableCallback(() => {
      const registration = registrationRef.current;
      if (!registration) {
        return void 0;
      }
      if (registration.getValue) {
        return registration.getValue();
      }
      return registration.value;
    });
    function getRegistrationValue(registration) {
      return registration.value === void 0 ? getValueForForm() : registration.value;
    }
    const validate = useStableCallback(() => {
      const registration = registrationRef.current;
      markedDirtyRef.current = true;
      if (!registration) {
        commit(validityData.value);
        return;
      }
      commit(getRegistrationValue(registration));
    });
    function refreshRegistration() {
      const registration = registrationRef.current;
      if (!registration || !registration.id) {
        return;
      }
      formRef.current.fields.set(registration.id, {
        getValue: getValueForForm,
        name: name2 ?? registration.name,
        controlRef: registration.controlRef,
        validityData: getCombinedFieldValidityData(validityData, invalid2),
        validate
      });
    }
    function deleteRegistration(id = registrationRef.current?.id) {
      if (id) {
        formRef.current.fields.delete(id);
      }
    }
    function captureInitialValue(registration) {
      if (initialValueCapturedRef.current) {
        return;
      }
      initialValueCapturedRef.current = true;
      const initialValue = getRegistrationValue(registration);
      setValidityData((prev) => prev.initialValue === initialValue ? prev : {
        ...prev,
        initialValue
      });
    }
    useIsoLayoutEffect(() => {
      const registration = registrationRef.current;
      if (!registration || !registration.id) {
        return;
      }
      setRegisteredFieldName(name2 ? void 0 : registration.name);
      formRef.current.fields.set(registration.id, {
        getValue: getValueForForm,
        name: name2 ?? registration.name,
        controlRef: registration.controlRef,
        validityData: getCombinedFieldValidityData(validityData, invalid2),
        validate
      });
    }, [formRef, getValueForForm, invalid2, name2, setRegisteredFieldName, validate, validityData]);
    useIsoLayoutEffect(() => {
      const fields2 = formRef.current.fields;
      return () => {
        const id = registrationRef.current?.id;
        if (id) {
          fields2.delete(id);
        }
      };
    }, [formRef]);
    const register5 = useStableCallback((source, registration) => {
      if (!registration) {
        if (activeFieldControlSourceRef.current === source) {
          activeFieldControlSourceRef.current = null;
          change(void 0, true);
          deleteRegistration();
          registrationRef.current = null;
          setRegisteredFieldName(void 0);
          registeredFieldIdRef.current = void 0;
        }
        return;
      }
      const previousId = registrationRef.current?.id;
      const previousSource = activeFieldControlSourceRef.current;
      if (previousSource && previousSource !== source) {
        change(void 0, true);
      }
      activeFieldControlSourceRef.current = source;
      registrationRef.current = registration;
      if (!name2) {
        setRegisteredFieldName(registration.name);
      }
      registeredFieldIdRef.current = registration.id;
      if (previousId && previousId !== registration.id) {
        deleteRegistration(previousId);
      }
      captureInitialValue(registration);
      refreshRegistration();
    });
    return [validate, register5];
  }

  // node_modules/@base-ui/react/field/root/FieldRoot.mjs
  var import_jsx_runtime135 = __toESM(require_jsx_runtime(), 1);
  var FieldRootInner = /* @__PURE__ */ React146.forwardRef(function FieldRootInner2(componentProps, forwardedRef) {
    const {
      errors,
      validationMode: formValidationMode,
      submitCountRef
    } = useFormContext();
    const {
      render: render5,
      className,
      validate: validateProp,
      validationDebounceTime = 0,
      validationMode = formValidationMode,
      name: name2,
      disabled: disabledProp = false,
      invalid: invalidProp,
      dirty: dirtyProp,
      touched: touchedProp,
      actionsRef,
      style,
      ...elementProps
    } = componentProps;
    const disabledFieldset = useFieldsetRootContext(true)?.disabled;
    const validate = useStableCallback(validateProp || (() => null));
    const disabled2 = disabledFieldset || disabledProp;
    const [touchedState, setTouchedUnwrapped] = React146.useState(false);
    const [dirtyState, setDirtyUnwrapped] = React146.useState(false);
    const [filled, setFilled] = React146.useState(false);
    const [focused, setFocused] = React146.useState(false);
    const dirty = dirtyProp ?? dirtyState;
    const touched = touchedProp ?? touchedState;
    const markedDirtyRef = React146.useRef(dirty);
    const registeredFieldIdRef = React146.useRef(void 0);
    const [registeredFieldName, setRegisteredFieldName] = React146.useState();
    const effectiveName = name2 ?? registeredFieldName;
    useIsoLayoutEffect(() => {
      if (dirtyProp !== void 0) {
        markedDirtyRef.current = dirtyProp;
      }
    }, [dirtyProp]);
    const setDirty = useStableCallback((value) => {
      if (dirtyProp !== void 0) {
        return;
      }
      if (value) {
        markedDirtyRef.current = true;
      }
      setDirtyUnwrapped(value);
    });
    const setTouched = useStableCallback((value) => {
      if (touchedProp !== void 0) {
        return;
      }
      setTouchedUnwrapped(value);
    });
    const shouldValidateOnChange = useStableCallback(() => validationMode === "onChange" || validationMode === "onSubmit" && submitCountRef.current > 0);
    const formError = effectiveName && Object.hasOwn(errors, effectiveName) ? errors[effectiveName] : null;
    const hasFormError = !!(Array.isArray(formError) ? formError.length : formError);
    const invalid2 = invalidProp === true || hasFormError;
    const [validityData, setValidityData] = React146.useState({
      state: DEFAULT_VALIDITY_STATE,
      error: "",
      errors: [],
      value: null,
      initialValue: null
    });
    const valid2 = !invalid2 && (disabled2 ? null : validityData.state.valid);
    const state2 = React146.useMemo(() => ({
      disabled: disabled2,
      touched,
      dirty,
      valid: valid2,
      filled,
      focused
    }), [disabled2, touched, dirty, valid2, filled, focused]);
    const validation = useFieldValidation({
      setValidityData,
      validate,
      validityData,
      validationDebounceTime,
      invalid: invalid2,
      markedDirtyRef,
      state: state2,
      shouldValidateOnChange,
      validationMode,
      registeredFieldIdRef
    });
    const [validateFieldControl, registerFieldControl] = useFieldControlRegistration({
      change: validation.change,
      commit: validation.commit,
      invalid: invalid2,
      markedDirtyRef,
      name: name2,
      setRegisteredFieldName,
      registeredFieldIdRef,
      setValidityData,
      validityData
    });
    React146.useImperativeHandle(actionsRef, () => ({
      validate: validateFieldControl
    }), [validateFieldControl]);
    const contextValue = React146.useMemo(() => ({
      invalid: invalid2,
      name: effectiveName,
      validityData,
      setValidityData,
      disabled: disabled2,
      setTouched,
      setDirty,
      setFilled,
      setFocused,
      validationMode,
      shouldValidateOnChange,
      state: state2,
      registerFieldControl,
      validation
    }), [invalid2, effectiveName, validityData, disabled2, setTouched, setDirty, setFilled, setFocused, validationMode, shouldValidateOnChange, state2, registerFieldControl, validation]);
    const element = useRenderElement("div", componentProps, {
      ref: forwardedRef,
      state: state2,
      props: elementProps,
      stateAttributesMapping: fieldValidityMapping
    });
    return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(FieldRootContext.Provider, {
      value: contextValue,
      children: element
    });
  });
  if (true) FieldRootInner.displayName = "FieldRootInner";
  var FieldRoot = /* @__PURE__ */ React146.forwardRef(function FieldRoot2(componentProps, forwardedRef) {
    return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(LabelableProvider, {
      children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(FieldRootInner, {
        ...componentProps,
        ref: forwardedRef
      })
    });
  });
  if (true) FieldRoot.displayName = "FieldRoot";

  // node_modules/@base-ui/react/field/label/FieldLabel.mjs
  var React147 = __toESM(require_react(), 1);
  var FieldLabel = /* @__PURE__ */ React147.forwardRef(function FieldLabel2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      id: idProp,
      nativeLabel = true,
      ...elementProps
    } = componentProps;
    const fieldRootContext = useFieldRootContext(false);
    const fieldItemContext = useFieldItemContext();
    const {
      labelId
    } = useLabelableContext();
    const state2 = {
      ...fieldRootContext.state,
      disabled: fieldRootContext.disabled || fieldItemContext.disabled
    };
    const labelRef = React147.useRef(null);
    const labelProps = useLabel({
      id: labelId ?? idProp,
      native: nativeLabel
    });
    if (true) {
      React147.useEffect(() => {
        if (!labelRef.current) {
          return;
        }
        const isLabelTag = labelRef.current.tagName === "LABEL";
        if (nativeLabel) {
          if (!isLabelTag) {
            const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
            const message2 = "<Field.Label> expected a <label> element because the `nativeLabel` prop is true. Rendering a non-<label> disables native label association, so `htmlFor` will not work. Use a real <label> in the `render` prop, or set `nativeLabel` to `false`.";
            error(`${message2}${ownerStackMessage}`);
          }
        } else if (isLabelTag) {
          const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
          const message2 = "<Field.Label> expected a non-<label> element because the `nativeLabel` prop is false. Rendering a <label> assumes native label behavior while Base UI treats it as non-native, which can cause unexpected pointer behavior. Use a non-<label> in the `render` prop, or set `nativeLabel` to `true`.";
          error(`${message2}${ownerStackMessage}`);
        }
      }, [nativeLabel]);
    }
    const element = useRenderElement("label", componentProps, {
      ref: [forwardedRef, labelRef],
      state: state2,
      props: [labelProps, elementProps],
      stateAttributesMapping: fieldValidityMapping
    });
    return element;
  });
  if (true) FieldLabel.displayName = "FieldLabel";

  // node_modules/@base-ui/react/field/error/FieldError.mjs
  var React148 = __toESM(require_react(), 1);
  var import_jsx_runtime136 = __toESM(require_jsx_runtime(), 1);
  var stateAttributesMapping5 = {
    ...fieldValidityMapping,
    ...transitionStatusMapping
  };
  var FieldError = /* @__PURE__ */ React148.forwardRef(function FieldError2(componentProps, forwardedRef) {
    const {
      render: render5,
      id: idProp,
      className,
      match: match3,
      style,
      ...elementProps
    } = componentProps;
    const id = useBaseUiId(idProp);
    const {
      validityData,
      state: fieldState,
      name: name2
    } = useFieldRootContext(false);
    const {
      setMessageIds
    } = useLabelableContext();
    const {
      errors
    } = useFormContext();
    const formError = name2 && Object.hasOwn(errors, name2) ? errors[name2] : null;
    const hasFormError = !!(Array.isArray(formError) ? formError.length : formError);
    const hasSpecificMatch = typeof match3 === "string";
    let rendered = false;
    if (match3 === true) {
      rendered = true;
    } else if (fieldState.disabled) {
      rendered = false;
    } else if (hasSpecificMatch) {
      rendered = Boolean(validityData.state[match3]);
    } else {
      rendered = hasFormError || validityData.state.valid === false;
    }
    const {
      mounted,
      transitionStatus,
      setMounted
    } = useTransitionStatus(rendered);
    useIsoLayoutEffect(() => {
      if (!rendered || !id) {
        return void 0;
      }
      setMessageIds((v3) => v3.concat(id));
      return () => {
        setMessageIds((v3) => v3.filter((item) => item !== id));
      };
    }, [rendered, id, setMessageIds]);
    const errorRef = React148.useRef(null);
    const [lastRenderedMessage, setLastRenderedMessage] = React148.useState(null);
    const [lastRenderedMessageKey, setLastRenderedMessageKey] = React148.useState(null);
    let error2 = validityData.error;
    if (!hasSpecificMatch && hasFormError) {
      error2 = formError;
    } else if (validityData.errors.length > 1) {
      error2 = validityData.errors;
    }
    let errorMessage = error2;
    if (Array.isArray(error2)) {
      errorMessage = error2.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("ul", {
        children: error2.map((message2) => /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("li", {
          children: message2
        }, message2))
      }) : error2[0];
    }
    const errorKey = Array.isArray(error2) ? JSON.stringify(error2) : error2;
    if (rendered && errorKey !== lastRenderedMessageKey) {
      setLastRenderedMessageKey(errorKey);
      setLastRenderedMessage(errorMessage);
    }
    useOpenChangeComplete({
      open: rendered,
      ref: errorRef,
      onComplete() {
        if (!rendered) {
          setMounted(false);
        }
      }
    });
    const state2 = {
      ...fieldState,
      transitionStatus
    };
    const element = useRenderElement("div", componentProps, {
      ref: [forwardedRef, errorRef],
      state: state2,
      props: [{
        id,
        children: rendered ? errorMessage : lastRenderedMessage
      }, elementProps],
      stateAttributesMapping: stateAttributesMapping5,
      enabled: mounted
    });
    if (!mounted) {
      return null;
    }
    return element;
  });
  if (true) FieldError.displayName = "FieldError";

  // node_modules/@base-ui/react/field/description/FieldDescription.mjs
  var React149 = __toESM(require_react(), 1);
  var FieldDescription = /* @__PURE__ */ React149.forwardRef(function FieldDescription2(componentProps, forwardedRef) {
    const {
      render: render5,
      id: idProp,
      className,
      style,
      ...elementProps
    } = componentProps;
    const id = useBaseUiId(idProp);
    const fieldRootContext = useFieldRootContext(false);
    const fieldItemContext = useFieldItemContext();
    const {
      setMessageIds
    } = useLabelableContext();
    const state2 = {
      ...fieldRootContext.state,
      disabled: fieldRootContext.disabled || fieldItemContext.disabled
    };
    useIsoLayoutEffect(() => {
      if (!id) {
        return void 0;
      }
      setMessageIds((v3) => v3.concat(id));
      return () => {
        setMessageIds((v3) => v3.filter((item) => item !== id));
      };
    }, [id, setMessageIds]);
    const element = useRenderElement("p", componentProps, {
      ref: forwardedRef,
      state: state2,
      props: [{
        id
      }, elementProps],
      stateAttributesMapping: fieldValidityMapping
    });
    return element;
  });
  if (true) FieldDescription.displayName = "FieldDescription";

  // node_modules/@base-ui/react/field/control/FieldControl.mjs
  var React150 = __toESM(require_react(), 1);
  var FieldControl = /* @__PURE__ */ React150.forwardRef(function FieldControl2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      id: idProp,
      name: nameProp,
      value: valueProp,
      disabled: disabledProp = false,
      onValueChange,
      defaultValue: defaultValue2,
      autoFocus = false,
      style,
      ...elementProps
    } = componentProps;
    const {
      state: fieldState,
      name: fieldName,
      disabled: fieldDisabled,
      setTouched,
      setDirty,
      validityData,
      setFocused,
      setFilled,
      validationMode,
      validation
    } = useFieldRootContext();
    const {
      clearErrors,
      elementRef: formElementRef,
      submitCountRef
    } = useFormContext();
    const disabled2 = fieldDisabled || disabledProp;
    const name2 = fieldName ?? nameProp;
    const state2 = {
      ...fieldState,
      disabled: disabled2
    };
    const {
      labelId
    } = useLabelableContext();
    const id = useLabelableId({
      id: idProp
    });
    const [valueUnwrapped] = useControlled({
      controlled: valueProp,
      default: defaultValue2,
      name: "FieldControl",
      state: "value"
    });
    const isControlled = valueProp !== void 0;
    const value = isControlled ? valueUnwrapped : void 0;
    const serializedValue = value == null ? void 0 : String(value);
    const getValueFromInput = useStableCallback(() => validation.inputRef.current?.value);
    useRegisterFieldControl(validation.inputRef, id, serializedValue, getValueFromInput, !disabled2, nameProp);
    useIsoLayoutEffect(() => {
      const currentValue = serializedValue ?? validation.inputRef.current?.value;
      if (currentValue !== void 0) {
        setFilled(currentValue !== "");
      }
    }, [serializedValue, validation.inputRef, setFilled]);
    useValueChanged(serializedValue, () => {
      if (serializedValue === void 0) {
        return;
      }
      clearErrors(name2);
      setDirty(serializedValue !== (validityData.initialValue ?? ""));
      validation.change(serializedValue);
    });
    const inputRef = React150.useRef(null);
    const enterValidationTimeout = useTimeout();
    useIsoLayoutEffect(() => {
      if (autoFocus && inputRef.current === activeElement(ownerDocument(inputRef.current))) {
        setFocused(true);
      }
    }, [autoFocus, setFocused]);
    const element = useRenderElement("input", componentProps, {
      ref: [forwardedRef, inputRef],
      state: state2,
      props: [{
        id,
        disabled: disabled2,
        name: name2,
        ref: validation.inputRef,
        "aria-labelledby": labelId,
        autoFocus,
        ...isControlled ? {
          value
        } : {
          defaultValue: defaultValue2
        },
        onChange(event) {
          const inputValue = event.currentTarget.value;
          const details = createChangeEventDetails(reason_parts_exports.none, event.nativeEvent);
          onValueChange?.(inputValue, details);
          if (isControlled) {
            return;
          }
          setDirty(inputValue !== (validityData.initialValue ?? ""));
          setFilled(inputValue !== "");
          if (!event.nativeEvent.defaultPrevented && !details.isCanceled) {
            clearErrors(name2);
            validation.change(inputValue);
          }
        },
        onFocus() {
          setFocused(true);
        },
        onBlur(event) {
          setTouched(true);
          setFocused(false);
          if (validationMode === "onBlur") {
            const inputValue = event.currentTarget.value;
            validation.commit(inputValue);
            if (isControlled) {
              queueMicrotask(() => {
                const nextValue = validation.inputRef.current?.value;
                if (nextValue !== void 0 && nextValue !== inputValue && nextValue !== (validityData.initialValue ?? "")) {
                  validation.commit(nextValue);
                }
              });
            }
          }
        },
        onKeyDown(event) {
          if (event.currentTarget.tagName === "INPUT" && event.key === "Enter") {
            setTouched(true);
            const value2 = event.currentTarget.value;
            const form = event.currentTarget.form;
            if (form && form === formElementRef.current && !event.defaultPrevented) {
              const input = event.currentTarget;
              const submitCount = submitCountRef.current;
              enterValidationTimeout.start(0, () => {
                if (submitCountRef.current === submitCount) {
                  validation.commit(input.value);
                }
              });
            } else {
              validation.commit(value2);
            }
          }
        }
      }, elementProps, (props) => validation.getValidationProps(disabled2, props)],
      stateAttributesMapping: fieldValidityMapping
    });
    return element;
  });
  if (true) FieldControl.displayName = "FieldControl";

  // node_modules/@base-ui/react/field/validity/FieldValidity.mjs
  var React151 = __toESM(require_react(), 1);
  var import_jsx_runtime137 = __toESM(require_jsx_runtime(), 1);
  var FieldValidity = function FieldValidity2(props) {
    const {
      children
    } = props;
    const {
      validityData,
      invalid: invalid2
    } = useFieldRootContext(false);
    const combinedFieldValidityData = React151.useMemo(() => getCombinedFieldValidityData(validityData, invalid2), [validityData, invalid2]);
    const isInvalid = combinedFieldValidityData.state.valid === false;
    const {
      transitionStatus
    } = useTransitionStatus(isInvalid);
    const fieldValidityState = React151.useMemo(() => {
      return {
        ...combinedFieldValidityData,
        validity: combinedFieldValidityData.state,
        transitionStatus
      };
    }, [combinedFieldValidityData, transitionStatus]);
    return /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(React151.Fragment, {
      children: children(fieldValidityState)
    });
  };
  if (true) FieldValidity.displayName = "FieldValidity";

  // node_modules/@base-ui/react/field/item/FieldItem.mjs
  var React152 = __toESM(require_react(), 1);
  var import_jsx_runtime138 = __toESM(require_jsx_runtime(), 1);
  var FieldItem = /* @__PURE__ */ React152.forwardRef(function FieldItem2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      disabled: disabledProp = false,
      ...elementProps
    } = componentProps;
    const {
      state: fieldState,
      disabled: rootDisabled
    } = useFieldRootContext(false);
    const disabled2 = rootDisabled || disabledProp;
    const state2 = {
      ...fieldState,
      disabled: disabled2
    };
    const fieldItemContext = React152.useMemo(() => ({
      disabled: disabled2
    }), [disabled2]);
    const element = useRenderElement("div", componentProps, {
      ref: forwardedRef,
      state: state2,
      props: elementProps,
      stateAttributesMapping: fieldValidityMapping
    });
    return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(LabelableProvider, {
      children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(FieldItemContext.Provider, {
        value: fieldItemContext,
        children: element
      })
    });
  });
  if (true) FieldItem.displayName = "FieldItem";

  // node_modules/@base-ui/react/input/Input.mjs
  var React153 = __toESM(require_react(), 1);
  var import_jsx_runtime139 = __toESM(require_jsx_runtime(), 1);
  var Input = /* @__PURE__ */ React153.forwardRef(function Input2(props, forwardedRef) {
    return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(index_parts_exports4.Control, {
      ref: forwardedRef,
      ...props
    });
  });
  if (true) Input.displayName = "Input";

  // node_modules/@base-ui/react/internals/composite/root/CompositeRoot.mjs
  var React155 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/internals/composite/root/useCompositeRoot.mjs
  var React154 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/internals/composite/constants.mjs
  var ACTIVE_COMPOSITE_ITEM = "data-composite-item-active";

  // node_modules/@base-ui/react/internals/composite/root/useCompositeRoot.mjs
  function useCompositeRoot(params) {
    const {
      loopFocus = true,
      orientation = "both",
      grid,
      onLoop,
      direction,
      highlightedIndex: externalHighlightedIndex,
      onHighlightedIndexChange: externalSetHighlightedIndex,
      rootRef: externalRef,
      enableHomeAndEndKeys = false,
      stopEventPropagation,
      disabledIndices,
      modifierKeys = EMPTY_ARRAY3
    } = params;
    const [internalHighlightedIndex, internalSetHighlightedIndex] = React154.useState(0);
    const isGrid2 = grid != null;
    const rootRef = React154.useRef(null);
    const mergedRef = useMergedRefs(rootRef, externalRef);
    const elementsRef = React154.useRef([]);
    const hasSetDefaultIndexRef = React154.useRef(false);
    const highlightedElementRef = React154.useRef(null);
    const highlightedIndex = externalHighlightedIndex ?? internalHighlightedIndex;
    const onHighlightedIndexChange = useStableCallback((index3, shouldScrollIntoView = false) => {
      highlightedElementRef.current = elementsRef.current[index3] ?? null;
      (externalSetHighlightedIndex ?? internalSetHighlightedIndex)(index3);
      if (shouldScrollIntoView) {
        const newActiveItem = elementsRef.current[index3];
        scrollIntoViewIfNeeded(rootRef.current, newActiveItem, direction, orientation);
      }
    });
    const onMapChange = useStableCallback((map) => {
      if (map.size === 0) {
        return;
      }
      if (hasSetDefaultIndexRef.current) {
        const elements2 = elementsRef.current;
        const nextIndex = elements2.indexOf(highlightedElementRef.current);
        if (nextIndex === -1) {
          const replacement = elements2[highlightedIndex];
          if (!replacement || isListIndexDisabled(elements2, highlightedIndex, disabledIndices)) {
            onHighlightedIndexChange(getFallbackIndex(elements2, disabledIndices));
          } else {
            highlightedElementRef.current = replacement;
          }
        } else if (nextIndex !== highlightedIndex) {
          onHighlightedIndexChange(nextIndex);
        }
        return;
      }
      hasSetDefaultIndexRef.current = true;
      const sortedElements = Array.from(map.keys());
      const activeItem = sortedElements.find((compositeElement) => compositeElement?.hasAttribute(ACTIVE_COMPOSITE_ITEM)) ?? null;
      const activeIndex = activeItem ? map.get(activeItem)?.index ?? -1 : -1;
      if (activeIndex !== -1) {
        onHighlightedIndexChange(activeIndex);
      } else if (isListIndexDisabled(sortedElements, highlightedIndex, disabledIndices)) {
        const firstEnabledIndex = findNonDisabledListIndex(sortedElements, {
          disabledIndices
        });
        if (!isIndexOutOfListBounds(sortedElements, firstEnabledIndex)) {
          onHighlightedIndexChange(firstEnabledIndex);
        }
      }
      scrollIntoViewIfNeeded(rootRef.current, activeItem, direction, orientation);
    });
    useIsoLayoutEffect(() => {
      if (disabledIndices == null || externalHighlightedIndex != null || !hasSetDefaultIndexRef.current) {
        return;
      }
      const elements2 = elementsRef.current;
      if (isListIndexDisabled(elements2, highlightedIndex, disabledIndices)) {
        const firstEnabledIndex = findNonDisabledListIndex(elements2, {
          disabledIndices
        });
        if (!isIndexOutOfListBounds(elements2, firstEnabledIndex)) {
          onHighlightedIndexChange(firstEnabledIndex);
        }
      }
    }, [disabledIndices, externalHighlightedIndex, highlightedIndex, elementsRef, onHighlightedIndexChange]);
    const wrappedOnLoop = useStableCallback((event, prevIndex, nextIndex) => {
      if (!onLoop) {
        return nextIndex;
      }
      return onLoop(event, prevIndex, nextIndex, elementsRef);
    });
    const onKeyDown = useStableCallback((event) => {
      const isHomeOrEnd = event.key === HOME || event.key === END;
      if (!COMPOSITE_KEYS.has(event.key) || !enableHomeAndEndKeys && isHomeOrEnd) {
        return;
      }
      if (isModifierKeySet(event, modifierKeys)) {
        return;
      }
      const element = rootRef.current;
      if (!element) {
        return;
      }
      const isRtl = direction === "rtl";
      const horizontalForwardKey = isRtl ? ARROW_LEFT2 : ARROW_RIGHT2;
      const horizontalBackwardKey = isRtl ? ARROW_RIGHT2 : ARROW_LEFT2;
      const forwardKey = orientation === "vertical" ? ARROW_DOWN2 : horizontalForwardKey;
      const backwardKey = orientation === "vertical" ? ARROW_UP2 : horizontalBackwardKey;
      const target = getTarget(event.nativeEvent);
      if (target != null && isNativeInput(target) && !isElementDisabled(target)) {
        const selectionStart = target.selectionStart;
        const selectionEnd = target.selectionEnd;
        const textContent = target.value;
        if (selectionStart == null || event.shiftKey || selectionStart !== selectionEnd) {
          return;
        }
        if (event.key !== backwardKey && selectionStart < textContent.length) {
          return;
        }
        if (event.key !== forwardKey && selectionStart > 0) {
          return;
        }
      }
      let nextIndex = highlightedIndex;
      const minIndex = getMinListIndex(elementsRef, disabledIndices);
      const maxIndex = getMaxListIndex(elementsRef, disabledIndices);
      if (grid != null) {
        nextIndex = grid({
          disabledIndices,
          elementsRef,
          event,
          highlightedIndex,
          loopFocus,
          maxIndex,
          minIndex,
          onLoop: wrappedOnLoop,
          orientation,
          rtl: isRtl
        });
      }
      const isForwardKey = orientation !== "vertical" && event.key === horizontalForwardKey || orientation !== "horizontal" && event.key === ARROW_DOWN2;
      const isBackwardKey = orientation !== "vertical" && event.key === horizontalBackwardKey || orientation !== "horizontal" && event.key === ARROW_UP2;
      if (enableHomeAndEndKeys) {
        if (event.key === HOME) {
          nextIndex = minIndex;
        } else if (event.key === END) {
          nextIndex = maxIndex;
        }
      }
      if (nextIndex === highlightedIndex && (isForwardKey || isBackwardKey)) {
        if (loopFocus && nextIndex === maxIndex && isForwardKey) {
          nextIndex = minIndex;
          if (onLoop) {
            nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef);
          }
        } else if (loopFocus && nextIndex === minIndex && isBackwardKey) {
          nextIndex = maxIndex;
          if (onLoop) {
            nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef);
          }
        } else {
          nextIndex = findNonDisabledListIndex(elementsRef.current, {
            startingIndex: nextIndex,
            decrement: isBackwardKey,
            disabledIndices
          });
        }
      }
      if (nextIndex !== highlightedIndex && !isIndexOutOfListBounds(elementsRef.current, nextIndex)) {
        if (stopEventPropagation) {
          event.stopPropagation();
        }
        if (isGrid2 || isHomeOrEnd || isForwardKey || isBackwardKey) {
          event.preventDefault();
        }
        onHighlightedIndexChange(nextIndex, true);
        queueMicrotask(() => {
          elementsRef.current[nextIndex]?.focus();
        });
      }
    });
    const props = {
      ref: mergedRef,
      onFocus(event) {
        const element = rootRef.current;
        const target = getTarget(event.nativeEvent);
        if (!element || target == null || !isNativeInput(target)) {
          return;
        }
        target.setSelectionRange(0, target.value.length);
      },
      onKeyDown
    };
    return {
      props,
      highlightedIndex,
      onHighlightedIndexChange,
      elementsRef,
      onMapChange,
      relayKeyboardEvent: onKeyDown
    };
  }
  function getFallbackIndex(elements2, disabledIndices) {
    let fallbackIndex = -1;
    for (let index3 = 0; index3 < elements2.length; index3 += 1) {
      const element = elements2[index3];
      if (!element || isListIndexDisabled(elements2, index3, disabledIndices)) {
        continue;
      }
      if (element.hasAttribute(ACTIVE_COMPOSITE_ITEM)) {
        return index3;
      }
      if (fallbackIndex === -1) {
        fallbackIndex = index3;
      }
    }
    return Math.max(fallbackIndex, 0);
  }
  function isModifierKeySet(event, ignoredModifierKeys) {
    for (const key of MODIFIER_KEYS) {
      if (ignoredModifierKeys.includes(key)) {
        continue;
      }
      if (event.getModifierState(key)) {
        return true;
      }
    }
    return false;
  }

  // node_modules/@base-ui/react/internals/composite/root/CompositeRoot.mjs
  var import_jsx_runtime140 = __toESM(require_jsx_runtime(), 1);
  function CompositeRoot(componentProps) {
    const {
      render: render5,
      className,
      style,
      refs = EMPTY_ARRAY3,
      props = EMPTY_ARRAY3,
      state: state2 = EMPTY_OBJECT2,
      stateAttributesMapping: stateAttributesMapping8,
      highlightedIndex: highlightedIndexProp,
      onHighlightedIndexChange: onHighlightedIndexChangeProp,
      orientation,
      grid,
      loopFocus,
      onLoop,
      enableHomeAndEndKeys,
      onMapChange: onMapChangeProp,
      stopEventPropagation = true,
      rootRef,
      disabledIndices,
      modifierKeys,
      highlightItemOnHover = false,
      tag = "div",
      ...elementProps
    } = componentProps;
    const direction = useDirection();
    const {
      props: defaultProps,
      highlightedIndex,
      onHighlightedIndexChange,
      elementsRef,
      onMapChange: onMapChangeUnwrapped,
      relayKeyboardEvent
    } = useCompositeRoot({
      grid,
      loopFocus,
      onLoop,
      orientation,
      highlightedIndex: highlightedIndexProp,
      onHighlightedIndexChange: onHighlightedIndexChangeProp,
      rootRef,
      stopEventPropagation,
      enableHomeAndEndKeys,
      direction,
      disabledIndices,
      modifierKeys
    });
    const element = useRenderElement(tag, componentProps, {
      state: state2,
      ref: refs,
      props: [defaultProps, ...props, elementProps],
      stateAttributesMapping: stateAttributesMapping8
    });
    const contextValue = React155.useMemo(() => ({
      highlightedIndex,
      onHighlightedIndexChange,
      highlightItemOnHover,
      relayKeyboardEvent
    }), [highlightedIndex, onHighlightedIndexChange, highlightItemOnHover, relayKeyboardEvent]);
    return /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(CompositeRootContext.Provider, {
      value: contextValue,
      children: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(CompositeList, {
        elementsRef,
        onMapChange: (newMap) => {
          onMapChangeProp?.(newMap);
          onMapChangeUnwrapped(newMap);
        },
        children: element
      })
    });
  }

  // node_modules/@base-ui/react/utils/FloatingPortalLite.mjs
  var React156 = __toESM(require_react(), 1);
  var ReactDOM10 = __toESM(require_react_dom(), 1);
  var import_jsx_runtime141 = __toESM(require_jsx_runtime(), 1);
  var FloatingPortalLite = /* @__PURE__ */ React156.forwardRef(function FloatingPortalLite2(componentProps, forwardedRef) {
    const {
      children,
      container,
      className,
      render: render5,
      style,
      ...elementProps
    } = componentProps;
    const {
      node: portalNode,
      subtree: portalSubtree
    } = useFloatingPortalNode({
      container,
      ref: forwardedRef,
      componentProps,
      elementProps
    });
    if (!portalSubtree && !portalNode) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(React156.Fragment, {
      children: [portalSubtree, portalNode && /* @__PURE__ */ ReactDOM10.createPortal(children, portalNode)]
    });
  });
  if (true) FloatingPortalLite.displayName = "FloatingPortalLite";

  // node_modules/@base-ui/react/internals/prehydrationScript.stub.mjs
  var script = "";

  // node_modules/@base-ui/react/utils/useIsHydrating.mjs
  var import_shim3 = __toESM(require_shim(), 1);
  function subscribe() {
    return NOOP;
  }
  function getSnapshot() {
    return false;
  }
  function getServerSnapshot() {
    return true;
  }
  function useIsHydrating() {
    return (0, import_shim3.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
  }

  // node_modules/@base-ui/react/internals/PrehydrationScript.mjs
  var React157 = __toESM(require_react(), 1);
  var import_jsx_runtime142 = __toESM(require_jsx_runtime(), 1);
  function PrehydrationScript(props) {
    const {
      script: script2
    } = props;
    const {
      nonce
    } = useCSPContext();
    const isHydrating = useIsHydrating();
    if (!isHydrating) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime142.jsx)("script", {
      nonce,
      dangerouslySetInnerHTML: {
        __html: script2
      },
      suppressHydrationWarning: true
    });
  }

  // node_modules/@base-ui/react/tabs/index.parts.mjs
  var index_parts_exports5 = {};
  __export(index_parts_exports5, {
    Indicator: () => TabsIndicator,
    List: () => TabsList,
    Panel: () => TabsPanel,
    Root: () => TabsRoot,
    Tab: () => TabsTab
  });

  // node_modules/@base-ui/react/tabs/root/TabsRoot.mjs
  var React159 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/tabs/root/TabsRootContext.mjs
  var React158 = __toESM(require_react(), 1);
  var TabsRootContext = /* @__PURE__ */ React158.createContext(void 0);
  if (true) TabsRootContext.displayName = "TabsRootContext";
  function useTabsRootContext() {
    const context = React158.useContext(TabsRootContext);
    if (context === void 0) {
      throw new Error(true ? "Base UI: TabsRootContext is missing. Tabs parts must be placed within <Tabs.Root>." : formatErrorMessage_default(64));
    }
    return context;
  }

  // node_modules/@base-ui/react/tabs/root/TabsRootDataAttributes.mjs
  var activationDirection2 = "data-activation-direction";

  // node_modules/@base-ui/react/tabs/root/stateAttributesMapping.mjs
  var tabsStateAttributesMapping = {
    tabActivationDirection: (dir) => ({
      [activationDirection2]: dir
    })
  };

  // node_modules/@base-ui/react/tabs/root/TabsRoot.mjs
  var import_jsx_runtime143 = __toESM(require_jsx_runtime(), 1);
  var TabsRoot = /* @__PURE__ */ React159.forwardRef(function TabsRoot2(componentProps, forwardedRef) {
    const {
      className,
      defaultValue: defaultValueProp = 0,
      onValueChange: onValueChangeProp,
      orientation = "horizontal",
      render: render5,
      value: valueProp,
      style,
      ...elementProps
    } = componentProps;
    const hasExplicitDefaultValueProp = componentProps.defaultValue !== void 0;
    const tabPanelRefs = React159.useRef([]);
    const [mountedTabPanels, setMountedTabPanels] = React159.useState(() => /* @__PURE__ */ new Map());
    const [value, setValue] = useControlled({
      controlled: valueProp,
      default: defaultValueProp,
      name: "Tabs",
      state: "value"
    });
    const isControlled = valueProp !== void 0;
    const [tabMap, setTabMap] = React159.useState(() => /* @__PURE__ */ new Map());
    const lastKnownTabElementRef = React159.useRef(void 0);
    const getTabElementBySelectedValue = React159.useCallback((selectedValue) => findTabElement(tabMap, selectedValue), [tabMap]);
    const [activationDirectionState, setActivationDirectionState] = React159.useState(() => ({
      previousValue: value,
      tabActivationDirection: "none"
    }));
    const {
      previousValue,
      tabActivationDirection: committedTabActivationDirection
    } = activationDirectionState;
    let tabActivationDirection = committedTabActivationDirection;
    let directionComputationIncomplete = false;
    if (previousValue !== value) {
      tabActivationDirection = computeActivationDirection(previousValue, value, orientation, tabMap);
      directionComputationIncomplete = previousValue != null && value != null && getTabElementBySelectedValue(value) == null;
    }
    const nextPreviousValue = directionComputationIncomplete ? previousValue : value;
    const shouldSyncActivationDirectionState = previousValue !== nextPreviousValue || committedTabActivationDirection !== tabActivationDirection;
    useIsoLayoutEffect(() => {
      if (!shouldSyncActivationDirectionState) {
        return;
      }
      setActivationDirectionState({
        previousValue: nextPreviousValue,
        tabActivationDirection
      });
    }, [nextPreviousValue, shouldSyncActivationDirectionState, tabActivationDirection]);
    const onValueChange = useStableCallback((newValue, eventDetails) => {
      const activationDirection3 = computeActivationDirection(value, newValue, orientation, tabMap);
      eventDetails.activationDirection = activationDirection3;
      onValueChangeProp?.(newValue, eventDetails);
      if (eventDetails.isCanceled) {
        return;
      }
      setValue(newValue);
    });
    const notifyAutomaticValueChange = useStableCallback((nextValue, reason) => {
      onValueChangeProp?.(nextValue, createChangeEventDetails(reason, void 0, void 0, {
        activationDirection: "none"
      }));
    });
    const registerMountedTabPanel = useStableCallback((panelValue, panelId) => {
      setMountedTabPanels((prev) => {
        const next = new Map(prev);
        next.set(panelValue, panelId);
        return next;
      });
      return () => {
        setMountedTabPanels((prev) => {
          if (prev.get(panelValue) !== panelId) {
            return prev;
          }
          const next = new Map(prev);
          next.delete(panelValue);
          return next;
        });
      };
    });
    const getTabPanelIdByValue = React159.useCallback((tabValue) => {
      return mountedTabPanels.get(tabValue);
    }, [mountedTabPanels]);
    const getTabIdByPanelValue = React159.useCallback((tabPanelValue) => {
      for (const tabMetadata of tabMap.values()) {
        if (tabPanelValue === tabMetadata.value) {
          return tabMetadata.id;
        }
      }
      return void 0;
    }, [tabMap]);
    const tabsContextValue = React159.useMemo(() => ({
      getTabElementBySelectedValue,
      getTabIdByPanelValue,
      getTabPanelIdByValue,
      onValueChange,
      orientation,
      registerMountedTabPanel,
      setTabMap,
      tabActivationDirection,
      value
    }), [getTabElementBySelectedValue, getTabIdByPanelValue, getTabPanelIdByValue, onValueChange, orientation, registerMountedTabPanel, setTabMap, tabActivationDirection, value]);
    const selectedTabMetadata = React159.useMemo(() => {
      for (const tabMetadata of tabMap.values()) {
        if (tabMetadata.value === value) {
          return tabMetadata;
        }
      }
      return void 0;
    }, [tabMap, value]);
    const firstEnabledTabValue = React159.useMemo(() => {
      for (const tabMetadata of tabMap.values()) {
        if (!tabMetadata.disabled) {
          return tabMetadata.value;
        }
      }
      return void 0;
    }, [tabMap]);
    const shouldNotifyInitialValueChangeRef = React159.useRef(!hasExplicitDefaultValueProp);
    const initialDefaultValueRef = React159.useRef(defaultValueProp);
    const shouldHonorDisabledDefaultValueRef = React159.useRef(hasExplicitDefaultValueProp);
    const didRegisterTabsRef = React159.useRef(false);
    useIsoLayoutEffect(() => {
      if (isControlled) {
        return;
      }
      function commitAutomaticValueChange(fallbackValue, fallbackReason) {
        setValue(fallbackValue);
        setActivationDirectionState({
          previousValue: fallbackValue,
          tabActivationDirection: "none"
        });
        notifyAutomaticValueChange(fallbackValue, fallbackReason);
        shouldNotifyInitialValueChangeRef.current = false;
      }
      if (tabMap.size === 0) {
        if (didRegisterTabsRef.current && value !== null && !lastKnownTabElementRef.current?.isConnected) {
          commitAutomaticValueChange(null, reason_parts_exports.missing);
        }
        return;
      }
      didRegisterTabsRef.current = true;
      lastKnownTabElementRef.current = tabMap.keys().next().value;
      const selectionIsDisabled = selectedTabMetadata?.disabled;
      const selectionIsMissing = selectedTabMetadata == null && value !== null;
      if (!selectionIsDisabled && value === initialDefaultValueRef.current) {
        shouldHonorDisabledDefaultValueRef.current = false;
      }
      if (shouldHonorDisabledDefaultValueRef.current && selectionIsDisabled && value === initialDefaultValueRef.current) {
        return;
      }
      const shouldNotifyInitialValueChange = shouldNotifyInitialValueChangeRef.current;
      if (selectionIsDisabled || selectionIsMissing) {
        const fallbackValue = firstEnabledTabValue ?? null;
        if (value === fallbackValue) {
          shouldNotifyInitialValueChangeRef.current = false;
          return;
        }
        let fallbackReason = reason_parts_exports.missing;
        if (shouldNotifyInitialValueChange) {
          fallbackReason = reason_parts_exports.initial;
        } else if (selectionIsDisabled) {
          fallbackReason = reason_parts_exports.disabled;
        }
        commitAutomaticValueChange(fallbackValue, fallbackReason);
        return;
      }
      if (shouldNotifyInitialValueChange && selectedTabMetadata != null) {
        notifyAutomaticValueChange(value, reason_parts_exports.initial);
        shouldNotifyInitialValueChangeRef.current = false;
      }
    }, [firstEnabledTabValue, isControlled, notifyAutomaticValueChange, selectedTabMetadata, setValue, tabMap, value]);
    const state2 = {
      orientation,
      tabActivationDirection
    };
    const element = useRenderElement("div", componentProps, {
      state: state2,
      ref: forwardedRef,
      props: elementProps,
      stateAttributesMapping: tabsStateAttributesMapping
    });
    return /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(TabsRootContext.Provider, {
      value: tabsContextValue,
      children: /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(CompositeList, {
        elementsRef: tabPanelRefs,
        children: element
      })
    });
  });
  if (true) TabsRoot.displayName = "TabsRoot";
  function findTabElement(tabMap, value) {
    for (const [tabElement, tabMetadata] of tabMap.entries()) {
      if (value === tabMetadata.value) {
        return tabElement;
      }
    }
    return null;
  }
  function computeActivationDirection(oldValue, newValue, orientation, tabMap) {
    if (oldValue == null || newValue == null) {
      return "none";
    }
    const [positionProp, backward, forward] = orientation === "horizontal" ? ["left", "left", "right"] : ["top", "up", "down"];
    const oldTab = findTabElement(tabMap, oldValue);
    const newTab = findTabElement(tabMap, newValue);
    if (oldTab == null || newTab == null) {
      if (oldTab !== newTab && (typeof oldValue === "number" || typeof oldValue === "string") && typeof oldValue === typeof newValue) {
        return newValue > oldValue ? forward : backward;
      }
      return "none";
    }
    const oldPosition = oldTab.getBoundingClientRect()[positionProp];
    const newPosition = newTab.getBoundingClientRect()[positionProp];
    if (newPosition < oldPosition) {
      return backward;
    }
    if (newPosition > oldPosition) {
      return forward;
    }
    return "none";
  }

  // node_modules/@base-ui/react/tabs/tab/TabsTab.mjs
  var React161 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/tabs/list/TabsListContext.mjs
  var React160 = __toESM(require_react(), 1);
  var TabsListContext = /* @__PURE__ */ React160.createContext(void 0);
  if (true) TabsListContext.displayName = "TabsListContext";
  function useTabsListContext() {
    const context = React160.useContext(TabsListContext);
    if (context === void 0) {
      throw new Error(true ? "Base UI: TabsListContext is missing. TabsList parts must be placed within <Tabs.List>." : formatErrorMessage_default(65));
    }
    return context;
  }

  // node_modules/@base-ui/react/tabs/tab/TabsTab.mjs
  var TabsTab = /* @__PURE__ */ React161.forwardRef(function TabsTab2(componentProps, forwardedRef) {
    const {
      className,
      disabled: disabled2 = false,
      render: render5,
      value,
      id: idProp,
      nativeButton = true,
      style,
      ...elementProps
    } = componentProps;
    const {
      value: activeTabValue,
      getTabPanelIdByValue,
      onValueChange,
      orientation,
      tabActivationDirection
    } = useTabsRootContext();
    const {
      activateOnFocus,
      registerTabResizeObserverElement,
      tabsListElement
    } = useTabsListContext();
    const {
      highlightedIndex,
      onHighlightedIndexChange
    } = useCompositeRootContext();
    const id = useBaseUiId(idProp);
    const tabMetadata = React161.useMemo(() => ({
      disabled: disabled2,
      id,
      value
    }), [disabled2, id, value]);
    const {
      compositeProps,
      compositeRef,
      index: index3
      // hook is used instead of the CompositeItem component
      // because the index is needed for Tab internals
    } = useCompositeItem({
      metadata: tabMetadata
    });
    const active = value === activeTabValue;
    const isNavigatingRef = React161.useRef(false);
    const unobserveTabElementRef = React161.useRef(null);
    const observeTabElement = useStableCallback((element2) => {
      unobserveTabElementRef.current?.();
      unobserveTabElementRef.current = element2 ? registerTabResizeObserverElement(element2) : null;
    });
    useIsoLayoutEffect(() => {
      if (isNavigatingRef.current) {
        isNavigatingRef.current = false;
        return;
      }
      if (!(active && index3 > -1 && highlightedIndex !== index3)) {
        return;
      }
      const listElement = tabsListElement;
      if (listElement != null) {
        const activeEl = activeElement(ownerDocument(listElement));
        if (activeEl && contains(listElement, activeEl)) {
          return;
        }
      }
      if (!disabled2) {
        onHighlightedIndexChange(index3);
      }
    }, [active, index3, highlightedIndex, onHighlightedIndexChange, disabled2, tabsListElement]);
    const {
      getButtonProps,
      buttonRef
    } = useButton({
      disabled: disabled2,
      native: nativeButton,
      focusableWhenDisabled: true
    });
    const tabPanelId = getTabPanelIdByValue(value);
    const isPressingRef = React161.useRef(false);
    const isMainButtonRef = React161.useRef(false);
    function activate(event) {
      onValueChange(value, createChangeEventDetails(reason_parts_exports.none, event.nativeEvent, void 0, {
        activationDirection: "none"
      }));
    }
    function onClick(event) {
      if (active || disabled2) {
        return;
      }
      activate(event);
    }
    function onFocus(event) {
      if (active || disabled2) {
        return;
      }
      if (activateOnFocus && (!isPressingRef.current || // keyboard or touch focus
      isMainButtonRef.current)) {
        activate(event);
      }
    }
    function onPointerDown(event) {
      if (active || disabled2) {
        return;
      }
      isPressingRef.current = true;
      isMainButtonRef.current = event.button === 0;
      const doc = ownerDocument(event.currentTarget);
      function handlePointerEnd() {
        isPressingRef.current = false;
        isMainButtonRef.current = false;
        doc.removeEventListener("pointerup", handlePointerEnd);
        doc.removeEventListener("pointercancel", handlePointerEnd);
      }
      doc.addEventListener("pointerup", handlePointerEnd);
      doc.addEventListener("pointercancel", handlePointerEnd);
    }
    const state2 = {
      disabled: disabled2,
      active,
      orientation,
      tabActivationDirection
    };
    const element = useRenderElement("button", componentProps, {
      state: state2,
      ref: [forwardedRef, buttonRef, compositeRef, observeTabElement],
      props: [compositeProps, {
        role: "tab",
        "aria-controls": tabPanelId,
        "aria-selected": active,
        id,
        onClick,
        onFocus,
        onPointerDown,
        [ACTIVE_COMPOSITE_ITEM]: active ? "" : void 0,
        onKeyDownCapture() {
          isNavigatingRef.current = true;
        }
      }, elementProps, getButtonProps],
      stateAttributesMapping: tabsStateAttributesMapping
    });
    return element;
  });
  if (true) TabsTab.displayName = "TabsTab";

  // node_modules/@base-ui/react/tabs/indicator/TabsIndicator.mjs
  var React162 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/tabs/indicator/TabsIndicatorCssVars.mjs
  var activeTabLeft = "--active-tab-left";
  var activeTabRight = "--active-tab-right";
  var activeTabTop = "--active-tab-top";
  var activeTabBottom = "--active-tab-bottom";
  var activeTabWidth = "--active-tab-width";
  var activeTabHeight = "--active-tab-height";

  // node_modules/@base-ui/react/tabs/indicator/TabsIndicator.mjs
  var import_jsx_runtime144 = __toESM(require_jsx_runtime(), 1);
  var _PrehydrationScript;
  var stateAttributesMapping6 = {
    ...tabsStateAttributesMapping,
    activeTabPosition: () => null,
    activeTabSize: () => null
  };
  var MAX_LAYOUT_ROUNDING_ERROR = 2;
  var TabsIndicator = /* @__PURE__ */ React162.forwardRef(function TabsIndicator2(componentProps, forwardedRef) {
    const {
      className,
      render: render5,
      renderBeforeHydration = false,
      style: styleProp,
      ...elementProps
    } = componentProps;
    const {
      getTabElementBySelectedValue,
      orientation,
      tabActivationDirection,
      value
    } = useTabsRootContext();
    const {
      tabsListElement,
      registerIndicatorUpdateListener
    } = useTabsListContext();
    const rerender = useForcedRerendering();
    React162.useEffect(() => {
      return registerIndicatorUpdateListener(rerender);
    }, [registerIndicatorUpdateListener, rerender]);
    let left = 0;
    let right = 0;
    let top = 0;
    let bottom = 0;
    let width = 0;
    let height = 0;
    let isTabSelected = false;
    if (value != null && tabsListElement != null) {
      const activeTab = getTabElementBySelectedValue(value);
      if (activeTab != null) {
        isTabSelected = true;
        const {
          width: computedWidth,
          height: computedHeight
        } = getCssDimensions2(activeTab);
        const {
          width: tabListWidth,
          height: tabListHeight
        } = getCssDimensions2(tabsListElement);
        const tabRect = activeTab.getBoundingClientRect();
        const tabsListRect = tabsListElement.getBoundingClientRect();
        const scaleX = tabListWidth > 0 ? tabsListRect.width / tabListWidth : 1;
        const scaleY = tabListHeight > 0 ? tabsListRect.height / tabListHeight : 1;
        const layoutOffset = getLayoutOffset(activeTab, tabsListElement);
        left = layoutOffset.left;
        top = layoutOffset.top;
        const rectLeft = (tabRect.left - tabsListRect.left) / scaleX + tabsListElement.scrollLeft - tabsListElement.clientLeft;
        const rectTop = (tabRect.top - tabsListRect.top) / scaleY + tabsListElement.scrollTop - tabsListElement.clientTop;
        const tabTranslation = getActiveTabTranslation(activeTab);
        if (Math.abs(rectLeft - tabTranslation.x - left) <= MAX_LAYOUT_ROUNDING_ERROR && Math.abs(rectTop - tabTranslation.y - top) <= MAX_LAYOUT_ROUNDING_ERROR) {
          left = rectLeft;
          top = rectTop;
        }
        width = computedWidth;
        height = computedHeight;
        right = tabsListElement.scrollWidth - left - width;
        bottom = tabsListElement.scrollHeight - top - height;
      }
    }
    const activeTabPosition = isTabSelected ? {
      left,
      right,
      top,
      bottom
    } : null;
    const activeTabSize = isTabSelected ? {
      width,
      height
    } : null;
    const style = isTabSelected ? {
      [activeTabLeft]: `${left}px`,
      [activeTabRight]: `${right}px`,
      [activeTabTop]: `${top}px`,
      [activeTabBottom]: `${bottom}px`,
      [activeTabWidth]: `${width}px`,
      [activeTabHeight]: `${height}px`
    } : void 0;
    const displayIndicator = isTabSelected && width > 0 && height > 0;
    const state2 = {
      orientation,
      activeTabPosition,
      activeTabSize,
      tabActivationDirection
    };
    const element = useRenderElement("span", componentProps, {
      state: state2,
      ref: forwardedRef,
      props: [{
        role: "presentation",
        style,
        hidden: !displayIndicator
        // do not display the indicator before the layout is settled
      }, elementProps, {
        suppressHydrationWarning: true
      }],
      stateAttributesMapping: stateAttributesMapping6
    });
    if (value == null) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(React162.Fragment, {
      children: [element, renderBeforeHydration && (_PrehydrationScript || (_PrehydrationScript = /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(PrehydrationScript, {
        script
      })))]
    });
  });
  if (true) TabsIndicator.displayName = "TabsIndicator";
  function getLayoutOffset(element, ancestor) {
    const elementOffset = getCumulativeOffset(element);
    const ancestorOffset = getCumulativeOffset(ancestor);
    let left = elementOffset.left - ancestorOffset.left - ancestor.clientLeft;
    let top = elementOffset.top - ancestorOffset.top - ancestor.clientTop;
    let node = getParentNode(element);
    while (isHTMLElement(node) && node !== ancestor && !isLastTraversableNode(node)) {
      left -= node.scrollLeft;
      top -= node.scrollTop;
      node = getParentNode(node);
    }
    return {
      left,
      top
    };
  }
  function getCumulativeOffset(element) {
    let left = 0;
    let top = 0;
    let currentElement = element;
    while (currentElement != null) {
      left += currentElement.offsetLeft;
      top += currentElement.offsetTop;
      const offsetParent = currentElement.offsetParent;
      if (offsetParent != null) {
        left += offsetParent.clientLeft;
        top += offsetParent.clientTop;
      }
      currentElement = offsetParent;
    }
    return {
      left,
      top
    };
  }
  function getActiveTabTranslation(element) {
    const computedStyle = getWindow(element).getComputedStyle(element);
    const {
      x: x2,
      y: y3
    } = getElementTransform(element, computedStyle);
    let translateX = x2;
    let translateY = y3;
    const {
      translate: translate2
    } = computedStyle;
    if (translate2 && translate2 !== "none") {
      const parts = translate2.split(" ");
      translateX += resolveTranslateLength(parts[0], element.offsetWidth);
      translateY += resolveTranslateLength(parts[1], element.offsetHeight);
    }
    return {
      x: translateX,
      y: translateY
    };
  }
  function resolveTranslateLength(value, referenceSize) {
    if (!value) {
      return 0;
    }
    const numeric = parseFloat(value);
    if (!Number.isFinite(numeric)) {
      return 0;
    }
    return value.endsWith("%") ? numeric / 100 * referenceSize : numeric;
  }

  // node_modules/@base-ui/react/tabs/panel/TabsPanel.mjs
  var React163 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/tabs/panel/TabsPanelDataAttributes.mjs
  var index2 = "data-index";
  var startingStyle3 = TransitionStatusDataAttributes_exports.startingStyle;
  var endingStyle3 = TransitionStatusDataAttributes_exports.endingStyle;

  // node_modules/@base-ui/react/tabs/panel/TabsPanel.mjs
  var stateAttributesMapping7 = {
    ...tabsStateAttributesMapping,
    ...transitionStatusMapping
  };
  var TabsPanel = /* @__PURE__ */ React163.forwardRef(function TabsPanel2(componentProps, forwardedRef) {
    const {
      className,
      value,
      render: render5,
      keepMounted = false,
      style,
      ...elementProps
    } = componentProps;
    const {
      value: selectedValue,
      getTabIdByPanelValue,
      orientation,
      tabActivationDirection,
      registerMountedTabPanel
    } = useTabsRootContext();
    const id = useBaseUiId();
    const {
      ref: listItemRef,
      index: index3
    } = useCompositeListItem();
    const open3 = value === selectedValue;
    const {
      mounted,
      transitionStatus,
      setMounted
    } = useTransitionStatus(open3);
    const hidden = !mounted;
    const correspondingTabId = getTabIdByPanelValue(value);
    const state2 = {
      hidden,
      orientation,
      tabActivationDirection,
      transitionStatus
    };
    const panelRef = React163.useRef(null);
    const element = useRenderElement("div", componentProps, {
      state: state2,
      ref: [forwardedRef, listItemRef, panelRef],
      props: [{
        "aria-labelledby": correspondingTabId,
        hidden,
        id,
        role: "tabpanel",
        tabIndex: open3 ? 0 : -1,
        inert: inertValue(!open3),
        // Computed key: a plain literal key fails the DOM-props excess property check.
        [index2]: index3
      }, elementProps],
      stateAttributesMapping: stateAttributesMapping7
    });
    useOpenChangeComplete({
      open: open3,
      ref: panelRef,
      onComplete() {
        if (!open3) {
          setMounted(false);
        }
      }
    });
    useIsoLayoutEffect(() => {
      if (id == null || hidden && !keepMounted) {
        return void 0;
      }
      return registerMountedTabPanel(value, id);
    }, [hidden, keepMounted, value, id, registerMountedTabPanel]);
    const shouldRender = keepMounted || mounted;
    if (!shouldRender) {
      return null;
    }
    return element;
  });
  if (true) TabsPanel.displayName = "TabsPanel";

  // node_modules/@base-ui/react/tabs/list/TabsList.mjs
  var React164 = __toESM(require_react(), 1);
  var import_jsx_runtime145 = __toESM(require_jsx_runtime(), 1);
  var TabsList = /* @__PURE__ */ React164.forwardRef(function TabsList2(componentProps, forwardedRef) {
    const {
      activateOnFocus = false,
      className,
      loopFocus = true,
      render: render5,
      style,
      ...elementProps
    } = componentProps;
    const {
      orientation,
      setTabMap,
      tabActivationDirection
    } = useTabsRootContext();
    const [highlightedTabIndex, setHighlightedTabIndex] = React164.useState(0);
    const [tabsListElement, setTabsListElement] = React164.useState(null);
    const indicatorUpdateListenersRef = React164.useRef(/* @__PURE__ */ new Set());
    const tabResizeObserverElementsRef = React164.useRef(/* @__PURE__ */ new Set());
    const resizeObserverRef = React164.useRef(null);
    useIsoLayoutEffect(() => {
      if (typeof ResizeObserver === "undefined") {
        return void 0;
      }
      const resizeObserver = new ResizeObserver(() => {
        indicatorUpdateListenersRef.current.forEach((listener) => {
          listener();
        });
      });
      resizeObserverRef.current = resizeObserver;
      if (tabsListElement) {
        resizeObserver.observe(tabsListElement);
      }
      tabResizeObserverElementsRef.current.forEach((element) => {
        resizeObserver.observe(element);
      });
      return () => {
        resizeObserver.disconnect();
        resizeObserverRef.current = null;
      };
    }, [tabsListElement]);
    const registerIndicatorUpdateListener = useStableCallback((listener) => {
      indicatorUpdateListenersRef.current.add(listener);
      return () => {
        indicatorUpdateListenersRef.current.delete(listener);
      };
    });
    const registerTabResizeObserverElement = useStableCallback((element) => {
      tabResizeObserverElementsRef.current.add(element);
      resizeObserverRef.current?.observe(element);
      return () => {
        tabResizeObserverElementsRef.current.delete(element);
        resizeObserverRef.current?.unobserve(element);
      };
    });
    const state2 = {
      orientation,
      tabActivationDirection
    };
    const defaultProps = {
      "aria-orientation": orientation === "vertical" ? "vertical" : void 0,
      role: "tablist"
    };
    const tabsListContextValue = React164.useMemo(() => ({
      activateOnFocus,
      registerIndicatorUpdateListener,
      registerTabResizeObserverElement,
      tabsListElement
    }), [activateOnFocus, registerIndicatorUpdateListener, registerTabResizeObserverElement, tabsListElement]);
    return /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(TabsListContext.Provider, {
      value: tabsListContextValue,
      children: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(CompositeRoot, {
        render: render5,
        className,
        style,
        state: state2,
        refs: [forwardedRef, setTabsListElement],
        props: [defaultProps, elementProps],
        stateAttributesMapping: tabsStateAttributesMapping,
        highlightedIndex: highlightedTabIndex,
        enableHomeAndEndKeys: true,
        loopFocus,
        orientation,
        onHighlightedIndexChange: setHighlightedTabIndex,
        onMapChange: setTabMap,
        disabledIndices: EMPTY_ARRAY3
      })
    });
  });
  if (true) TabsList.displayName = "TabsList";

  // node_modules/@base-ui/react/tooltip/index.parts.mjs
  var index_parts_exports6 = {};
  __export(index_parts_exports6, {
    Arrow: () => TooltipArrow,
    Handle: () => TooltipHandle,
    Popup: () => TooltipPopup,
    Portal: () => TooltipPortal,
    Positioner: () => TooltipPositioner,
    Provider: () => TooltipProvider,
    Root: () => TooltipRoot,
    Trigger: () => TooltipTrigger,
    Viewport: () => TooltipViewport,
    createHandle: () => createTooltipHandle
  });

  // node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs
  var React167 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/tooltip/root/TooltipRootContext.mjs
  var React165 = __toESM(require_react(), 1);
  var TooltipRootContext = /* @__PURE__ */ React165.createContext(void 0);
  if (true) TooltipRootContext.displayName = "TooltipRootContext";
  function useTooltipRootContext(optional) {
    const context = React165.useContext(TooltipRootContext);
    if (context === void 0 && !optional) {
      throw new Error(true ? "Base UI: TooltipRootContext is missing. Tooltip parts must be placed within <Tooltip.Root>." : formatErrorMessage_default(72));
    }
    return context;
  }

  // node_modules/@base-ui/react/tooltip/store/TooltipStore.mjs
  var React166 = __toESM(require_react(), 1);
  var selectors4 = {
    ...popupStoreSelectors,
    disabled: (state2) => state2.disabled,
    instantType: (state2) => state2.instantType,
    isInstantPhase: (state2) => state2.isInstantPhase,
    trackCursorAxis: (state2) => state2.trackCursorAxis,
    disableHoverablePopup: (state2) => state2.disableHoverablePopup,
    lastOpenChangeReason: (state2) => state2.openChangeReason,
    closeOnClick: (state2) => state2.closeOnClick,
    closeDelay: (state2) => state2.closeDelay,
    adaptiveOrigin: (state2) => state2.adaptiveOrigin
  };
  var TooltipStore = class extends ReactStore {
    constructor(initialState, floatingId, nested) {
      const triggerElements = new PopupTriggerMap();
      super(createInitialState2(initialState, triggerElements, floatingId, nested), createInitialContext2(triggerElements), selectors4);
    }
    setOpen = (nextOpen, eventDetails) => {
      applyPopupOpenChange(this, nextOpen, eventDetails, {
        extraState: {
          openChangeReason: eventDetails.reason
        }
      });
    };
    // Used by trigger clicks to clear a delayed hover open without reporting a public open-state change.
    cancelPendingOpen(event) {
      this.state.floatingRootContext.dispatchOpenChange(false, createChangeEventDetails(reason_parts_exports.triggerPress, event));
    }
  };
  function createNullTooltipStore() {
    const triggerElements = new PopupTriggerMap();
    const store4 = new NullStore(Object.freeze(createInitialState2(void 0, triggerElements)), Object.freeze(createInitialContext2(triggerElements)), selectors4);
    return Object.assign(store4, {
      setOpen: NOOP,
      cancelPendingOpen: NOOP
    });
  }
  function createInitialState2(initialState, triggerElements, floatingId, nested = false) {
    const state2 = {
      ...createInitialPopupStoreState(triggerElements, floatingId, nested),
      disabled: false,
      instantType: void 0,
      isInstantPhase: false,
      trackCursorAxis: "none",
      disableHoverablePopup: false,
      openChangeReason: null,
      closeOnClick: true,
      closeDelay: 0,
      adaptiveOrigin: void 0,
      ...initialState
    };
    return state2;
  }
  function createInitialContext2(triggerElements) {
    return {
      popupRef: /* @__PURE__ */ React166.createRef(),
      onOpenChange: void 0,
      onOpenChangeComplete: void 0,
      triggerElements
    };
  }

  // node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs
  var import_jsx_runtime146 = __toESM(require_jsx_runtime(), 1);
  var TooltipRoot = fastComponent(function TooltipRoot2(props) {
    const {
      disabled: disabled2 = false,
      defaultOpen = false,
      open: openProp,
      disableHoverablePopup = false,
      trackCursorAxis = "none",
      actionsRef,
      onOpenChange,
      onOpenChangeComplete,
      handle,
      triggerId: triggerIdProp,
      defaultTriggerId: defaultTriggerIdProp = null,
      children
    } = props;
    const store4 = usePopupRootStore((floatingId, nested) => new TooltipStore({
      open: defaultOpen,
      openProp,
      activeTriggerId: defaultTriggerIdProp,
      triggerIdProp
    }, floatingId, nested));
    store4.useControlledProp("openProp", openProp);
    store4.useControlledProp("triggerIdProp", triggerIdProp);
    store4.useContextCallback("onOpenChange", onOpenChange);
    store4.useContextCallback("onOpenChangeComplete", onOpenChangeComplete);
    const openState = store4.useState("open");
    const open3 = !disabled2 && openState;
    const activeTriggerId = store4.useState("activeTriggerId");
    const mounted = store4.useState("mounted");
    const payload = store4.useState("payload");
    store4.useSyncedValues({
      trackCursorAxis,
      disableHoverablePopup,
      disabled: disabled2
    });
    useImplicitActiveTrigger(store4, {
      closeOnActiveTriggerUnmount: true
    });
    const {
      forceUnmount,
      transitionStatus
    } = useOpenStateTransitions(open3, store4);
    const isInstantPhase = store4.useState("isInstantPhase");
    const instantType = store4.useState("instantType");
    const lastOpenChangeReason = store4.useState("lastOpenChangeReason");
    const previousInstantTypeRef = React167.useRef(null);
    useIsoLayoutEffect(() => {
      if (openState && disabled2) {
        store4.setOpen(false, createChangeEventDetails(reason_parts_exports.disabled));
      }
    }, [openState, disabled2, store4]);
    useIsoLayoutEffect(() => {
      if (transitionStatus === "ending" && lastOpenChangeReason === reason_parts_exports.none || transitionStatus !== "ending" && isInstantPhase) {
        if (instantType !== "delay") {
          previousInstantTypeRef.current = instantType;
        }
        store4.set("instantType", "delay");
      } else if (previousInstantTypeRef.current !== null) {
        store4.set("instantType", previousInstantTypeRef.current);
        previousInstantTypeRef.current = null;
      }
    }, [transitionStatus, isInstantPhase, lastOpenChangeReason, instantType, store4]);
    useIsoLayoutEffect(() => {
      if (open3) {
        if (activeTriggerId == null) {
          store4.set("payload", void 0);
        }
      }
    }, [store4, activeTriggerId, open3]);
    React167.useImperativeHandle(actionsRef, () => ({
      unmount: forceUnmount,
      close: () => store4.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction))
    }), [forceUnmount, store4]);
    const shouldRenderInteractions = open3 || mounted || !disabled2 && trackCursorAxis !== "none";
    return /* @__PURE__ */ (0, import_jsx_runtime146.jsxs)(TooltipRootContext.Provider, {
      value: store4,
      children: [handle && /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(PopupHandleAttachment, {
        handle,
        store: store4
      }), shouldRenderInteractions && /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(TooltipInteractions, {
        store: store4,
        disabled: disabled2,
        trackCursorAxis
      }), typeof children === "function" ? children({
        payload
      }) : children]
    });
  });
  if (true) TooltipRoot.displayName = "TooltipRoot";
  function TooltipInteractions({
    store: store4,
    disabled: disabled2,
    trackCursorAxis
  }) {
    const floatingRootContext = store4.useState("floatingRootContext");
    const dismiss = useDismiss(floatingRootContext, {
      enabled: !disabled2,
      referencePress: () => store4.select("closeOnClick")
    });
    const clientPoint = useClientPoint(floatingRootContext, {
      enabled: !disabled2 && trackCursorAxis !== "none",
      axis: trackCursorAxis === "none" ? void 0 : trackCursorAxis
    });
    const triggerProps = React167.useMemo(() => mergeProps(clientPoint.reference, dismiss.reference), [clientPoint.reference, dismiss.reference]);
    usePopupInteractionProps(store4, {
      activeTriggerProps: triggerProps,
      inactiveTriggerProps: triggerProps,
      popupProps: dismiss.floating ?? EMPTY_OBJECT2
    });
    return null;
  }

  // node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs
  var React169 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/tooltip/provider/TooltipProviderContext.mjs
  var React168 = __toESM(require_react(), 1);
  var TooltipProviderContext = /* @__PURE__ */ React168.createContext(void 0);
  if (true) TooltipProviderContext.displayName = "TooltipProviderContext";
  function useTooltipProviderContext() {
    return React168.useContext(TooltipProviderContext);
  }

  // node_modules/@base-ui/react/tooltip/utils/constants.mjs
  var OPEN_DELAY = 600;

  // node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs
  var TOOLTIP_TRIGGER_IDENTIFIER = "data-base-ui-tooltip-trigger";
  function getTargetElement(event) {
    if ("composedPath" in event) {
      const path = event.composedPath();
      for (let i2 = 0; i2 < path.length; i2 += 1) {
        const element = path[i2];
        if (isElement(element)) {
          return element;
        }
      }
    }
    const target = event.target;
    if (isElement(target)) {
      return target;
    }
    return null;
  }
  function closestEnabledTooltipTrigger(element) {
    let current = element;
    while (current) {
      const trigger = current.closest(`[${TOOLTIP_TRIGGER_IDENTIFIER}]`);
      if (trigger) {
        return trigger;
      }
      const root = current.getRootNode();
      current = "host" in root && isElement(root.host) ? root.host : null;
    }
    return null;
  }
  var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      handle,
      payload,
      disabled: disabledProp,
      delay,
      closeOnClick = true,
      closeDelay,
      id: idProp,
      ...elementProps
    } = componentProps;
    const rootContext = useTooltipRootContext(true);
    const handleStore = usePopupHandleStore(handle);
    const store4 = handleStore ?? rootContext;
    if (!store4) {
      throw new Error(true ? "Base UI: <Tooltip.Trigger> must be either used within a <Tooltip.Root> component or provided with a handle." : formatErrorMessage_default(82));
    }
    const thisTriggerId = useBaseUiId(idProp);
    const isTriggerActive = store4.useState("isTriggerActive", thisTriggerId);
    const isOpenedByThisTrigger = store4.useState("isOpenedByTrigger", thisTriggerId);
    const floatingRootContext = store4.useState("floatingRootContext");
    const triggerElementRef = React169.useRef(null);
    const closeDelayWithDefault = closeDelay ?? 0;
    const {
      registerTrigger,
      isMountedByThisTrigger
    } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store4, {
      payload,
      closeOnClick,
      closeDelay: closeDelayWithDefault
    });
    const providerDelay = useTooltipProviderContext();
    const {
      activeIdRef,
      delayRef,
      isInstantPhase,
      hasProvider
    } = useDelayGroup(floatingRootContext, {
      open: isOpenedByThisTrigger
    });
    const hoverInteraction = useHoverInteractionSharedState(floatingRootContext);
    store4.useSyncedValue("isInstantPhase", isInstantPhase);
    const rootDisabled = store4.useState("disabled");
    const disabled2 = disabledProp ?? rootDisabled;
    const disabledRef = useValueAsRef(disabled2);
    const trackCursorAxis = store4.useState("trackCursorAxis");
    const disableHoverablePopup = store4.useState("disableHoverablePopup");
    const isNestedTriggerHoveredRef = React169.useRef(false);
    const nestedTriggerOpenTimeout = useTimeout();
    const pointerTypeRef = React169.useRef(void 0);
    function getOpenDelay() {
      if (hasProvider && activeIdRef.current != null) {
        return 0;
      }
      return delay ?? providerDelay ?? OPEN_DELAY;
    }
    function isEnabledNestedTriggerTarget(target) {
      const triggerEl = triggerElementRef.current;
      if (!triggerEl || !target) {
        return false;
      }
      const nearestTrigger = closestEnabledTooltipTrigger(target);
      return nearestTrigger !== null && nearestTrigger !== triggerEl && contains(triggerEl, nearestTrigger);
    }
    function detectNestedTriggerHover(target) {
      const nestedTriggerHovered = isEnabledNestedTriggerTarget(target);
      isNestedTriggerHoveredRef.current = nestedTriggerHovered;
      if (nestedTriggerHovered) {
        hoverInteraction.openChangeTimeout.clear();
        hoverInteraction.restTimeout.clear();
        hoverInteraction.restTimeoutPending = false;
        nestedTriggerOpenTimeout.clear();
      }
      return nestedTriggerHovered;
    }
    const hoverProps = useHoverReferenceInteraction(floatingRootContext, {
      enabled: !disabled2,
      mouseOnly: true,
      move: false,
      handleClose: !disableHoverablePopup && trackCursorAxis !== "both" ? safePolygon() : null,
      restMs: getOpenDelay,
      delay() {
        if (closeDelay == null && hasProvider) {
          return {
            close: getDelay(delayRef.current, "close")
          };
        }
        return {
          close: closeDelayWithDefault
        };
      },
      triggerElementRef,
      isActiveTrigger: isTriggerActive,
      isClosing: () => store4.select("transitionStatus") === "ending",
      shouldOpen() {
        return !isNestedTriggerHoveredRef.current;
      }
    });
    const focusProps = useFocus(floatingRootContext, {
      enabled: !disabled2
    }).reference;
    const handleNestedTriggerHover = (event) => {
      const wasNestedTriggerHovered = isNestedTriggerHoveredRef.current;
      const target = getTargetElement(event);
      const nestedTriggerHovered = detectNestedTriggerHover(target);
      const triggerEl = triggerElementRef.current;
      const targetInsideTrigger = triggerEl && target && contains(triggerEl, target);
      if (nestedTriggerHovered && store4.select("open") && store4.select("lastOpenChangeReason") === reason_parts_exports.triggerHover) {
        store4.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
        return;
      }
      if (wasNestedTriggerHovered && !nestedTriggerHovered && targetInsideTrigger && !disabledRef.current && !store4.select("open") && triggerEl && // Match the hover hook's non-strict mouse fallback for mouse-only event sequences.
      isMouseLikePointerType(pointerTypeRef.current)) {
        const open3 = () => {
          if (!isNestedTriggerHoveredRef.current && !disabledRef.current && !store4.select("open")) {
            store4.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerEl));
          }
        };
        const openDelay = getOpenDelay();
        if (openDelay === 0) {
          nestedTriggerOpenTimeout.clear();
          open3();
        } else {
          nestedTriggerOpenTimeout.start(openDelay, open3);
        }
      }
    };
    const rootTriggerProps = store4.useState("triggerProps", isMountedByThisTrigger);
    const shouldApplyRootTriggerProps = isMountedByThisTrigger || trackCursorAxis !== "none";
    const state2 = {
      open: isOpenedByThisTrigger
    };
    const element = useRenderElement("button", componentProps, {
      state: state2,
      ref: [forwardedRef, registerTrigger, triggerElementRef],
      props: [hoverProps, focusProps, shouldApplyRootTriggerProps ? rootTriggerProps : void 0, {
        onMouseOver(event) {
          handleNestedTriggerHover(event.nativeEvent);
        },
        onFocus(event) {
          if (isEnabledNestedTriggerTarget(getTargetElement(event.nativeEvent))) {
            event.preventBaseUIHandler();
          }
        },
        onMouseLeave() {
          isNestedTriggerHoveredRef.current = false;
          nestedTriggerOpenTimeout.clear();
          pointerTypeRef.current = void 0;
        },
        onPointerEnter(event) {
          pointerTypeRef.current = event.pointerType;
        },
        onPointerDown(event) {
          pointerTypeRef.current = event.pointerType;
          store4.set("closeOnClick", closeOnClick);
          if (closeOnClick && !store4.select("open")) {
            store4.cancelPendingOpen(event.nativeEvent);
          }
        },
        onClick(event) {
          if (closeOnClick && !store4.select("open")) {
            store4.cancelPendingOpen(event.nativeEvent);
          }
        },
        id: thisTriggerId,
        [triggerDisabled]: disabled2 ? "" : void 0,
        [TOOLTIP_TRIGGER_IDENTIFIER]: disabled2 ? void 0 : ""
      }, elementProps],
      stateAttributesMapping: triggerOpenStateMapping2
    });
    return element;
  });
  if (true) TooltipTrigger.displayName = "TooltipTrigger";

  // node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs
  var React171 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/tooltip/portal/TooltipPortalContext.mjs
  var React170 = __toESM(require_react(), 1);
  var TooltipPortalContext = /* @__PURE__ */ React170.createContext(void 0);
  if (true) TooltipPortalContext.displayName = "TooltipPortalContext";
  function useTooltipPortalContext() {
    const value = React170.useContext(TooltipPortalContext);
    if (value === void 0) {
      throw new Error(true ? "Base UI: <Tooltip.Portal> is missing." : formatErrorMessage_default(70));
    }
    return value;
  }

  // node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs
  var import_jsx_runtime147 = __toESM(require_jsx_runtime(), 1);
  var TooltipPortal = /* @__PURE__ */ React171.forwardRef(function TooltipPortal2(props, forwardedRef) {
    const {
      keepMounted = false,
      ...portalProps
    } = props;
    const store4 = useTooltipRootContext();
    const mounted = store4.useState("mounted");
    const shouldRender = mounted || keepMounted;
    if (!shouldRender) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(TooltipPortalContext.Provider, {
      value: keepMounted,
      children: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(FloatingPortalLite, {
        ref: forwardedRef,
        ...portalProps
      })
    });
  });
  if (true) TooltipPortal.displayName = "TooltipPortal";

  // node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs
  var React173 = __toESM(require_react(), 1);

  // node_modules/@base-ui/react/tooltip/positioner/TooltipPositionerContext.mjs
  var React172 = __toESM(require_react(), 1);
  var TooltipPositionerContext = /* @__PURE__ */ React172.createContext(void 0);
  if (true) TooltipPositionerContext.displayName = "TooltipPositionerContext";
  function useTooltipPositionerContext() {
    const context = React172.useContext(TooltipPositionerContext);
    if (context === void 0) {
      throw new Error(true ? "Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within <Tooltip.Positioner>." : formatErrorMessage_default(71));
    }
    return context;
  }

  // node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs
  var import_jsx_runtime148 = __toESM(require_jsx_runtime(), 1);
  var TooltipPositioner = /* @__PURE__ */ React173.forwardRef(function TooltipPositioner2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      anchor,
      positionMethod = "absolute",
      side = "top",
      align = "center",
      sideOffset = 0,
      alignOffset = 0,
      collisionBoundary = "clipping-ancestors",
      collisionPadding = 5,
      arrowPadding = 5,
      sticky = false,
      disableAnchorTracking = false,
      collisionAvoidance = POPUP_COLLISION_AVOIDANCE,
      style,
      ...elementProps
    } = componentProps;
    const store4 = useTooltipRootContext();
    const keepMounted = useTooltipPortalContext();
    const open3 = store4.useState("open");
    const mounted = store4.useState("mounted");
    const trackCursorAxis = store4.useState("trackCursorAxis");
    const disableHoverablePopup = store4.useState("disableHoverablePopup");
    const floatingRootContext = store4.useState("floatingRootContext");
    const instantType = store4.useState("instantType");
    const transitionStatus = store4.useState("transitionStatus");
    const adaptiveOrigin2 = store4.useState("adaptiveOrigin");
    const positioning = useAnchorPositioning({
      anchor,
      positionMethod,
      floatingRootContext,
      mounted,
      side,
      sideOffset,
      align,
      alignOffset,
      collisionBoundary,
      collisionPadding,
      sticky,
      arrowPadding,
      disableAnchorTracking,
      keepMounted,
      collisionAvoidance,
      adaptiveOrigin: adaptiveOrigin2
    });
    const state2 = React173.useMemo(() => ({
      open: open3,
      side: positioning.side,
      align: positioning.align,
      anchorHidden: positioning.anchorHidden,
      instant: trackCursorAxis !== "none" ? "tracking-cursor" : instantType
    }), [open3, positioning.side, positioning.align, positioning.anchorHidden, trackCursorAxis, instantType]);
    const element = usePositioner(componentProps, state2, {
      styles: positioning.positionerStyles,
      transitionStatus,
      props: elementProps,
      refs: [forwardedRef, store4.useStateSetter("positionerElement")],
      hidden: !mounted,
      inert: !open3 || trackCursorAxis === "both" || disableHoverablePopup
    });
    return /* @__PURE__ */ (0, import_jsx_runtime148.jsx)(TooltipPositionerContext.Provider, {
      value: positioning,
      children: element
    });
  });
  if (true) TooltipPositioner.displayName = "TooltipPositioner";

  // node_modules/@base-ui/react/tooltip/popup/TooltipPopup.mjs
  var React174 = __toESM(require_react(), 1);
  var TooltipPopup = /* @__PURE__ */ React174.forwardRef(function TooltipPopup2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      ...elementProps
    } = componentProps;
    const store4 = useTooltipRootContext();
    const {
      side,
      align
    } = useTooltipPositionerContext();
    const open3 = store4.useState("open");
    const instantType = store4.useState("instantType");
    const transitionStatus = store4.useState("transitionStatus");
    const popupProps = store4.useState("popupProps");
    const floatingContext = store4.useState("floatingRootContext");
    const disabled2 = store4.useState("disabled");
    const closeDelay = store4.useState("closeDelay");
    useOpenChangeComplete({
      open: open3,
      ref: store4.context.popupRef,
      onComplete() {
        if (open3) {
          store4.context.onOpenChangeComplete?.(true);
        }
      }
    });
    useHoverFloatingInteraction(floatingContext, {
      enabled: !disabled2,
      closeDelay
    });
    const setPopupElement = store4.useStateSetter("popupElement");
    const state2 = {
      open: open3,
      side,
      align,
      instant: instantType,
      transitionStatus
    };
    const element = useRenderElement("div", componentProps, {
      state: state2,
      ref: [forwardedRef, store4.context.popupRef, setPopupElement],
      props: [FOCUSABLE_POPUP_PROPS, popupProps, getDisabledMountTransitionStyles(transitionStatus), elementProps],
      stateAttributesMapping: popupTransitionStateMapping
    });
    return element;
  });
  if (true) TooltipPopup.displayName = "TooltipPopup";

  // node_modules/@base-ui/react/tooltip/arrow/TooltipArrow.mjs
  var React175 = __toESM(require_react(), 1);
  var TooltipArrow = /* @__PURE__ */ React175.forwardRef(function TooltipArrow2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      ...elementProps
    } = componentProps;
    const store4 = useTooltipRootContext();
    const {
      arrowRef,
      side,
      align,
      arrowUncentered,
      arrowStyles
    } = useTooltipPositionerContext();
    const open3 = store4.useState("open");
    const instantType = store4.useState("instantType");
    const state2 = {
      open: open3,
      side,
      align,
      uncentered: arrowUncentered,
      instant: instantType
    };
    const element = useRenderElement("div", componentProps, {
      state: state2,
      ref: [forwardedRef, arrowRef],
      props: [{
        style: arrowStyles,
        "aria-hidden": true
      }, elementProps],
      stateAttributesMapping: popupStateMapping
    });
    return element;
  });
  if (true) TooltipArrow.displayName = "TooltipArrow";

  // node_modules/@base-ui/react/tooltip/provider/TooltipProvider.mjs
  var React176 = __toESM(require_react(), 1);
  var import_jsx_runtime149 = __toESM(require_jsx_runtime(), 1);
  var TooltipProvider = function TooltipProvider2(props) {
    const {
      delay,
      closeDelay,
      timeout = 400
    } = props;
    const delayValue = React176.useMemo(() => ({
      open: delay,
      close: closeDelay
    }), [delay, closeDelay]);
    return /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(TooltipProviderContext.Provider, {
      value: delay,
      children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(FloatingDelayGroup, {
        delay: delayValue,
        timeoutMs: timeout,
        children: props.children
      })
    });
  };
  if (true) TooltipProvider.displayName = "TooltipProvider";

  // node_modules/@base-ui/react/tooltip/viewport/TooltipViewport.mjs
  var React177 = __toESM(require_react(), 1);
  var TooltipViewport = /* @__PURE__ */ React177.forwardRef(function TooltipViewport2(componentProps, forwardedRef) {
    const {
      render: render5,
      className,
      style,
      children,
      ...elementProps
    } = componentProps;
    const store4 = useTooltipRootContext();
    const positioner = useTooltipPositionerContext();
    const instantType = store4.useState("instantType");
    const {
      children: childrenToRender,
      state: viewportState
    } = usePopupViewport({
      store: store4,
      side: positioner.side,
      children
    });
    const state2 = {
      activationDirection: viewportState.activationDirection,
      transitioning: viewportState.transitioning,
      instant: instantType
    };
    return useRenderElement("div", componentProps, {
      state: state2,
      ref: forwardedRef,
      props: [elementProps, {
        children: childrenToRender
      }],
      stateAttributesMapping: popupViewportStateMapping
    });
  });
  if (true) TooltipViewport.displayName = "TooltipViewport";

  // node_modules/@base-ui/react/tooltip/store/TooltipHandle.mjs
  var TooltipHandle = class extends BasePopupHandle {
    constructor() {
      super(createNullTooltipStore(), "Tooltip");
    }
    /**
     * Opens the tooltip and associates it with the trigger with the given id.
     *
     * This method should only be called in an event handler or an effect (not during rendering).
     *
     * @param triggerId ID of the trigger to associate with the tooltip. The trigger must be a matching
     * `Tooltip.Trigger` with this handle passed as a prop.
     */
    open(triggerId) {
      this.openByTrigger(triggerId);
    }
    /**
     * Closes the tooltip.
     *
     * This method should only be called in an event handler or an effect (not during rendering).
     */
    close() {
      this.closePopup();
    }
    /**
     * Whether the tooltip is currently open. Returns `false` while no root is attached to the handle.
     */
    get isOpen() {
      return this.attachedStore?.select("open") ?? false;
    }
  };
  function createTooltipHandle() {
    return new TooltipHandle();
  }

  // node_modules/@base-ui/react/use-render/useRender.mjs
  function useRender(params) {
    return useRenderElement(params.defaultTagName ?? "div", params, params);
  }

  // packages/ui/build-module/text/text.mjs
  var import_element19 = __toESM(require_element(), 1);
  var STYLE_HASH_ATTRIBUTE = "data-wp-hash";
  function getRuntime() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument(targetDocument) {
    const runtime = getRuntime();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle(hash, css) {
    const runtime = getRuntime();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle("3167e7d116", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._83ed8a8da5dd50ea__text{text-wrap:pretty;margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-emphasis,600)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-default,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-default,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}');
  }
  var style_default = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" };
  if (typeof process === "undefined" || true) {
    registerStyle("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  var Text = (0, import_element19.forwardRef)(function Text2({ variant = "body-md", render: render5, className, ...props }, ref) {
    const element = useRender({
      render: render5,
      defaultTagName: "span",
      ref,
      props: mergeProps(props, {
        className: clsx_default(
          style_default.text,
          global_css_defense_default.heading,
          global_css_defense_default.p,
          style_default[variant],
          className
        )
      })
    });
    return element;
  });

  // packages/ui/build-module/badge/badge.mjs
  var import_jsx_runtime150 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash";
  function getRuntime2() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument2(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash2(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE2}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle2(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime2();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash2(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument2(targetDocument) {
    const runtime = getRuntime2();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle2(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle2(hash, css) {
    const runtime = getRuntime2();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle2(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle2("40ea4a6382", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-background-surface-error,#fae5e1);color:var(--wpds-color-foreground-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-background-surface-warning,#fde6be);color:var(--wpds-color-foreground-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-background-surface-caution,#fee995);color:var(--wpds-color-foreground-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-background-surface-success,#c2f8ca);color:var(--wpds-color-foreground-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-background-surface-info,#deebfa);color:var(--wpds-color-foreground-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-foreground-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}}");
  }
  var style_default2 = { "badge": "_96e6251aad1a6136__badge", "is-high-intent": "_99f7158cb520f750__is-high-intent", "is-medium-intent": "c20ebef2365bc8b7__is-medium-intent", "is-low-intent": "_365e1626c6202e52__is-low-intent", "is-stable-intent": "_33f8198127ddf4ef__is-stable-intent", "is-informational-intent": "_04c1aca8fc449412__is-informational-intent", "is-draft-intent": "_90726e69d495ec19__is-draft-intent", "is-none-intent": "_898f4a544993bd39__is-none-intent" };
  var Badge = (0, import_element20.forwardRef)(function Badge2({ intent = "none", className, ...props }, ref) {
    return /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(
      Text,
      {
        ref,
        className: clsx_default(
          style_default2.badge,
          style_default2[`is-${intent}-intent`],
          className
        ),
        ...props,
        variant: "body-sm"
      }
    );
  });

  // packages/ui/build-module/tooltip/index.mjs
  var tooltip_exports = {};
  __export(tooltip_exports, {
    Popup: () => Popup,
    Portal: () => Portal,
    Positioner: () => Positioner,
    Provider: () => Provider,
    Root: () => Root,
    Trigger: () => Trigger
  });

  // packages/ui/build-module/tooltip/popup.mjs
  var import_element24 = __toESM(require_element(), 1);

  // packages/ui/build-module/tooltip/portal.mjs
  var import_element21 = __toESM(require_element(), 1);

  // packages/ui/build-module/utils/wp-compat-overlay-slot.mjs
  var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash";
  function getRuntime3() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument3(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash3(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE3}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle3(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime3();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash3(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument3(targetDocument) {
    const runtime = getRuntime3();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle3(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle3(hash, css) {
    const runtime = getRuntime3();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle3(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle3("be37f31c1e", "._11fc52b637ff8a7e__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._11fc52b637ff8a7e__slot>*{pointer-events:auto}}}");
  }
  var wp_compat_overlay_slot_default = { "slot": "_11fc52b637ff8a7e__slot" };
  var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot";
  function resolveOwnerDocument() {
    return typeof document === "undefined" ? null : document;
  }
  function isInWordPressEnvironment() {
    let topWp;
    try {
      topWp = window.top?.wp;
    } catch {
    }
    const wp = topWp ?? window.wp;
    return typeof wp?.components === "object" && wp.components !== null;
  }
  var cachedSlot = null;
  function ensureSlotIsAccessible(element) {
    element.setAttribute("aria-hidden", "false");
    return element;
  }
  function createSlot(ownerDocument2) {
    const element = ownerDocument2.createElement("div");
    element.setAttribute(WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE, "");
    if (wp_compat_overlay_slot_default.slot) {
      element.classList.add(wp_compat_overlay_slot_default.slot);
    }
    ownerDocument2.body.appendChild(element);
    return element;
  }
  function getWpCompatOverlaySlot() {
    if (typeof window === "undefined") {
      return void 0;
    }
    if (!isInWordPressEnvironment() && window.__wpUiCompatOverlaySlotEnabled !== true) {
      return void 0;
    }
    const ownerDocument2 = resolveOwnerDocument();
    if (!ownerDocument2 || !ownerDocument2.body) {
      return void 0;
    }
    if (cachedSlot && cachedSlot.ownerDocument === ownerDocument2 && cachedSlot.isConnected) {
      return ensureSlotIsAccessible(cachedSlot);
    }
    const existing = ownerDocument2.querySelector(
      `[${WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE}]`
    );
    if (existing instanceof HTMLDivElement) {
      cachedSlot = ensureSlotIsAccessible(existing);
      return cachedSlot;
    }
    if (cachedSlot?.isConnected) {
      cachedSlot.remove();
    }
    cachedSlot = ensureSlotIsAccessible(createSlot(ownerDocument2));
    return cachedSlot;
  }

  // packages/ui/build-module/tooltip/portal.mjs
  var import_jsx_runtime151 = __toESM(require_jsx_runtime(), 1);
  var Portal = (0, import_element21.forwardRef)(
    function TooltipPortal3({ container, ...restProps }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
        index_parts_exports6.Portal,
        {
          container: container ?? getWpCompatOverlaySlot(),
          ...restProps,
          ref
        }
      );
    }
  );

  // packages/ui/build-module/tooltip/positioner.mjs
  var import_element22 = __toESM(require_element(), 1);
  var import_jsx_runtime152 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash";
  function getRuntime4() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument4(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash4(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE4}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle4(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime4();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash4(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument4(targetDocument) {
    const runtime = getRuntime4();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle4(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle4(hash, css) {
    const runtime = getRuntime4();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle4(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle4("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle4("19fcc06039", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{--_wp-ui-elevation-sm:0 1px 2px rgba(0,0,0,.05),0 2px 3px rgba(0,0,0,.04),0 6px 6px rgba(0,0,0,.03),0 8px 8px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-sm);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}');
  }
  var style_default3 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" };
  var Positioner = (0, import_element22.forwardRef)(
    function TooltipPositioner3({ align = "center", className, side = "top", sideOffset = 4, ...props }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(
        index_parts_exports6.Positioner,
        {
          ref,
          align,
          side,
          sideOffset,
          ...props,
          className: clsx_default(
            resets_default["box-sizing"],
            style_default3.positioner,
            className
          )
        }
      );
    }
  );

  // packages/ui/build-module/utils/render-slot-with-children.mjs
  var import_element23 = __toESM(require_element(), 1);
  function renderSlotWithChildren(slot, defaultSlot, children) {
    return (0, import_element23.cloneElement)(slot ?? defaultSlot, { children });
  }

  // packages/ui/build-module/utils/theme-provider.mjs
  var theme = __toESM(require_theme(), 1);

  // packages/ui/build-module/lock-unlock.mjs
  var import_private_apis4 = __toESM(require_private_apis(), 1);
  var { lock: lock3, unlock: unlock3 } = (0, import_private_apis4.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
    "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
    "@wordpress/ui"
  );

  // packages/ui/build-module/utils/theme-provider.mjs
  function getThemeProvider() {
    const themePackage = theme;
    if (themePackage.ThemeProvider) {
      return themePackage.ThemeProvider;
    }
    if (!themePackage.privateApis) {
      throw new Error(
        "@wordpress/ui: @wordpress/theme must expose `ThemeProvider` or `privateApis.ThemeProvider`."
      );
    }
    return unlock3(
      themePackage.privateApis
    ).ThemeProvider;
  }
  var ThemeProvider = getThemeProvider();

  // packages/ui/build-module/tooltip/popup.mjs
  var import_jsx_runtime153 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash";
  function getRuntime5() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument5(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash5(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE5}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle5(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime5();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash5(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument5(targetDocument) {
    const runtime = getRuntime5();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle5(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle5(hash, css) {
    const runtime = getRuntime5();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle5(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle5("19fcc06039", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{--_wp-ui-elevation-sm:0 1px 2px rgba(0,0,0,.05),0 2px 3px rgba(0,0,0,.04),0 6px 6px rgba(0,0,0,.03),0 8px 8px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-sm);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}');
  }
  var style_default4 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" };
  var POPUP_COLOR = { background: "#1e1e1e" };
  var Popup = (0, import_element24.forwardRef)(function TooltipPopup3({ portal, positioner, children, className, ...props }, ref) {
    const popupContent = /* @__PURE__ */ (0, import_jsx_runtime153.jsx)(ThemeProvider, { color: POPUP_COLOR, children: /* @__PURE__ */ (0, import_jsx_runtime153.jsx)(
      index_parts_exports6.Popup,
      {
        ref,
        className: clsx_default(style_default4.popup, className),
        ...props,
        children
      }
    ) });
    const positionedPopup = renderSlotWithChildren(
      positioner,
      /* @__PURE__ */ (0, import_jsx_runtime153.jsx)(Positioner, {}),
      popupContent
    );
    return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime153.jsx)(Portal, {}), positionedPopup);
  });

  // packages/ui/build-module/tooltip/trigger.mjs
  var import_element25 = __toESM(require_element(), 1);
  var import_jsx_runtime154 = __toESM(require_jsx_runtime(), 1);
  var Trigger = (0, import_element25.forwardRef)(
    function TooltipTrigger3(props, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(index_parts_exports6.Trigger, { ref, ...props });
    }
  );

  // packages/ui/build-module/utils/direction-provider.mjs
  var import_i18n8 = __toESM(require_i18n(), 1);
  var import_jsx_runtime155 = __toESM(require_jsx_runtime(), 1);
  function DirectionProvider3({ children }) {
    return /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(DirectionProvider, { direction: (0, import_i18n8.isRTL)() ? "rtl" : "ltr", children });
  }

  // packages/ui/build-module/tooltip/root.mjs
  var import_jsx_runtime156 = __toESM(require_jsx_runtime(), 1);
  function Root(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime156.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime156.jsx)(index_parts_exports6.Root, { ...props }) });
  }

  // packages/ui/build-module/tooltip/provider.mjs
  var import_jsx_runtime157 = __toESM(require_jsx_runtime(), 1);
  function Provider({ ...props }) {
    return /* @__PURE__ */ (0, import_jsx_runtime157.jsx)(index_parts_exports6.Provider, { ...props });
  }

  // packages/ui/build-module/link/link.mjs
  var import_element26 = __toESM(require_element(), 1);
  var import_i18n9 = __toESM(require_i18n(), 1);
  var import_jsx_runtime158 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash";
  function getRuntime6() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument6(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash6(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE6}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle6(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime6();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash6(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument6(targetDocument) {
    const runtime = getRuntime6();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle6(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle6(hash, css) {
    const runtime = getRuntime6();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle6(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle6("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default2 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle6("08122b3d53", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within,:focus-visible ._81935a08e952f267__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
  }
  var focus_module_default = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-parent-visible": "_81935a08e952f267__outset-ring--focus-parent-visible", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" };
  if (typeof process === "undefined" || true) {
    registerStyle6("e8e6a9be37", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d4250949359b05ce__link{text-decoration-thickness:from-font;text-underline-offset:.2em}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2196"}}}');
  }
  var style_default5 = { "link": "d4250949359b05ce__link", "is-brand": "c6055659b8e2cd2c__is-brand", "is-neutral": "_92e0dfcaeee15b88__is-neutral", "is-unstyled": "cf122a9bf1035d42__is-unstyled", "link-icon": "_0cb411afac4c86c7__link-icon" };
  if (typeof process === "undefined" || true) {
    registerStyle6("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default2 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  var Link = (0, import_element26.forwardRef)(function Link2({
    children,
    variant = "default",
    tone = "brand",
    openInNewTab = false,
    target,
    render: render5,
    className,
    ...props
  }, ref) {
    const shouldShowNewTabIndicator = openInNewTab || /^_blank$/i.test(target ?? "");
    const element = useRender({
      render: render5,
      defaultTagName: "a",
      ref,
      props: mergeProps(props, {
        className: clsx_default(
          global_css_defense_default2.a,
          resets_default2["box-sizing"],
          focus_module_default["outset-ring--focus-except-active"],
          variant !== "unstyled" && style_default5.link,
          variant !== "unstyled" && style_default5[`is-${tone}`],
          variant === "unstyled" && style_default5["is-unstyled"],
          className
        ),
        target: target ?? (openInNewTab ? "_blank" : void 0),
        children: /* @__PURE__ */ (0, import_jsx_runtime158.jsxs)(import_jsx_runtime158.Fragment, { children: [
          children,
          shouldShowNewTabIndicator && /* @__PURE__ */ (0, import_jsx_runtime158.jsx)(
            "span",
            {
              className: style_default5["link-icon"],
              role: "img",
              "aria-label": (
                /* translators: accessibility text appended to link text */
                (0, import_i18n9.__)("(opens in a new tab)")
              )
            }
          )
        ] })
      })
    });
    return element;
  });

  // packages/ui/build-module/menu/index.mjs
  var menu_exports = {};
  __export(menu_exports, {
    CheckboxItem: () => CheckboxItem,
    Group: () => Group,
    GroupLabel: () => GroupLabel,
    Item: () => Item,
    ItemDescription: () => ItemDescription,
    ItemLabel: () => ItemLabel,
    LinkItem: () => LinkItem,
    Popup: () => Popup2,
    Portal: () => Portal2,
    Positioner: () => Positioner2,
    PrefixIcon: () => PrefixIcon,
    RadioGroup: () => RadioGroup,
    RadioItem: () => RadioItem,
    Root: () => Root2,
    Separator: () => Separator2,
    SubmenuRoot: () => SubmenuRoot,
    SubmenuTrigger: () => SubmenuTrigger,
    Trigger: () => Trigger2
  });

  // packages/ui/build-module/menu/checkbox-item.mjs
  var import_element35 = __toESM(require_element(), 1);

  // packages/ui/build-module/icon/icon.mjs
  var import_element27 = __toESM(require_element(), 1);
  var import_primitives94 = __toESM(require_primitives(), 1);
  var import_jsx_runtime159 = __toESM(require_jsx_runtime(), 1);
  var Icon = (0, import_element27.forwardRef)(function Icon2({ icon, size: size4 = 24, style, ...restProps }, ref) {
    const mergedStyle = icon.props.style || style ? { ...icon.props.style, ...style } : void 0;
    return /* @__PURE__ */ (0, import_jsx_runtime159.jsx)(
      import_primitives94.SVG,
      {
        ref,
        ...icon.props,
        ...restProps,
        ...mergedStyle ? { style: mergedStyle } : {},
        width: size4,
        height: size4
      }
    );
  });

  // packages/ui/build-module/menu/context.mjs
  var import_element28 = __toESM(require_element(), 1);
  var MenuContext = (0, import_element28.createContext)({
    isSubmenu: false
  });
  var useMenuContext = () => (0, import_element28.useContext)(MenuContext);
  var MenuItemContentContext = (0, import_element28.createContext)(null);
  var useMenuItemContentContext = () => (0, import_element28.useContext)(MenuItemContentContext);

  // packages/ui/build-module/menu/item.mjs
  var import_element34 = __toESM(require_element(), 1);

  // packages/ui/build-module/utils/keyboard-shortcut.mjs
  var import_element30 = __toESM(require_element(), 1);
  var import_i18n10 = __toESM(require_i18n(), 1);

  // packages/ui/build-module/visually-hidden/visually-hidden.mjs
  var import_element29 = __toESM(require_element(), 1);
  var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash";
  function getRuntime7() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument7(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash7(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE7}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle7(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime7();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash7(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument7(targetDocument) {
    const runtime = getRuntime7();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle7(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle7(hash, css) {
    const runtime = getRuntime7();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle7(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle7("f4df7461e9", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.f37b9e2e191ebd66__visually-hidden{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;overflow-wrap:normal;padding:0;position:absolute;width:1px;word-break:normal}}}");
  }
  var style_default6 = { "visually-hidden": "f37b9e2e191ebd66__visually-hidden" };
  var VisuallyHidden = (0, import_element29.forwardRef)(
    function VisuallyHidden2({ render: render5, ...restProps }, ref) {
      const element = useRender({
        render: render5,
        ref,
        props: mergeProps(
          { className: style_default6["visually-hidden"] },
          restProps,
          {
            // @ts-expect-error Arbitrary data-* attributes aren't indexable on the typed div props. Kept hardcoded so consumers can't change or remove it.
            "data-visually-hidden": ""
          }
        )
      });
      return element;
    }
  );

  // packages/ui/build-module/utils/keyboard-shortcut.mjs
  var import_jsx_runtime160 = __toESM(require_jsx_runtime(), 1);
  function useKeyboardShortcutProps({
    "aria-describedby": ariaDescribedBy,
    "aria-keyshortcuts": ariaKeyShortcuts,
    shortcut
  }) {
    const generatedDescriptionId = (0, import_element30.useId)();
    const descriptionId = shortcut ? generatedDescriptionId : void 0;
    const describedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" ");
    return {
      descriptionId,
      targetProps: {
        "aria-describedby": describedBy || void 0,
        "aria-keyshortcuts": shortcut?.ariaKeyShortcut ?? ariaKeyShortcuts
      }
    };
  }
  var KeyboardShortcutDescription = (0, import_element30.forwardRef)(function KeyboardShortcutDescription2({ descriptionId, shortcut }, ref) {
    return /* @__PURE__ */ (0, import_jsx_runtime160.jsx)(
      VisuallyHidden,
      {
        id: descriptionId,
        "aria-hidden": "true",
        render: /* @__PURE__ */ (0, import_jsx_runtime160.jsx)("span", { ref }),
        children: (0, import_i18n10.sprintf)(
          /* translators: %s: keyboard shortcut. */
          (0, import_i18n10.__)("Keyboard shortcut: %s"),
          shortcut.label ?? shortcut.ariaKeyShortcut
        )
      }
    );
  });
  var KeyboardShortcutDisplay = (0, import_element30.forwardRef)(function KeyboardShortcutDisplay2({ className, shortcut }, ref) {
    return /* @__PURE__ */ (0, import_jsx_runtime160.jsx)("span", { ref, "aria-hidden": "true", className, dir: "ltr", children: shortcut.displayShortcut });
  });

  // packages/ui/build-module/utils/item-popup/item-content.mjs
  var import_element31 = __toESM(require_element(), 1);
  var VALIDATION_ENABLED = true;
  function parseItemContent(children, { Label: Label3, Description: Description4, validationMessage }) {
    const childArray = import_element31.Children.toArray(children);
    const [label, ...descriptions] = childArray;
    const hasLabel = (0, import_element31.isValidElement)(label) && label.type === Label3;
    const descriptionElements = descriptions.filter(
      (description) => (0, import_element31.isValidElement)(description) && description.type === Description4
    );
    if (VALIDATION_ENABLED && (!hasLabel || descriptionElements.length !== descriptions.length)) {
      throw new Error(validationMessage);
    }
    return {
      descriptionIds: descriptionElements.map(
        (description) => description.props.id
      ),
      hasLabel,
      labelId: hasLabel ? label.props.id : void 0
    };
  }
  function useItemContent(children, components, {
    "aria-describedby": ariaDescribedBy,
    "aria-label": ariaLabel,
    "aria-labelledby": ariaLabelledBy
  } = {}) {
    const generatedLabelId = (0, import_element31.useId)();
    const generatedDescriptionId = (0, import_element31.useId)();
    const { descriptionIds, hasLabel, labelId } = parseItemContent(
      children,
      components
    );
    const resolvedLabelId = hasLabel ? labelId ?? generatedLabelId : void 0;
    const resolvedDescriptionIds = descriptionIds.map(
      (descriptionId, index3) => descriptionId ?? `${generatedDescriptionId}-${index3}`
    );
    const itemDescribedBy = Array.from(
      /* @__PURE__ */ new Set([
        ...ariaDescribedBy?.split(/\s+/).filter(Boolean) ?? [],
        ...resolvedDescriptionIds
      ])
    ).join(" ");
    let descriptionIndex = 0;
    const { Label: Label3, Description: Description4, descriptionValidationToken } = components;
    const contentChildren = import_element31.Children.map(children, (child) => {
      if (!(0, import_element31.isValidElement)(child)) {
        return child;
      }
      if (child.type === Label3) {
        return child.props.id === resolvedLabelId ? child : (0, import_element31.cloneElement)(child, { id: resolvedLabelId });
      }
      if (child.type !== Description4) {
        return child;
      }
      const descriptionId = resolvedDescriptionIds[descriptionIndex++];
      if (!descriptionValidationToken && child.props.id === descriptionId) {
        return child;
      }
      return (0, import_element31.cloneElement)(child, {
        id: descriptionId,
        ...descriptionValidationToken && {
          validationToken: descriptionValidationToken
        }
      });
    });
    const labelledBy = ariaLabelledBy ?? (ariaLabel ? void 0 : resolvedLabelId);
    return {
      contentChildren,
      resolvedLabelId,
      itemAriaProps: {
        "aria-describedby": itemDescribedBy || void 0,
        "aria-label": ariaLabel,
        "aria-labelledby": labelledBy
      }
    };
  }

  // packages/ui/build-module/menu/item-description.mjs
  var import_element32 = __toESM(require_element(), 1);
  var import_jsx_runtime161 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash";
  function getRuntime8() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument8(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash8(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE8}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle8(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime8();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash8(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument8(targetDocument) {
    const runtime = getRuntime8();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle8(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle8(hash, css) {
    const runtime = getRuntime8();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle8(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle8("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default7 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var ITEM_DESCRIPTION_DIRECT_CHILD = /* @__PURE__ */ Symbol();
  var ItemDescription = (0, import_element32.forwardRef)(
    function MenuItemDescription(props, ref) {
      const { className, id, validationToken, ...restProps } = props;
      if (validationToken !== ITEM_DESCRIPTION_DIRECT_CHILD) {
        throw new Error(
          "Menu.ItemDescription: Missing direct menu item parent. Render <Menu.ItemDescription> as a direct child of a menu item."
        );
      }
      return /* @__PURE__ */ (0, import_jsx_runtime161.jsx)(
        Text,
        {
          ref,
          variant: "body-sm",
          ...restProps,
          id,
          className: clsx_default(style_default7["item-description"], className)
        }
      );
    }
  );

  // packages/ui/build-module/menu/item-label.mjs
  var import_element33 = __toESM(require_element(), 1);
  var import_jsx_runtime162 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash";
  function getRuntime9() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument9(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash9(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE9}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle9(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime9();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash9(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument9(targetDocument) {
    const runtime = getRuntime9();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle9(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle9(hash, css) {
    const runtime = getRuntime9();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle9(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle9("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default8 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var ItemLabel = (0, import_element33.forwardRef)(
    function MenuItemLabel({ children, className, id, ...props }, ref) {
      const itemContentContext = useMenuItemContentContext();
      return /* @__PURE__ */ (0, import_jsx_runtime162.jsxs)(
        Text,
        {
          ref,
          variant: "body-md",
          ...props,
          id: id ?? itemContentContext?.labelId,
          className: clsx_default(style_default8["item-label"], className),
          children: [
            children,
            itemContentContext?.labelTrailing
          ]
        }
      );
    }
  );

  // packages/ui/build-module/menu/item.mjs
  var import_jsx_runtime163 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash";
  function getRuntime10() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument10(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash10(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE10}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle10(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime10();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash10(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument10(targetDocument) {
    const runtime = getRuntime10();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle10(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle10(hash, css) {
    const runtime = getRuntime10();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle10(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle10("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default3 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  if (typeof process === "undefined" || true) {
    registerStyle10("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default3 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle10("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default9 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var ITEM_CONTENT_COMPONENTS = {
    Label: ItemLabel,
    Description: ItemDescription,
    validationMessage: "Menu.ItemLabel must be the first direct child of every menu item, followed only by Menu.ItemDescription components.",
    descriptionValidationToken: ITEM_DESCRIPTION_DIRECT_CHILD
  };
  function useItemContent2(children, {
    "aria-describedby": ariaDescribedBy,
    "aria-keyshortcuts": ariaKeyShortcuts,
    "aria-label": ariaLabel,
    "aria-labelledby": ariaLabelledBy,
    labelTrailing,
    shortcut
  }) {
    const { contentChildren, resolvedLabelId, itemAriaProps } = useItemContent(children, ITEM_CONTENT_COMPONENTS, {
      "aria-describedby": ariaDescribedBy,
      "aria-label": ariaLabel,
      "aria-labelledby": ariaLabelledBy
    });
    const {
      descriptionId: shortcutDescriptionId,
      targetProps: shortcutAriaProps
    } = useKeyboardShortcutProps({
      "aria-describedby": itemAriaProps["aria-describedby"],
      "aria-keyshortcuts": ariaKeyShortcuts,
      shortcut
    });
    return {
      // React widens the tuple while mapping; validation preserves the item-child
      // contract and cloning changes only generated description IDs.
      contentChildren,
      contentContextValue: {
        labelId: resolvedLabelId,
        labelTrailing
      },
      itemAriaProps: {
        ...shortcutAriaProps,
        "aria-label": itemAriaProps["aria-label"],
        "aria-labelledby": itemAriaProps["aria-labelledby"]
      },
      shortcutDescriptionId
    };
  }
  function ItemContent({
    children,
    prefix: prefix2,
    shortcut,
    shortcutDescriptionId,
    suffix,
    trailing
  }) {
    const hasPrefix = import_element34.Children.toArray(prefix2).some(
      (child) => child !== ""
    );
    const hasSuffix = import_element34.Children.toArray(suffix).some(
      (child) => child !== ""
    );
    const hasTrailing = import_element34.Children.toArray(trailing).some(
      (child) => child !== ""
    );
    return /* @__PURE__ */ (0, import_jsx_runtime163.jsxs)(import_jsx_runtime163.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime163.jsxs)("span", { className: style_default9["item-content"], children: [
        /* @__PURE__ */ (0, import_jsx_runtime163.jsx)("span", { className: style_default9["item-children"], children }),
        hasSuffix && /* @__PURE__ */ (0, import_jsx_runtime163.jsx)("span", { className: style_default9["item-suffix"], children: suffix }),
        shortcut && /* @__PURE__ */ (0, import_jsx_runtime163.jsx)("span", { className: style_default9["item-shortcut"], children: /* @__PURE__ */ (0, import_jsx_runtime163.jsx)(KeyboardShortcutDisplay, { shortcut }) }),
        hasTrailing && /* @__PURE__ */ (0, import_jsx_runtime163.jsx)("span", { className: style_default9["item-trailing"], children: trailing })
      ] }),
      hasPrefix && /* @__PURE__ */ (0, import_jsx_runtime163.jsx)("span", { "aria-hidden": "true", className: style_default9["item-prefix"], children: prefix2 }),
      shortcut && shortcutDescriptionId && /* @__PURE__ */ (0, import_jsx_runtime163.jsx)(
        KeyboardShortcutDescription,
        {
          descriptionId: shortcutDescriptionId,
          shortcut
        }
      )
    ] });
  }
  var Item = (0, import_element34.forwardRef)(function MenuItem3({
    children,
    className,
    prefix: prefix2,
    shortcut,
    suffix,
    "aria-describedby": ariaDescribedBy,
    "aria-keyshortcuts": ariaKeyShortcuts,
    "aria-label": ariaLabel,
    "aria-labelledby": ariaLabelledBy,
    ...props
  }, ref) {
    const {
      contentChildren,
      contentContextValue,
      itemAriaProps,
      shortcutDescriptionId
    } = useItemContent2(children, {
      "aria-describedby": ariaDescribedBy,
      "aria-keyshortcuts": ariaKeyShortcuts,
      "aria-label": ariaLabel,
      "aria-labelledby": ariaLabelledBy,
      shortcut
    });
    return /* @__PURE__ */ (0, import_jsx_runtime163.jsx)(
      index_parts_exports3.Item,
      {
        ref,
        ...itemAriaProps,
        className: clsx_default(
          global_css_defense_default3.div,
          resets_default3["box-sizing"],
          style_default9.item,
          className
        ),
        ...props,
        children: /* @__PURE__ */ (0, import_jsx_runtime163.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime163.jsx)(
          ItemContent,
          {
            prefix: prefix2,
            shortcut,
            shortcutDescriptionId,
            suffix,
            children: contentChildren
          }
        ) })
      }
    );
  });

  // packages/ui/build-module/menu/checkbox-item.mjs
  var import_jsx_runtime164 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash";
  function getRuntime11() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument11(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash11(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE11}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle11(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime11();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash11(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument11(targetDocument) {
    const runtime = getRuntime11();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle11(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle11(hash, css) {
    const runtime = getRuntime11();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle11(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle11("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default4 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  if (typeof process === "undefined" || true) {
    registerStyle11("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default4 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle11("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default10 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var CheckboxItem = (0, import_element35.forwardRef)(
    function MenuCheckboxItem3({
      children,
      className,
      prefix: prefix2,
      shortcut,
      suffix,
      "aria-describedby": ariaDescribedBy,
      "aria-keyshortcuts": ariaKeyShortcuts,
      "aria-label": ariaLabel,
      "aria-labelledby": ariaLabelledBy,
      ...props
    }, ref) {
      const {
        contentChildren,
        contentContextValue,
        itemAriaProps,
        shortcutDescriptionId
      } = useItemContent2(children, {
        "aria-describedby": ariaDescribedBy,
        "aria-keyshortcuts": ariaKeyShortcuts,
        "aria-label": ariaLabel,
        "aria-labelledby": ariaLabelledBy,
        shortcut
      });
      return /* @__PURE__ */ (0, import_jsx_runtime164.jsxs)(
        index_parts_exports3.CheckboxItem,
        {
          ref,
          ...itemAriaProps,
          className: clsx_default(
            global_css_defense_default4.div,
            resets_default4["box-sizing"],
            style_default10.item,
            className
          ),
          ...props,
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime164.jsx)(
              index_parts_exports3.CheckboxItemIndicator,
              {
                keepMounted: true,
                className: style_default10["item-selection-indicator"],
                children: /* @__PURE__ */ (0, import_jsx_runtime164.jsx)(
                  Icon,
                  {
                    icon: check_default,
                    size: 24,
                    className: style_default10["checkbox-selection-icon"],
                    "aria-hidden": "true"
                  }
                )
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime164.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime164.jsx)(
              ItemContent,
              {
                prefix: prefix2,
                shortcut,
                shortcutDescriptionId,
                suffix,
                children: contentChildren
              }
            ) })
          ]
        }
      );
    }
  );

  // packages/ui/build-module/menu/group.mjs
  var import_element36 = __toESM(require_element(), 1);
  var import_jsx_runtime165 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash";
  function getRuntime12() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument12(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash12(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE12}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle12(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime12();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash12(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument12(targetDocument) {
    const runtime = getRuntime12();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle12(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle12(hash, css) {
    const runtime = getRuntime12();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle12(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle12("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default11 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var Group = (0, import_element36.forwardRef)(function MenuGroup3({ className, ...props }, ref) {
    return /* @__PURE__ */ (0, import_jsx_runtime165.jsx)(
      index_parts_exports3.Group,
      {
        ref,
        className: clsx_default(style_default11.group, className),
        ...props
      }
    );
  });

  // packages/ui/build-module/menu/group-label.mjs
  var import_element37 = __toESM(require_element(), 1);
  var import_jsx_runtime166 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash";
  function getRuntime13() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument13(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash13(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE13}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle13(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime13();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash13(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument13(targetDocument) {
    const runtime = getRuntime13();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle13(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle13(hash, css) {
    const runtime = getRuntime13();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle13(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle13("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default12 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var GroupLabel = (0, import_element37.forwardRef)(
    function MenuGroupLabel3({ className, ...props }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime166.jsx)(
        index_parts_exports3.GroupLabel,
        {
          ref,
          className: clsx_default(style_default12["group-label"], className),
          ...props
        }
      );
    }
  );

  // packages/ui/build-module/menu/link-item.mjs
  var import_element38 = __toESM(require_element(), 1);
  var import_i18n11 = __toESM(require_i18n(), 1);
  var import_jsx_runtime167 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash";
  function getRuntime14() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument14(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash14(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE14}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle14(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime14();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash14(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument14(targetDocument) {
    const runtime = getRuntime14();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle14(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle14(hash, css) {
    const runtime = getRuntime14();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle14(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle14("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default5 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  if (typeof process === "undefined" || true) {
    registerStyle14("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default5 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle14("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default13 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var LinkItem = (0, import_element38.forwardRef)(function MenuLinkItem3({
    children,
    className,
    openInNewTab = false,
    target,
    prefix: prefix2,
    shortcut,
    suffix,
    "aria-describedby": ariaDescribedBy,
    "aria-keyshortcuts": ariaKeyShortcuts,
    "aria-label": ariaLabel,
    "aria-labelledby": ariaLabelledBy,
    rel,
    ...props
  }, ref) {
    const shouldShowNewTabIndicator = openInNewTab || /^_blank$/i.test(target ?? "");
    const externalLinkIndicator = shouldShowNewTabIndicator ? /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(
      "span",
      {
        className: style_default13["external-link-indicator"],
        role: "img",
        "aria-label": (
          /* translators: accessibility text appended to link text */
          (0, import_i18n11.__)("(opens in a new tab)")
        )
      }
    ) : null;
    const {
      contentChildren,
      contentContextValue,
      itemAriaProps,
      shortcutDescriptionId
    } = useItemContent2(children, {
      "aria-describedby": ariaDescribedBy,
      "aria-keyshortcuts": ariaKeyShortcuts,
      "aria-label": ariaLabel,
      "aria-labelledby": ariaLabelledBy,
      labelTrailing: externalLinkIndicator,
      shortcut
    });
    return /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(
      index_parts_exports3.LinkItem,
      {
        ref,
        ...props,
        ...itemAriaProps,
        rel,
        target: target ?? (openInNewTab ? "_blank" : void 0),
        className: clsx_default(
          global_css_defense_default5.a,
          resets_default5["box-sizing"],
          style_default13.item,
          className
        ),
        children: /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(
          ItemContent,
          {
            prefix: prefix2,
            shortcut,
            shortcutDescriptionId,
            suffix,
            children: contentChildren
          }
        ) })
      }
    );
  });

  // packages/ui/build-module/menu/popup.mjs
  var import_element41 = __toESM(require_element(), 1);

  // packages/ui/build-module/menu/portal.mjs
  var import_element39 = __toESM(require_element(), 1);
  var import_jsx_runtime168 = __toESM(require_jsx_runtime(), 1);
  var Portal2 = (0, import_element39.forwardRef)(function MenuPortal3({ container, ...props }, ref) {
    return /* @__PURE__ */ (0, import_jsx_runtime168.jsx)(
      index_parts_exports3.Portal,
      {
        ref,
        container: container ?? getWpCompatOverlaySlot(),
        ...props
      }
    );
  });

  // packages/ui/build-module/menu/positioner.mjs
  var import_element40 = __toESM(require_element(), 1);

  // packages/ui/build-module/form/primitives/constants.mjs
  var ITEM_POPUP_POSITIONER_PROPS = {
    align: "start",
    sideOffset: 8,
    collisionPadding: 12
  };

  // packages/ui/build-module/menu/positioner.mjs
  var import_jsx_runtime169 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash";
  function getRuntime15() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument15(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash15(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE15}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle15(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime15();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash15(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument15(targetDocument) {
    const runtime = getRuntime15();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle15(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle15(hash, css) {
    const runtime = getRuntime15();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle15(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle15("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default6 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle15("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default14 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var MENU_SUBMENU_POPUP_POSITIONER_PROPS = {
    side: "inline-end",
    align: "start",
    sideOffset: -4,
    collisionPadding: 12
  };
  var Positioner2 = (0, import_element40.forwardRef)(
    function MenuPositioner3({ className, ...props }, ref) {
      const { isSubmenu } = useMenuContext();
      const defaultProps = isSubmenu ? MENU_SUBMENU_POPUP_POSITIONER_PROPS : ITEM_POPUP_POSITIONER_PROPS;
      return /* @__PURE__ */ (0, import_jsx_runtime169.jsx)(
        index_parts_exports3.Positioner,
        {
          ...defaultProps,
          ...props,
          ref,
          className: clsx_default(
            resets_default6["box-sizing"],
            style_default14.positioner,
            className
          )
        }
      );
    }
  );

  // packages/ui/build-module/menu/popup.mjs
  var import_jsx_runtime170 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash";
  function getRuntime16() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument16(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash16(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE16}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle16(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime16();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash16(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument16(targetDocument) {
    const runtime = getRuntime16();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle16(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle16(hash, css) {
    const runtime = getRuntime16();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle16(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle16("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default15 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var Popup2 = (0, import_element41.forwardRef)(function MenuPopup3({ children, className, portal, positioner, ...props }, ref) {
    const { isSubmenu } = useMenuContext();
    const popupContent = /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(
      index_parts_exports3.Popup,
      {
        ref,
        className: clsx_default(
          style_default15.popup,
          isSubmenu ? style_default15["is-submenu"] : style_default15["is-root"],
          className
        ),
        ...props,
        children: /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(
          "div",
          {
            className: style_default15.list,
            children
          }
        )
      }
    );
    const positionedPopup = renderSlotWithChildren(
      positioner,
      /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(Positioner2, {}),
      popupContent
    );
    return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(Portal2, {}), positionedPopup);
  });

  // packages/ui/build-module/menu/prefix-icon.mjs
  var import_element42 = __toESM(require_element(), 1);
  var import_jsx_runtime171 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash";
  function getRuntime17() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument17(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash17(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE17}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle17(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime17();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash17(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument17(targetDocument) {
    const runtime = getRuntime17();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle17(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle17(hash, css) {
    const runtime = getRuntime17();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle17(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle17("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default16 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var PrefixIcon = (0, import_element42.forwardRef)(
    function MenuPrefixIcon({ className, size: size4 = 24, style, ...props }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime171.jsx)(
        Icon,
        {
          ...props,
          ref,
          size: size4,
          className: clsx_default(style_default16["prefix-icon"], className),
          style: {
            ...style,
            "--_wp-ui-menu-prefix-icon-size": `${size4}px`
          }
        }
      );
    }
  );
  PrefixIcon.displayName = "Menu.PrefixIcon";

  // packages/ui/build-module/menu/radio-group.mjs
  var import_element43 = __toESM(require_element(), 1);
  var import_jsx_runtime172 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash";
  function getRuntime18() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument18(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash18(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE18}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle18(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime18();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash18(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument18(targetDocument) {
    const runtime = getRuntime18();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle18(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle18(hash, css) {
    const runtime = getRuntime18();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle18(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle18("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default17 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var RadioGroup = (0, import_element43.forwardRef)(
    function MenuRadioGroup3({ className, ...props }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime172.jsx)(
        index_parts_exports3.RadioGroup,
        {
          ref,
          className: clsx_default(style_default17["radio-group"], className),
          ...props
        }
      );
    }
  );

  // packages/ui/build-module/menu/radio-item.mjs
  var import_element44 = __toESM(require_element(), 1);
  var import_primitives95 = __toESM(require_primitives(), 1);
  var import_jsx_runtime173 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE19 = "data-wp-hash";
  function getRuntime19() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument19(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash19(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE19}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE19) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle19(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime19();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash19(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE19, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument19(targetDocument) {
    const runtime = getRuntime19();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle19(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle19(hash, css) {
    const runtime = getRuntime19();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle19(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle19("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default6 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  if (typeof process === "undefined" || true) {
    registerStyle19("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default7 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle19("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default18 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var radioCheck = /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(import_primitives95.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(import_primitives95.Circle, { cx: 12, cy: 12, r: 3 }) });
  var RadioItem = (0, import_element44.forwardRef)(
    function MenuRadioItem3({
      children,
      className,
      prefix: prefix2,
      shortcut,
      suffix,
      "aria-describedby": ariaDescribedBy,
      "aria-keyshortcuts": ariaKeyShortcuts,
      "aria-label": ariaLabel,
      "aria-labelledby": ariaLabelledBy,
      ...props
    }, ref) {
      const {
        contentChildren,
        contentContextValue,
        itemAriaProps,
        shortcutDescriptionId
      } = useItemContent2(children, {
        "aria-describedby": ariaDescribedBy,
        "aria-keyshortcuts": ariaKeyShortcuts,
        "aria-label": ariaLabel,
        "aria-labelledby": ariaLabelledBy,
        shortcut
      });
      return /* @__PURE__ */ (0, import_jsx_runtime173.jsxs)(
        index_parts_exports3.RadioItem,
        {
          ref,
          ...itemAriaProps,
          className: clsx_default(
            global_css_defense_default6.div,
            resets_default7["box-sizing"],
            style_default18.item,
            className
          ),
          ...props,
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(
              index_parts_exports3.RadioItemIndicator,
              {
                keepMounted: true,
                className: style_default18["item-selection-indicator"],
                children: /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(
                  Icon,
                  {
                    icon: radioCheck,
                    className: style_default18["radio-selection-icon"],
                    "aria-hidden": "true"
                  }
                )
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(
              ItemContent,
              {
                prefix: prefix2,
                shortcut,
                shortcutDescriptionId,
                suffix,
                children: contentChildren
              }
            ) })
          ]
        }
      );
    }
  );

  // packages/ui/build-module/menu/use-iframe-dismissal-bridge.mjs
  var import_element45 = __toESM(require_element(), 1);
  function getIframeDocument(iframe) {
    try {
      return iframe.contentDocument;
    } catch {
      return null;
    }
  }
  function forEachIframe(node, callback) {
    if (node.nodeType !== Node.ELEMENT_NODE) {
      return;
    }
    const element = node;
    if (element.tagName === "IFRAME") {
      callback(element);
    }
    element.querySelectorAll("iframe").forEach(callback);
  }
  function isInsideCurrentMenu(event, trigger) {
    const target = event.target;
    const targetElement = target?.nodeType === Node.ELEMENT_NODE ? target : target?.parentElement;
    const popupId = trigger.getAttribute("aria-controls");
    if (!targetElement || !popupId) {
      return false;
    }
    const popup = targetElement.ownerDocument.getElementById(popupId);
    if (!popup) {
      return false;
    }
    const rootOwnerId = popup.getAttribute("data-rootownerid");
    if (!rootOwnerId) {
      return popup.contains(targetElement);
    }
    return targetElement.closest("[data-rootownerid]")?.getAttribute("data-rootownerid") === rootOwnerId;
  }
  function useCloseOnIframePointerDown({
    enabled,
    onPointerDown,
    ownerDocument: ownerDocument2
  }) {
    (0, import_element45.useEffect)(() => {
      if (!enabled || !ownerDocument2) {
        return;
      }
      const observeDocument = (document2, listenForPointerDown) => {
        if (listenForPointerDown) {
          document2.addEventListener("pointerdown", onPointerDown, true);
        }
        const iframeCleanups = /* @__PURE__ */ new Map();
        const addIframe = (iframe) => {
          if (iframeCleanups.has(iframe)) {
            return;
          }
          let iframeDocument = null;
          let iframeDocumentCleanup;
          const updateIframeDocument = () => {
            const nextIframeDocument = getIframeDocument(iframe);
            if (nextIframeDocument === iframeDocument) {
              return;
            }
            iframeDocumentCleanup?.();
            iframeDocument = nextIframeDocument;
            iframeDocumentCleanup = iframeDocument ? observeDocument(iframeDocument, true) : void 0;
          };
          iframe.addEventListener("load", updateIframeDocument);
          updateIframeDocument();
          iframeCleanups.set(iframe, () => {
            iframe.removeEventListener("load", updateIframeDocument);
            iframeDocumentCleanup?.();
          });
        };
        const removeIframe = (iframe) => {
          iframeCleanups.get(iframe)?.();
          iframeCleanups.delete(iframe);
        };
        document2.querySelectorAll("iframe").forEach(addIframe);
        const MutationObserverConstructor = document2.defaultView?.MutationObserver;
        const observer = MutationObserverConstructor ? new MutationObserverConstructor((records) => {
          records.forEach((record) => {
            record.removedNodes.forEach(
              (node) => forEachIframe(node, removeIframe)
            );
            record.addedNodes.forEach(
              (node) => forEachIframe(node, addIframe)
            );
          });
        }) : null;
        observer?.observe(document2.documentElement, {
          childList: true,
          subtree: true
        });
        return () => {
          observer?.disconnect();
          iframeCleanups.forEach((cleanup) => cleanup());
          if (listenForPointerDown) {
            document2.removeEventListener(
              "pointerdown",
              onPointerDown,
              true
            );
          }
        };
      };
      return observeDocument(ownerDocument2, false);
    }, [enabled, onPointerDown, ownerDocument2]);
  }
  function useIframeDismissalBridge({
    actionsRef,
    defaultOpen,
    disabled: disabled2,
    modal,
    onOpenChange,
    open: openProp
  }) {
    const fallbackActionsRef = (0, import_element45.useRef)(null);
    const resolvedActionsRef = actionsRef ?? fallbackActionsRef;
    const [uncontrolledOpen, setUncontrolledOpen] = (0, import_element45.useState)(
      defaultOpen ?? false
    );
    const [trigger, setTrigger] = (0, import_element45.useState)(null);
    const open3 = openProp ?? uncontrolledOpen;
    const handleIframePointerDown = (0, import_element45.useCallback)(
      (event) => {
        if (trigger && !isInsideCurrentMenu(event, trigger)) {
          resolvedActionsRef.current?.close();
        }
      },
      [resolvedActionsRef, trigger]
    );
    useCloseOnIframePointerDown({
      enabled: open3 && modal === false && !disabled2 && trigger !== null,
      onPointerDown: handleIframePointerDown,
      ownerDocument: trigger?.ownerDocument ?? null
    });
    const handleOpenChange = (nextOpen, eventDetails) => {
      onOpenChange(nextOpen, eventDetails);
      if (eventDetails.isCanceled) {
        return;
      }
      setUncontrolledOpen(nextOpen);
      setTrigger(nextOpen ? eventDetails.trigger ?? null : null);
    };
    return {
      actionsRef: resolvedActionsRef,
      onOpenChange: handleOpenChange
    };
  }

  // packages/ui/build-module/menu/root.mjs
  var import_jsx_runtime174 = __toESM(require_jsx_runtime(), 1);
  function Root2(props) {
    const { onOpenChange } = props;
    const handleOpenChange = (nextOpen, eventDetails) => {
      const trigger = eventDetails.trigger;
      const TriggerElement = trigger?.ownerDocument.defaultView?.HTMLElement;
      const EventTargetElement = trigger?.ownerDocument.defaultView?.Element;
      const activeElementBeforeOpenChange = trigger?.ownerDocument.activeElement;
      const eventTarget = eventDetails.event.target;
      const menuElement = EventTargetElement && eventTarget instanceof EventTargetElement ? eventTarget.closest('[role="menu"]') : null;
      onOpenChange?.(nextOpen, eventDetails);
      if (!nextOpen && eventDetails.reason === "item-press" && !eventDetails.isCanceled && TriggerElement && trigger instanceof TriggerElement && menuElement?.contains(activeElementBeforeOpenChange ?? null) && trigger.ownerDocument.activeElement === activeElementBeforeOpenChange) {
        trigger.focus();
      }
    };
    const iframeDismissalProps = useIframeDismissalBridge({
      actionsRef: props.actionsRef,
      defaultOpen: props.defaultOpen,
      disabled: props.disabled,
      modal: props.modal,
      onOpenChange: handleOpenChange,
      open: props.open
    });
    return /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(MenuContext.Provider, { value: { isSubmenu: false }, children: /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(index_parts_exports3.Root, { ...props, ...iframeDismissalProps }) }) });
  }

  // packages/ui/build-module/menu/separator.mjs
  var import_element46 = __toESM(require_element(), 1);
  var import_jsx_runtime175 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE20 = "data-wp-hash";
  function getRuntime20() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument20(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash20(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE20}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE20) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle20(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime20();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash20(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE20, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument20(targetDocument) {
    const runtime = getRuntime20();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle20(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle20(hash, css) {
    const runtime = getRuntime20();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle20(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle20("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default19 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var Separator2 = (0, import_element46.forwardRef)(
    function MenuSeparator({ className, ...props }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
        index_parts_exports3.Separator,
        {
          ref,
          className: clsx_default(style_default19.separator, className),
          ...props
        }
      );
    }
  );

  // packages/ui/build-module/menu/submenu-root.mjs
  var import_jsx_runtime176 = __toESM(require_jsx_runtime(), 1);
  function SubmenuRoot(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(MenuContext.Provider, { value: { isSubmenu: true }, children: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(index_parts_exports3.SubmenuRoot, { ...props }) });
  }

  // packages/ui/build-module/menu/submenu-trigger.mjs
  var import_element47 = __toESM(require_element(), 1);
  var import_jsx_runtime177 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE21 = "data-wp-hash";
  function getRuntime21() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument21(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash21(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE21}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE21) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle21(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime21();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash21(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE21, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument21(targetDocument) {
    const runtime = getRuntime21();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle21(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle21(hash, css) {
    const runtime = getRuntime21();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle21(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle21("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default7 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  if (typeof process === "undefined" || true) {
    registerStyle21("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default8 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle21("3be1f8dffe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight;--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
  }
  var style_default20 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
  var SubmenuTrigger = (0, import_element47.forwardRef)(
    function MenuSubmenuTrigger3({
      children,
      className,
      prefix: prefix2,
      shortcut,
      suffix,
      "aria-describedby": ariaDescribedBy,
      "aria-keyshortcuts": ariaKeyShortcuts,
      "aria-label": ariaLabel,
      "aria-labelledby": ariaLabelledBy,
      ...props
    }, ref) {
      const {
        contentChildren,
        contentContextValue,
        itemAriaProps,
        shortcutDescriptionId
      } = useItemContent2(children, {
        "aria-describedby": ariaDescribedBy,
        "aria-keyshortcuts": ariaKeyShortcuts,
        "aria-label": ariaLabel,
        "aria-labelledby": ariaLabelledBy,
        shortcut
      });
      return /* @__PURE__ */ (0, import_jsx_runtime177.jsx)(
        index_parts_exports3.SubmenuTrigger,
        {
          ref,
          ...itemAriaProps,
          className: clsx_default(
            global_css_defense_default7.div,
            resets_default8["box-sizing"],
            style_default20.item,
            className
          ),
          ...props,
          children: /* @__PURE__ */ (0, import_jsx_runtime177.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime177.jsx)(
            ItemContent,
            {
              prefix: prefix2,
              shortcut,
              shortcutDescriptionId,
              suffix,
              trailing: /* @__PURE__ */ (0, import_jsx_runtime177.jsx)(
                Icon,
                {
                  className: style_default20["submenu-chevron"],
                  icon: chevron_right_small_default,
                  size: 24,
                  "aria-hidden": "true"
                }
              ),
              children: contentChildren
            }
          ) })
        }
      );
    }
  );

  // packages/ui/build-module/menu/trigger.mjs
  var import_element48 = __toESM(require_element(), 1);
  var import_jsx_runtime178 = __toESM(require_jsx_runtime(), 1);
  var Trigger2 = (0, import_element48.forwardRef)(
    function MenuTrigger3(props, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime178.jsx)(index_parts_exports3.Trigger, { ref, ...props });
    }
  );

  // packages/ui/build-module/button/button.mjs
  var import_a11y = __toESM(require_a11y(), 1);
  var import_element49 = __toESM(require_element(), 1);
  var import_i18n12 = __toESM(require_i18n(), 1);
  var import_jsx_runtime179 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE22 = "data-wp-hash";
  function getRuntime22() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument22(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash22(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE22}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE22) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle22(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime22();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash22(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE22, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument22(targetDocument) {
    const runtime = getRuntime22();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle22(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle22(hash, css) {
    const runtime = getRuntime22();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle22(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle22("effc4e3032", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:var(--wpds-typography-font-weight-emphasis,600);--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:var(--wpds-dimension-size-lg,40px);--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:calc((var(--wpds-dimension-size-2xs, 16px) - var(--wpds-dimension-size-sm, 24px))/2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:border-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:transparent;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:transparent;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);left:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}@media (forced-colors:active){border-block-end-style:none;border-bottom-color:ButtonText;border-inline-start-style:none;border-left-color:ButtonText;border-right-color:ButtonText;border-top-color:ButtonText}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0px;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:var(--wpds-dimension-size-sm,24px)}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-brand-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:var(--wpds-dimension-size-md,32px)}._914b42f315c0e580__is-loading:not(.abbb272e2ce49bd6__is-unstyled){color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}@media (forced-colors:active){color:ButtonFace}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}}');
  }
  var style_default21 = { "button": "_97b0fc33c028be1a__button", "is-unstyled": "abbb272e2ce49bd6__is-unstyled", "is-loading": "_914b42f315c0e580__is-loading", "is-small": "_908205475f9f2a92__is-small", "icon": "_9f6fc6553aeb36fe__icon", "is-brand": "dd460c965226cc77__is-brand", "is-outline": "_62d5a778b7b258ee__is-outline", "is-minimal": "ad0619a3217c6a5b__is-minimal", "is-neutral": "e722a8f96726aa99__is-neutral", "is-solid": "b50b3358c5fb4d0b__is-solid", "is-compact": "cf59cf1b69629838__is-compact", "loading-animation": "_5a1d53da6f830c8d__loading-animation" };
  if (typeof process === "undefined" || true) {
    registerStyle22("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default9 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle22("08122b3d53", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within,:focus-visible ._81935a08e952f267__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
  }
  var focus_module_default2 = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-parent-visible": "_81935a08e952f267__outset-ring--focus-parent-visible", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" };
  if (typeof process === "undefined" || true) {
    registerStyle22("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default8 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  var Button4 = (0, import_element49.forwardRef)(
    function Button22({
      tone = "brand",
      variant = "solid",
      size: size4 = "default",
      className,
      focusableWhenDisabled = true,
      disabled: disabled2,
      loading,
      loadingAnnouncement = (0, import_i18n12.__)("Loading"),
      children,
      ...props
    }, ref) {
      const mergedClassName = clsx_default(
        global_css_defense_default8.button,
        resets_default9["box-sizing"],
        focus_module_default2["outset-ring--focus-except-active"],
        variant !== "unstyled" && style_default21.button,
        style_default21[`is-${tone}`],
        style_default21[`is-${variant}`],
        style_default21[`is-${size4}`],
        loading && style_default21["is-loading"],
        className
      );
      (0, import_element49.useEffect)(() => {
        if (loading && loadingAnnouncement) {
          (0, import_a11y.speak)(loadingAnnouncement);
        }
      }, [loading, loadingAnnouncement]);
      return /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(
        Button2,
        {
          ref,
          className: mergedClassName,
          focusableWhenDisabled,
          disabled: disabled2 ?? loading,
          ...props,
          children
        }
      );
    }
  );

  // packages/ui/build-module/button/icon.mjs
  var import_element50 = __toESM(require_element(), 1);
  var import_jsx_runtime180 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE23 = "data-wp-hash";
  function getRuntime23() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument23(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash23(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE23}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE23) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle23(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime23();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash23(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE23, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument23(targetDocument) {
    const runtime = getRuntime23();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle23(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle23(hash, css) {
    const runtime = getRuntime23();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle23(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle23("effc4e3032", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:var(--wpds-typography-font-weight-emphasis,600);--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:var(--wpds-dimension-size-lg,40px);--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:calc((var(--wpds-dimension-size-2xs, 16px) - var(--wpds-dimension-size-sm, 24px))/2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:border-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:transparent;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:transparent;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);left:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}@media (forced-colors:active){border-block-end-style:none;border-bottom-color:ButtonText;border-inline-start-style:none;border-left-color:ButtonText;border-right-color:ButtonText;border-top-color:ButtonText}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0px;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:var(--wpds-dimension-size-sm,24px)}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-brand-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:var(--wpds-dimension-size-md,32px)}._914b42f315c0e580__is-loading:not(.abbb272e2ce49bd6__is-unstyled){color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}@media (forced-colors:active){color:ButtonFace}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}}');
  }
  var style_default22 = { "button": "_97b0fc33c028be1a__button", "is-unstyled": "abbb272e2ce49bd6__is-unstyled", "is-loading": "_914b42f315c0e580__is-loading", "is-small": "_908205475f9f2a92__is-small", "icon": "_9f6fc6553aeb36fe__icon", "is-brand": "dd460c965226cc77__is-brand", "is-outline": "_62d5a778b7b258ee__is-outline", "is-minimal": "ad0619a3217c6a5b__is-minimal", "is-neutral": "e722a8f96726aa99__is-neutral", "is-solid": "b50b3358c5fb4d0b__is-solid", "is-compact": "cf59cf1b69629838__is-compact", "loading-animation": "_5a1d53da6f830c8d__loading-animation" };
  var ButtonIcon = (0, import_element50.forwardRef)(
    function ButtonIcon2({ className, icon, ...props }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime180.jsx)(
        Icon,
        {
          ref,
          icon,
          className: clsx_default(style_default22.icon, className),
          size: 24,
          ...props
        }
      );
    }
  );

  // packages/ui/build-module/button/index.mjs
  ButtonIcon.displayName = "Button.Icon";
  var Button5 = Object.assign(Button4, {
    /**
     * An icon component specifically designed to work well when rendered inside
     * a `Button` component.
     */
    Icon: ButtonIcon
  });

  // node_modules/@date-fns/tz/tzName/index.js
  function tzName(timeZone, date, format7 = "long") {
    return new Intl.DateTimeFormat("en-US", {
      // Enforces engine to render the time. Without the option JavaScriptCore omits it.
      hour: "numeric",
      timeZone,
      timeZoneName: format7
    }).format(date).split(/\s/g).slice(2).join(" ");
  }

  // node_modules/@date-fns/tz/tzOffset/index.js
  var offsetFormatCache = {};
  var offsetCache = {};
  function tzOffset(timeZone, date) {
    try {
      const format7 = offsetFormatCache[timeZone] ||= new Intl.DateTimeFormat("en-US", {
        timeZone,
        timeZoneName: "longOffset"
      }).format;
      const offsetStr = format7(date).split("GMT")[1];
      if (offsetStr in offsetCache) return offsetCache[offsetStr];
      return calcOffset(offsetStr, offsetStr.split(":"));
    } catch {
      if (timeZone in offsetCache) return offsetCache[timeZone];
      const captures = timeZone?.match(offsetRe);
      if (captures) return calcOffset(timeZone, captures.slice(1));
      return NaN;
    }
  }
  var offsetRe = /([+-]\d\d):?(\d\d)?/;
  function calcOffset(cacheStr, values) {
    const hours = +(values[0] || 0);
    const minutes = +(values[1] || 0);
    const seconds = +(values[2] || 0) / 60;
    return offsetCache[cacheStr] = hours * 60 + minutes > 0 ? hours * 60 + minutes + seconds : hours * 60 - minutes - seconds;
  }

  // node_modules/@date-fns/tz/date/mini.js
  var TZDateMini = class _TZDateMini extends Date {
    //#region static
    constructor(...args) {
      super();
      if (args.length > 1 && typeof args[args.length - 1] === "string") {
        this.timeZone = args.pop();
      }
      this.internal = /* @__PURE__ */ new Date();
      if (isNaN(tzOffset(this.timeZone, this))) {
        this.setTime(NaN);
      } else {
        if (!args.length) {
          this.setTime(Date.now());
        } else if (typeof args[0] === "number" && (args.length === 1 || args.length === 2 && typeof args[1] !== "number")) {
          this.setTime(args[0]);
        } else if (typeof args[0] === "string") {
          this.setTime(+new Date(args[0]));
        } else if (args[0] instanceof Date) {
          this.setTime(+args[0]);
        } else {
          this.setTime(+new Date(...args));
          adjustToSystemTZ(this, args);
        }
      }
    }
    static tz(tz, ...args) {
      return args.length ? new _TZDateMini(...args, tz) : new _TZDateMini(Date.now(), tz);
    }
    //#endregion
    //#region time zone
    withTimeZone(timeZone) {
      return new _TZDateMini(+this, timeZone);
    }
    getTimezoneOffset() {
      const offset4 = -tzOffset(this.timeZone, this);
      return offset4 > 0 ? Math.floor(offset4) : Math.ceil(offset4);
    }
    //#endregion
    //#region time
    setTime(_time) {
      Date.prototype.setTime.apply(this, arguments);
      syncToInternal(this);
      return +this;
    }
    //#endregion
    //#region date-fns integration
    [/* @__PURE__ */ Symbol.for("constructDateFrom")](date) {
      return new _TZDateMini(+new Date(date), this.timeZone);
    }
    //#endregion
  };
  var re = /^(get|set)(?!UTC)/;
  Object.getOwnPropertyNames(Date.prototype).forEach((method) => {
    if (!re.test(method)) return;
    const utcMethod = method.replace(re, "$1UTC");
    if (!TZDateMini.prototype[utcMethod]) return;
    if (method.startsWith("get")) {
      TZDateMini.prototype[method] = function() {
        return this.internal[utcMethod]();
      };
    } else {
      TZDateMini.prototype[method] = function() {
        Date.prototype[utcMethod].apply(this.internal, arguments);
        syncFromInternal(this);
        return +this;
      };
      TZDateMini.prototype[utcMethod] = function() {
        Date.prototype[utcMethod].apply(this, arguments);
        syncToInternal(this);
        return +this;
      };
    }
  });
  function syncToInternal(date) {
    date.internal.setTime(+date);
    date.internal.setUTCSeconds(date.internal.getUTCSeconds() - // Round after converting minutes to seconds to avoid fractional offset
    // precision errors from historical offsets.
    Math.round(-tzOffset(date.timeZone, date) * 60));
  }
  function syncFromInternal(date) {
    Date.prototype.setFullYear.call(date, date.internal.getUTCFullYear(), date.internal.getUTCMonth(), date.internal.getUTCDate());
    Date.prototype.setHours.call(date, date.internal.getUTCHours(), date.internal.getUTCMinutes(), date.internal.getUTCSeconds(), date.internal.getUTCMilliseconds());
    adjustToSystemTZ(date);
  }
  function adjustToSystemTZ(date, constructorArgs) {
    const expectedInternalTime = Array.isArray(constructorArgs) ? constructorArgsToInternalTime(constructorArgs) : +date.internal;
    const offsetWithSeconds = tzOffset(date.timeZone, date);
    const offset4 = offsetWithSeconds > 0 ? Math.floor(offsetWithSeconds) : Math.ceil(offsetWithSeconds);
    const prevHour = /* @__PURE__ */ new Date(+date);
    prevHour.setUTCHours(prevHour.getUTCHours() - 1);
    const systemOffset = -(/* @__PURE__ */ new Date(+date)).getTimezoneOffset();
    const prevHourSystemOffset = -(/* @__PURE__ */ new Date(+prevHour)).getTimezoneOffset();
    const systemDSTChange = systemOffset - prevHourSystemOffset;
    let systemOffsetForDiff = systemOffset;
    if (systemDSTChange && systemOffset !== offset4) {
      const systemHour = Date.prototype.getHours.apply(date);
      const expectedHour = Array.isArray(constructorArgs) ? constructorArgs[3] || 0 : date.internal.getUTCHours();
      if (systemHour !== expectedHour) {
        const testDate = /* @__PURE__ */ new Date(+date);
        const testOffsetDiff = systemOffset - offset4;
        if (testOffsetDiff) testDate.setUTCMinutes(testDate.getUTCMinutes() + testOffsetDiff);
        const testOffsetWithSeconds = tzOffset(date.timeZone, testDate);
        const testOffset = testOffsetWithSeconds > 0 ? Math.floor(testOffsetWithSeconds) : Math.ceil(testOffsetWithSeconds);
        if (testOffset === offset4) systemOffsetForDiff = prevHourSystemOffset;
      }
    }
    const offsetDiff = systemOffsetForDiff - offset4;
    if (offsetDiff)
      Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetDiff);
    const systemDate = /* @__PURE__ */ new Date(+date);
    systemDate.setUTCSeconds(0);
    const systemSecondsOffset = systemOffset > 0 ? systemDate.getSeconds() : (systemDate.getSeconds() - 60) % 60;
    const secondsOffset = Math.round(-(tzOffset(date.timeZone, date) * 60)) % 60;
    if (secondsOffset || systemSecondsOffset)
      Date.prototype.setUTCSeconds.call(date, Date.prototype.getUTCSeconds.call(date) + secondsOffset + systemSecondsOffset);
    const postOffsetWithSeconds = tzOffset(date.timeZone, date);
    const postOffset = postOffsetWithSeconds > 0 ? Math.floor(postOffsetWithSeconds) : Math.ceil(postOffsetWithSeconds);
    const postSystemOffset = -(/* @__PURE__ */ new Date(+date)).getTimezoneOffset();
    const postOffsetDiff = postSystemOffset - postOffset;
    const offsetChanged = postOffset !== offset4;
    const postDiff = postOffsetDiff - offsetDiff;
    const targetDSTShift = postOffset - offset4;
    const postOffsetCandidate = expectedInternalTime - postOffset * 60 * 1e3;
    const normalizedTargetDSTGap = targetDSTShift > 0 && targetInternalTime(date) - expectedInternalTime === targetDSTShift * 60 * 1e3 && targetInternalTime(date, postOffsetCandidate) !== expectedInternalTime;
    if (offsetChanged && postDiff && !normalizedTargetDSTGap) {
      Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + postDiff);
      const newOffsetWithSeconds = tzOffset(date.timeZone, date);
      const newOffset = newOffsetWithSeconds > 0 ? Math.floor(newOffsetWithSeconds) : Math.ceil(newOffsetWithSeconds);
      const offsetChange = postOffset - newOffset;
      if (offsetChange && postDiff < 0) {
        Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetChange);
      }
    }
    syncToInternal(date);
    const expectedTime = constructorArgs ? expectedInternalTime : expectedInternalTime + secondsOffset * 1e3;
    const drift = expectedTime - +date.internal;
    if (drift && Math.abs(drift) < 30 * 60 * 1e3) {
      Date.prototype.setTime.call(date, +date + drift);
      syncToInternal(date);
    }
  }
  function constructorArgsToInternalTime(args) {
    return Date.UTC(args[0], args.length > 1 ? args[1] : 0, args.length > 2 ? args[2] : 1, ...args.slice(3));
  }
  function targetInternalTime(date, time) {
    const internal = new Date(time ?? +date);
    internal.setUTCSeconds(internal.getUTCSeconds() - Math.round(-tzOffset(date.timeZone, internal) * 60));
    return +internal;
  }

  // node_modules/@date-fns/tz/date/index.js
  var TZDate = class _TZDate extends TZDateMini {
    //#region static
    static tz(tz, ...args) {
      return args.length ? new _TZDate(...args, tz) : new _TZDate(Date.now(), tz);
    }
    //#endregion
    //#region representation
    toISOString() {
      const [sign, hours, minutes] = this.tzComponents();
      const tz = `${sign}${hours}:${minutes}`;
      return this.internal.toISOString().slice(0, -1) + tz;
    }
    toString() {
      return `${this.toDateString()} ${this.toTimeString()}`;
    }
    toDateString() {
      const [day, date, month, year] = this.internal.toUTCString().split(" ");
      return `${day?.slice(0, -1)} ${month} ${date} ${year}`;
    }
    toTimeString() {
      const time = this.internal.toUTCString().split(" ")[4];
      const [sign, hours, minutes] = this.tzComponents();
      return `${time} GMT${sign}${hours}${minutes} (${tzName(this.timeZone, this)})`;
    }
    toLocaleString(locales, options) {
      return Date.prototype.toLocaleString.call(this, locales, {
        ...options,
        timeZone: options?.timeZone || this.timeZone
      });
    }
    toLocaleDateString(locales, options) {
      return Date.prototype.toLocaleDateString.call(this, locales, {
        ...options,
        timeZone: options?.timeZone || this.timeZone
      });
    }
    toLocaleTimeString(locales, options) {
      return Date.prototype.toLocaleTimeString.call(this, locales, {
        ...options,
        timeZone: options?.timeZone || this.timeZone
      });
    }
    //#endregion
    //#region private
    tzComponents() {
      const offset4 = this.getTimezoneOffset();
      const sign = offset4 > 0 ? "-" : "+";
      const hours = String(Math.floor(Math.abs(offset4) / 60)).padStart(2, "0");
      const minutes = String(Math.abs(offset4) % 60).padStart(2, "0");
      return [sign, hours, minutes];
    }
    //#endregion
    withTimeZone(timeZone) {
      return new _TZDate(+this, timeZone);
    }
    //#region date-fns integration
    [/* @__PURE__ */ Symbol.for("constructDateFrom")](date) {
      return new _TZDate(+new Date(date), this.timeZone);
    }
    //#endregion
  };

  // node_modules/date-fns/constants.js
  var daysInYear = 365.2425;
  var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1e3;
  var minTime = -maxTime;
  var millisecondsInWeek = 6048e5;
  var millisecondsInDay = 864e5;
  var millisecondsInMinute = 6e4;
  var millisecondsInHour = 36e5;
  var millisecondsInSecond = 1e3;
  var secondsInHour = 3600;
  var secondsInDay = secondsInHour * 24;
  var secondsInWeek = secondsInDay * 7;
  var secondsInYear = secondsInDay * daysInYear;
  var secondsInMonth = secondsInYear / 12;
  var secondsInQuarter = secondsInMonth * 3;
  var constructFromSymbol = /* @__PURE__ */ Symbol.for("constructDateFrom");

  // node_modules/date-fns/constructFrom.js
  function constructFrom(date, value) {
    if (typeof date === "function") return date(value);
    if (date && typeof date === "object" && constructFromSymbol in date)
      return date[constructFromSymbol](value);
    if (date instanceof Date) return new date.constructor(value);
    return new Date(value);
  }

  // node_modules/date-fns/toDate.js
  function toDate(argument, context) {
    return constructFrom(context || argument, argument);
  }

  // node_modules/date-fns/addDays.js
  function addDays(date, amount, options) {
    const _date = toDate(date, options?.in);
    if (isNaN(amount)) return constructFrom(options?.in || date, NaN);
    if (!amount) return _date;
    _date.setDate(_date.getDate() + amount);
    return _date;
  }

  // node_modules/date-fns/addMonths.js
  function addMonths(date, amount, options) {
    const _date = toDate(date, options?.in);
    if (isNaN(amount)) return constructFrom(options?.in || date, NaN);
    if (!amount) {
      return _date;
    }
    const dayOfMonth = _date.getDate();
    const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());
    endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);
    const daysInMonth = endOfDesiredMonth.getDate();
    if (dayOfMonth >= daysInMonth) {
      return endOfDesiredMonth;
    } else {
      _date.setFullYear(
        endOfDesiredMonth.getFullYear(),
        endOfDesiredMonth.getMonth(),
        dayOfMonth
      );
      return _date;
    }
  }

  // node_modules/date-fns/_lib/defaultOptions.js
  var defaultOptions = {};
  function getDefaultOptions() {
    return defaultOptions;
  }

  // node_modules/date-fns/startOfWeek.js
  function startOfWeek(date, options) {
    const defaultOptions2 = getDefaultOptions();
    const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0;
    const _date = toDate(date, options?.in);
    const day = _date.getDay();
    const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;
    _date.setDate(_date.getDate() - diff);
    _date.setHours(0, 0, 0, 0);
    return _date;
  }

  // node_modules/date-fns/startOfISOWeek.js
  function startOfISOWeek(date, options) {
    return startOfWeek(date, { ...options, weekStartsOn: 1 });
  }

  // node_modules/date-fns/getISOWeekYear.js
  function getISOWeekYear(date, options) {
    const _date = toDate(date, options?.in);
    const year = _date.getFullYear();
    const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);
    fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);
    fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);
    const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);
    const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);
    fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);
    fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);
    const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);
    if (_date.getTime() >= startOfNextYear.getTime()) {
      return year + 1;
    } else if (_date.getTime() >= startOfThisYear.getTime()) {
      return year;
    } else {
      return year - 1;
    }
  }

  // node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js
  function getTimezoneOffsetInMilliseconds(date) {
    const _date = toDate(date);
    const utcDate = new Date(
      Date.UTC(
        _date.getFullYear(),
        _date.getMonth(),
        _date.getDate(),
        _date.getHours(),
        _date.getMinutes(),
        _date.getSeconds(),
        _date.getMilliseconds()
      )
    );
    utcDate.setUTCFullYear(_date.getFullYear());
    return +date - +utcDate;
  }

  // node_modules/date-fns/_lib/normalizeDates.js
  function normalizeDates(context, ...dates) {
    const normalize2 = constructFrom.bind(
      null,
      context || dates.find((date) => typeof date === "object")
    );
    return dates.map(normalize2);
  }

  // node_modules/date-fns/startOfDay.js
  function startOfDay(date, options) {
    const _date = toDate(date, options?.in);
    _date.setHours(0, 0, 0, 0);
    return _date;
  }

  // node_modules/date-fns/differenceInCalendarDays.js
  function differenceInCalendarDays(laterDate, earlierDate, options) {
    const [laterDate_, earlierDate_] = normalizeDates(
      options?.in,
      laterDate,
      earlierDate
    );
    const laterStartOfDay = startOfDay(laterDate_);
    const earlierStartOfDay = startOfDay(earlierDate_);
    const laterTimestamp = +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);
    const earlierTimestamp = +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);
    return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);
  }

  // node_modules/date-fns/startOfISOWeekYear.js
  function startOfISOWeekYear(date, options) {
    const year = getISOWeekYear(date, options);
    const fourthOfJanuary = constructFrom(options?.in || date, 0);
    fourthOfJanuary.setFullYear(year, 0, 4);
    fourthOfJanuary.setHours(0, 0, 0, 0);
    return startOfISOWeek(fourthOfJanuary);
  }

  // node_modules/date-fns/addWeeks.js
  function addWeeks(date, amount, options) {
    return addDays(date, amount * 7, options);
  }

  // node_modules/date-fns/addYears.js
  function addYears(date, amount, options) {
    return addMonths(date, amount * 12, options);
  }

  // node_modules/date-fns/areIntervalsOverlapping.js
  function areIntervalsOverlapping(intervalLeft, intervalRight, options) {
    const [leftStartTime, leftEndTime] = [
      +toDate(intervalLeft.start, options?.in),
      +toDate(intervalLeft.end, options?.in)
    ].sort((a2, b2) => a2 - b2);
    const [rightStartTime, rightEndTime] = [
      +toDate(intervalRight.start, options?.in),
      +toDate(intervalRight.end, options?.in)
    ].sort((a2, b2) => a2 - b2);
    if (options?.inclusive)
      return leftStartTime <= rightEndTime && rightStartTime <= leftEndTime;
    return leftStartTime < rightEndTime && rightStartTime < leftEndTime;
  }

  // node_modules/date-fns/max.js
  function max2(dates, options) {
    let result;
    let context = options?.in;
    dates.forEach((date) => {
      if (!context && typeof date === "object")
        context = constructFrom.bind(null, date);
      const date_ = toDate(date, context);
      if (!result || result < date_ || isNaN(+date_)) result = date_;
    });
    return constructFrom(context, result || NaN);
  }

  // node_modules/date-fns/min.js
  function min2(dates, options) {
    let result;
    let context = options?.in;
    dates.forEach((date) => {
      if (!context && typeof date === "object")
        context = constructFrom.bind(null, date);
      const date_ = toDate(date, context);
      if (!result || result > date_ || isNaN(+date_)) result = date_;
    });
    return constructFrom(context, result || NaN);
  }

  // node_modules/date-fns/isSameDay.js
  function isSameDay(laterDate, earlierDate, options) {
    const [dateLeft_, dateRight_] = normalizeDates(
      options?.in,
      laterDate,
      earlierDate
    );
    return +startOfDay(dateLeft_) === +startOfDay(dateRight_);
  }

  // node_modules/date-fns/isDate.js
  function isDate(value) {
    return value instanceof Date || typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]";
  }

  // node_modules/date-fns/isValid.js
  function isValid(date) {
    return !(!isDate(date) && typeof date !== "number" || isNaN(+toDate(date)));
  }

  // node_modules/date-fns/differenceInCalendarMonths.js
  function differenceInCalendarMonths(laterDate, earlierDate, options) {
    const [laterDate_, earlierDate_] = normalizeDates(
      options?.in,
      laterDate,
      earlierDate
    );
    const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();
    const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();
    return yearsDiff * 12 + monthsDiff;
  }

  // node_modules/date-fns/endOfMonth.js
  function endOfMonth(date, options) {
    const _date = toDate(date, options?.in);
    const month = _date.getMonth();
    _date.setFullYear(_date.getFullYear(), month + 1, 0);
    _date.setHours(23, 59, 59, 999);
    return _date;
  }

  // node_modules/date-fns/_lib/normalizeInterval.js
  function normalizeInterval(context, interval) {
    const [start2, end] = normalizeDates(context, interval.start, interval.end);
    return { start: start2, end };
  }

  // node_modules/date-fns/eachMonthOfInterval.js
  function eachMonthOfInterval(interval, options) {
    const { start: start2, end } = normalizeInterval(options?.in, interval);
    let reversed = +start2 > +end;
    const endTime = reversed ? +start2 : +end;
    const date = reversed ? end : start2;
    date.setHours(0, 0, 0, 0);
    date.setDate(1);
    let step = options?.step ?? 1;
    if (!step) return [];
    if (step < 0) {
      step = -step;
      reversed = !reversed;
    }
    const dates = [];
    while (+date <= endTime) {
      dates.push(constructFrom(start2, date));
      date.setMonth(date.getMonth() + step);
    }
    return reversed ? dates.reverse() : dates;
  }

  // node_modules/date-fns/startOfMonth.js
  function startOfMonth(date, options) {
    const _date = toDate(date, options?.in);
    _date.setDate(1);
    _date.setHours(0, 0, 0, 0);
    return _date;
  }

  // node_modules/date-fns/endOfYear.js
  function endOfYear(date, options) {
    const _date = toDate(date, options?.in);
    const year = _date.getFullYear();
    _date.setFullYear(year + 1, 0, 0);
    _date.setHours(23, 59, 59, 999);
    return _date;
  }

  // node_modules/date-fns/startOfYear.js
  function startOfYear(date, options) {
    const date_ = toDate(date, options?.in);
    date_.setFullYear(date_.getFullYear(), 0, 1);
    date_.setHours(0, 0, 0, 0);
    return date_;
  }

  // node_modules/date-fns/eachYearOfInterval.js
  function eachYearOfInterval(interval, options) {
    const { start: start2, end } = normalizeInterval(options?.in, interval);
    let reversed = +start2 > +end;
    const endTime = reversed ? +start2 : +end;
    const date = reversed ? end : start2;
    date.setHours(0, 0, 0, 0);
    date.setMonth(0, 1);
    let step = options?.step ?? 1;
    if (!step) return [];
    if (step < 0) {
      step = -step;
      reversed = !reversed;
    }
    const dates = [];
    while (+date <= endTime) {
      dates.push(constructFrom(start2, date));
      date.setFullYear(date.getFullYear() + step);
    }
    return reversed ? dates.reverse() : dates;
  }

  // node_modules/date-fns/endOfWeek.js
  function endOfWeek(date, options) {
    const defaultOptions2 = getDefaultOptions();
    const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0;
    const _date = toDate(date, options?.in);
    const day = _date.getDay();
    const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);
    _date.setDate(_date.getDate() + diff);
    _date.setHours(23, 59, 59, 999);
    return _date;
  }

  // node_modules/date-fns/endOfISOWeek.js
  function endOfISOWeek(date, options) {
    return endOfWeek(date, { ...options, weekStartsOn: 1 });
  }

  // node_modules/date-fns/locale/en-US/_lib/formatDistance.js
  var formatDistanceLocale = {
    lessThanXSeconds: {
      one: "less than a second",
      other: "less than {{count}} seconds"
    },
    xSeconds: {
      one: "1 second",
      other: "{{count}} seconds"
    },
    halfAMinute: "half a minute",
    lessThanXMinutes: {
      one: "less than a minute",
      other: "less than {{count}} minutes"
    },
    xMinutes: {
      one: "1 minute",
      other: "{{count}} minutes"
    },
    aboutXHours: {
      one: "about 1 hour",
      other: "about {{count}} hours"
    },
    xHours: {
      one: "1 hour",
      other: "{{count}} hours"
    },
    xDays: {
      one: "1 day",
      other: "{{count}} days"
    },
    aboutXWeeks: {
      one: "about 1 week",
      other: "about {{count}} weeks"
    },
    xWeeks: {
      one: "1 week",
      other: "{{count}} weeks"
    },
    aboutXMonths: {
      one: "about 1 month",
      other: "about {{count}} months"
    },
    xMonths: {
      one: "1 month",
      other: "{{count}} months"
    },
    aboutXYears: {
      one: "about 1 year",
      other: "about {{count}} years"
    },
    xYears: {
      one: "1 year",
      other: "{{count}} years"
    },
    overXYears: {
      one: "over 1 year",
      other: "over {{count}} years"
    },
    almostXYears: {
      one: "almost 1 year",
      other: "almost {{count}} years"
    }
  };
  var formatDistance = (token, count, options) => {
    let result;
    const tokenValue = formatDistanceLocale[token];
    if (typeof tokenValue === "string") {
      result = tokenValue;
    } else if (count === 1) {
      result = tokenValue.one;
    } else {
      result = tokenValue.other.replace("{{count}}", count.toString());
    }
    if (options?.addSuffix) {
      if (options.comparison && options.comparison > 0) {
        return "in " + result;
      } else {
        return result + " ago";
      }
    }
    return result;
  };

  // node_modules/date-fns/locale/_lib/buildFormatLongFn.js
  function buildFormatLongFn(args) {
    return (options = {}) => {
      const width = options.width ? String(options.width) : args.defaultWidth;
      const format7 = args.formats[width] || args.formats[args.defaultWidth];
      return format7;
    };
  }

  // node_modules/date-fns/locale/en-US/_lib/formatLong.js
  var dateFormats = {
    full: "EEEE, MMMM do, y",
    long: "MMMM do, y",
    medium: "MMM d, y",
    short: "MM/dd/yyyy"
  };
  var timeFormats = {
    full: "h:mm:ss a zzzz",
    long: "h:mm:ss a z",
    medium: "h:mm:ss a",
    short: "h:mm a"
  };
  var dateTimeFormats = {
    full: "{{date}} 'at' {{time}}",
    long: "{{date}} 'at' {{time}}",
    medium: "{{date}}, {{time}}",
    short: "{{date}}, {{time}}"
  };
  var formatLong = {
    date: buildFormatLongFn({
      formats: dateFormats,
      defaultWidth: "full"
    }),
    time: buildFormatLongFn({
      formats: timeFormats,
      defaultWidth: "full"
    }),
    dateTime: buildFormatLongFn({
      formats: dateTimeFormats,
      defaultWidth: "full"
    })
  };

  // node_modules/date-fns/locale/en-US/_lib/formatRelative.js
  var formatRelativeLocale = {
    lastWeek: "'last' eeee 'at' p",
    yesterday: "'yesterday at' p",
    today: "'today at' p",
    tomorrow: "'tomorrow at' p",
    nextWeek: "eeee 'at' p",
    other: "P"
  };
  var formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale[token];

  // node_modules/date-fns/locale/_lib/buildLocalizeFn.js
  function buildLocalizeFn(args) {
    return (value, options) => {
      const context = options?.context ? String(options.context) : "standalone";
      let valuesArray;
      if (context === "formatting" && args.formattingValues) {
        const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;
        const width = options?.width ? String(options.width) : defaultWidth;
        valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];
      } else {
        const defaultWidth = args.defaultWidth;
        const width = options?.width ? String(options.width) : args.defaultWidth;
        valuesArray = args.values[width] || args.values[defaultWidth];
      }
      const index3 = args.argumentCallback ? args.argumentCallback(value) : value;
      return valuesArray[index3];
    };
  }

  // node_modules/date-fns/locale/en-US/_lib/localize.js
  var eraValues = {
    narrow: ["B", "A"],
    abbreviated: ["BC", "AD"],
    wide: ["Before Christ", "Anno Domini"]
  };
  var quarterValues = {
    narrow: ["1", "2", "3", "4"],
    abbreviated: ["Q1", "Q2", "Q3", "Q4"],
    wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"]
  };
  var monthValues = {
    narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"],
    abbreviated: [
      "Jan",
      "Feb",
      "Mar",
      "Apr",
      "May",
      "Jun",
      "Jul",
      "Aug",
      "Sep",
      "Oct",
      "Nov",
      "Dec"
    ],
    wide: [
      "January",
      "February",
      "March",
      "April",
      "May",
      "June",
      "July",
      "August",
      "September",
      "October",
      "November",
      "December"
    ]
  };
  var dayValues = {
    narrow: ["S", "M", "T", "W", "T", "F", "S"],
    short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
    abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
    wide: [
      "Sunday",
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday",
      "Saturday"
    ]
  };
  var dayPeriodValues = {
    narrow: {
      am: "a",
      pm: "p",
      midnight: "mi",
      noon: "n",
      morning: "morning",
      afternoon: "afternoon",
      evening: "evening",
      night: "night"
    },
    abbreviated: {
      am: "AM",
      pm: "PM",
      midnight: "midnight",
      noon: "noon",
      morning: "morning",
      afternoon: "afternoon",
      evening: "evening",
      night: "night"
    },
    wide: {
      am: "a.m.",
      pm: "p.m.",
      midnight: "midnight",
      noon: "noon",
      morning: "morning",
      afternoon: "afternoon",
      evening: "evening",
      night: "night"
    }
  };
  var formattingDayPeriodValues = {
    narrow: {
      am: "a",
      pm: "p",
      midnight: "mi",
      noon: "n",
      morning: "in the morning",
      afternoon: "in the afternoon",
      evening: "in the evening",
      night: "at night"
    },
    abbreviated: {
      am: "AM",
      pm: "PM",
      midnight: "midnight",
      noon: "noon",
      morning: "in the morning",
      afternoon: "in the afternoon",
      evening: "in the evening",
      night: "at night"
    },
    wide: {
      am: "a.m.",
      pm: "p.m.",
      midnight: "midnight",
      noon: "noon",
      morning: "in the morning",
      afternoon: "in the afternoon",
      evening: "in the evening",
      night: "at night"
    }
  };
  var ordinalNumber = (dirtyNumber, _options) => {
    const number = Number(dirtyNumber);
    const rem100 = number % 100;
    if (rem100 > 20 || rem100 < 10) {
      switch (rem100 % 10) {
        case 1:
          return number + "st";
        case 2:
          return number + "nd";
        case 3:
          return number + "rd";
      }
    }
    return number + "th";
  };
  var localize = {
    ordinalNumber,
    era: buildLocalizeFn({
      values: eraValues,
      defaultWidth: "wide"
    }),
    quarter: buildLocalizeFn({
      values: quarterValues,
      defaultWidth: "wide",
      argumentCallback: (quarter) => quarter - 1
    }),
    month: buildLocalizeFn({
      values: monthValues,
      defaultWidth: "wide"
    }),
    day: buildLocalizeFn({
      values: dayValues,
      defaultWidth: "wide"
    }),
    dayPeriod: buildLocalizeFn({
      values: dayPeriodValues,
      defaultWidth: "wide",
      formattingValues: formattingDayPeriodValues,
      defaultFormattingWidth: "wide"
    })
  };

  // node_modules/date-fns/locale/_lib/buildMatchFn.js
  function buildMatchFn(args) {
    return (string, options = {}) => {
      const width = options.width;
      const matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];
      const matchResult = string.match(matchPattern);
      if (!matchResult) {
        return null;
      }
      const matchedString = matchResult[0];
      const parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];
      const key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString)) : (
        // [TODO] -- I challenge you to fix the type
        findKey(parsePatterns, (pattern) => pattern.test(matchedString))
      );
      let value;
      value = args.valueCallback ? args.valueCallback(key) : key;
      value = options.valueCallback ? (
        // [TODO] -- I challenge you to fix the type
        options.valueCallback(value)
      ) : value;
      const rest = string.slice(matchedString.length);
      return { value, rest };
    };
  }
  function findKey(object, predicate) {
    for (const key in object) {
      if (Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key])) {
        return key;
      }
    }
    return void 0;
  }
  function findIndex(array, predicate) {
    for (let key = 0; key < array.length; key++) {
      if (predicate(array[key])) {
        return key;
      }
    }
    return void 0;
  }

  // node_modules/date-fns/locale/_lib/buildMatchPatternFn.js
  function buildMatchPatternFn(args) {
    return (string, options = {}) => {
      const matchResult = string.match(args.matchPattern);
      if (!matchResult) return null;
      const matchedString = matchResult[0];
      const parseResult = string.match(args.parsePattern);
      if (!parseResult) return null;
      let value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];
      value = options.valueCallback ? options.valueCallback(value) : value;
      const rest = string.slice(matchedString.length);
      return { value, rest };
    };
  }

  // node_modules/date-fns/locale/en-US/_lib/match.js
  var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i;
  var parseOrdinalNumberPattern = /\d+/i;
  var matchEraPatterns = {
    narrow: /^(b|a)/i,
    abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,
    wide: /^(before christ|before common era|anno domini|common era)/i
  };
  var parseEraPatterns = {
    any: [/^b/i, /^(a|c)/i]
  };
  var matchQuarterPatterns = {
    narrow: /^[1234]/i,
    abbreviated: /^q[1234]/i,
    wide: /^[1234](th|st|nd|rd)? quarter/i
  };
  var parseQuarterPatterns = {
    any: [/1/i, /2/i, /3/i, /4/i]
  };
  var matchMonthPatterns = {
    narrow: /^[jfmasond]/i,
    abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,
    wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i
  };
  var parseMonthPatterns = {
    narrow: [
      /^j/i,
      /^f/i,
      /^m/i,
      /^a/i,
      /^m/i,
      /^j/i,
      /^j/i,
      /^a/i,
      /^s/i,
      /^o/i,
      /^n/i,
      /^d/i
    ],
    any: [
      /^ja/i,
      /^f/i,
      /^mar/i,
      /^ap/i,
      /^may/i,
      /^jun/i,
      /^jul/i,
      /^au/i,
      /^s/i,
      /^o/i,
      /^n/i,
      /^d/i
    ]
  };
  var matchDayPatterns = {
    narrow: /^[smtwf]/i,
    short: /^(su|mo|tu|we|th|fr|sa)/i,
    abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,
    wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i
  };
  var parseDayPatterns = {
    narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
    any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
  };
  var matchDayPeriodPatterns = {
    narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,
    any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i
  };
  var parseDayPeriodPatterns = {
    any: {
      am: /^a/i,
      pm: /^p/i,
      midnight: /^mi/i,
      noon: /^no/i,
      morning: /morning/i,
      afternoon: /afternoon/i,
      evening: /evening/i,
      night: /night/i
    }
  };
  var match = {
    ordinalNumber: buildMatchPatternFn({
      matchPattern: matchOrdinalNumberPattern,
      parsePattern: parseOrdinalNumberPattern,
      valueCallback: (value) => parseInt(value, 10)
    }),
    era: buildMatchFn({
      matchPatterns: matchEraPatterns,
      defaultMatchWidth: "wide",
      parsePatterns: parseEraPatterns,
      defaultParseWidth: "any"
    }),
    quarter: buildMatchFn({
      matchPatterns: matchQuarterPatterns,
      defaultMatchWidth: "wide",
      parsePatterns: parseQuarterPatterns,
      defaultParseWidth: "any",
      valueCallback: (index3) => index3 + 1
    }),
    month: buildMatchFn({
      matchPatterns: matchMonthPatterns,
      defaultMatchWidth: "wide",
      parsePatterns: parseMonthPatterns,
      defaultParseWidth: "any"
    }),
    day: buildMatchFn({
      matchPatterns: matchDayPatterns,
      defaultMatchWidth: "wide",
      parsePatterns: parseDayPatterns,
      defaultParseWidth: "any"
    }),
    dayPeriod: buildMatchFn({
      matchPatterns: matchDayPeriodPatterns,
      defaultMatchWidth: "any",
      parsePatterns: parseDayPeriodPatterns,
      defaultParseWidth: "any"
    })
  };

  // node_modules/date-fns/locale/en-US.js
  var enUS = {
    code: "en-US",
    formatDistance,
    formatLong,
    formatRelative,
    localize,
    match,
    options: {
      weekStartsOn: 0,
      firstWeekContainsDate: 1
    }
  };

  // node_modules/date-fns/getDayOfYear.js
  function getDayOfYear(date, options) {
    const _date = toDate(date, options?.in);
    const diff = differenceInCalendarDays(_date, startOfYear(_date));
    const dayOfYear = diff + 1;
    return dayOfYear;
  }

  // node_modules/date-fns/getISOWeek.js
  function getISOWeek(date, options) {
    const _date = toDate(date, options?.in);
    const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);
    return Math.round(diff / millisecondsInWeek) + 1;
  }

  // node_modules/date-fns/getWeekYear.js
  function getWeekYear(date, options) {
    const _date = toDate(date, options?.in);
    const year = _date.getFullYear();
    const defaultOptions2 = getDefaultOptions();
    const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1;
    const firstWeekOfNextYear = constructFrom(options?.in || date, 0);
    firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);
    firstWeekOfNextYear.setHours(0, 0, 0, 0);
    const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);
    const firstWeekOfThisYear = constructFrom(options?.in || date, 0);
    firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);
    firstWeekOfThisYear.setHours(0, 0, 0, 0);
    const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);
    if (+_date >= +startOfNextYear) {
      return year + 1;
    } else if (+_date >= +startOfThisYear) {
      return year;
    } else {
      return year - 1;
    }
  }

  // node_modules/date-fns/startOfWeekYear.js
  function startOfWeekYear(date, options) {
    const defaultOptions2 = getDefaultOptions();
    const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1;
    const year = getWeekYear(date, options);
    const firstWeek = constructFrom(options?.in || date, 0);
    firstWeek.setFullYear(year, 0, firstWeekContainsDate);
    firstWeek.setHours(0, 0, 0, 0);
    const _date = startOfWeek(firstWeek, options);
    return _date;
  }

  // node_modules/date-fns/getWeek.js
  function getWeek(date, options) {
    const _date = toDate(date, options?.in);
    const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);
    return Math.round(diff / millisecondsInWeek) + 1;
  }

  // node_modules/date-fns/_lib/addLeadingZeros.js
  function addLeadingZeros(number, targetLength) {
    const sign = number < 0 ? "-" : "";
    const output = Math.abs(number).toString().padStart(targetLength, "0");
    return sign + output;
  }

  // node_modules/date-fns/_lib/format/lightFormatters.js
  var lightFormatters = {
    // Year
    y(date, token) {
      const signedYear = date.getFullYear();
      const year = signedYear > 0 ? signedYear : 1 - signedYear;
      return addLeadingZeros(token === "yy" ? year % 100 : year, token.length);
    },
    // Month
    M(date, token) {
      const month = date.getMonth();
      return token === "M" ? String(month + 1) : addLeadingZeros(month + 1, 2);
    },
    // Day of the month
    d(date, token) {
      return addLeadingZeros(date.getDate(), token.length);
    },
    // AM or PM
    a(date, token) {
      const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? "pm" : "am";
      switch (token) {
        case "a":
        case "aa":
          return dayPeriodEnumValue.toUpperCase();
        case "aaa":
          return dayPeriodEnumValue;
        case "aaaaa":
          return dayPeriodEnumValue[0];
        case "aaaa":
        default:
          return dayPeriodEnumValue === "am" ? "a.m." : "p.m.";
      }
    },
    // Hour [1-12]
    h(date, token) {
      return addLeadingZeros(date.getHours() % 12 || 12, token.length);
    },
    // Hour [0-23]
    H(date, token) {
      return addLeadingZeros(date.getHours(), token.length);
    },
    // Minute
    m(date, token) {
      return addLeadingZeros(date.getMinutes(), token.length);
    },
    // Second
    s(date, token) {
      return addLeadingZeros(date.getSeconds(), token.length);
    },
    // Fraction of second
    S(date, token) {
      const numberOfDigits = token.length;
      const milliseconds = date.getMilliseconds();
      const fractionalSeconds = Math.trunc(
        milliseconds * Math.pow(10, numberOfDigits - 3)
      );
      return addLeadingZeros(fractionalSeconds, token.length);
    }
  };

  // node_modules/date-fns/_lib/format/formatters.js
  var dayPeriodEnum = {
    am: "am",
    pm: "pm",
    midnight: "midnight",
    noon: "noon",
    morning: "morning",
    afternoon: "afternoon",
    evening: "evening",
    night: "night"
  };
  var formatters = {
    // Era
    G: function(date, token, localize2) {
      const era = date.getFullYear() > 0 ? 1 : 0;
      switch (token) {
        // AD, BC
        case "G":
        case "GG":
        case "GGG":
          return localize2.era(era, { width: "abbreviated" });
        // A, B
        case "GGGGG":
          return localize2.era(era, { width: "narrow" });
        // Anno Domini, Before Christ
        case "GGGG":
        default:
          return localize2.era(era, { width: "wide" });
      }
    },
    // Year
    y: function(date, token, localize2) {
      if (token === "yo") {
        const signedYear = date.getFullYear();
        const year = signedYear > 0 ? signedYear : 1 - signedYear;
        return localize2.ordinalNumber(year, { unit: "year" });
      }
      return lightFormatters.y(date, token);
    },
    // Local week-numbering year
    Y: function(date, token, localize2, options) {
      const signedWeekYear = getWeekYear(date, options);
      const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;
      if (token === "YY") {
        const twoDigitYear = weekYear % 100;
        return addLeadingZeros(twoDigitYear, 2);
      }
      if (token === "Yo") {
        return localize2.ordinalNumber(weekYear, { unit: "year" });
      }
      return addLeadingZeros(weekYear, token.length);
    },
    // ISO week-numbering year
    R: function(date, token) {
      const isoWeekYear = getISOWeekYear(date);
      return addLeadingZeros(isoWeekYear, token.length);
    },
    // Extended year. This is a single number designating the year of this calendar system.
    // The main difference between `y` and `u` localizers are B.C. years:
    // | Year | `y` | `u` |
    // |------|-----|-----|
    // | AC 1 |   1 |   1 |
    // | BC 1 |   1 |   0 |
    // | BC 2 |   2 |  -1 |
    // Also `yy` always returns the last two digits of a year,
    // while `uu` pads single digit years to 2 characters and returns other years unchanged.
    u: function(date, token) {
      const year = date.getFullYear();
      return addLeadingZeros(year, token.length);
    },
    // Quarter
    Q: function(date, token, localize2) {
      const quarter = Math.ceil((date.getMonth() + 1) / 3);
      switch (token) {
        // 1, 2, 3, 4
        case "Q":
          return String(quarter);
        // 01, 02, 03, 04
        case "QQ":
          return addLeadingZeros(quarter, 2);
        // 1st, 2nd, 3rd, 4th
        case "Qo":
          return localize2.ordinalNumber(quarter, { unit: "quarter" });
        // Q1, Q2, Q3, Q4
        case "QQQ":
          return localize2.quarter(quarter, {
            width: "abbreviated",
            context: "formatting"
          });
        // 1, 2, 3, 4 (narrow quarter; could be not numerical)
        case "QQQQQ":
          return localize2.quarter(quarter, {
            width: "narrow",
            context: "formatting"
          });
        // 1st quarter, 2nd quarter, ...
        case "QQQQ":
        default:
          return localize2.quarter(quarter, {
            width: "wide",
            context: "formatting"
          });
      }
    },
    // Stand-alone quarter
    q: function(date, token, localize2) {
      const quarter = Math.ceil((date.getMonth() + 1) / 3);
      switch (token) {
        // 1, 2, 3, 4
        case "q":
          return String(quarter);
        // 01, 02, 03, 04
        case "qq":
          return addLeadingZeros(quarter, 2);
        // 1st, 2nd, 3rd, 4th
        case "qo":
          return localize2.ordinalNumber(quarter, { unit: "quarter" });
        // Q1, Q2, Q3, Q4
        case "qqq":
          return localize2.quarter(quarter, {
            width: "abbreviated",
            context: "standalone"
          });
        // 1, 2, 3, 4 (narrow quarter; could be not numerical)
        case "qqqqq":
          return localize2.quarter(quarter, {
            width: "narrow",
            context: "standalone"
          });
        // 1st quarter, 2nd quarter, ...
        case "qqqq":
        default:
          return localize2.quarter(quarter, {
            width: "wide",
            context: "standalone"
          });
      }
    },
    // Month
    M: function(date, token, localize2) {
      const month = date.getMonth();
      switch (token) {
        case "M":
        case "MM":
          return lightFormatters.M(date, token);
        // 1st, 2nd, ..., 12th
        case "Mo":
          return localize2.ordinalNumber(month + 1, { unit: "month" });
        // Jan, Feb, ..., Dec
        case "MMM":
          return localize2.month(month, {
            width: "abbreviated",
            context: "formatting"
          });
        // J, F, ..., D
        case "MMMMM":
          return localize2.month(month, {
            width: "narrow",
            context: "formatting"
          });
        // January, February, ..., December
        case "MMMM":
        default:
          return localize2.month(month, { width: "wide", context: "formatting" });
      }
    },
    // Stand-alone month
    L: function(date, token, localize2) {
      const month = date.getMonth();
      switch (token) {
        // 1, 2, ..., 12
        case "L":
          return String(month + 1);
        // 01, 02, ..., 12
        case "LL":
          return addLeadingZeros(month + 1, 2);
        // 1st, 2nd, ..., 12th
        case "Lo":
          return localize2.ordinalNumber(month + 1, { unit: "month" });
        // Jan, Feb, ..., Dec
        case "LLL":
          return localize2.month(month, {
            width: "abbreviated",
            context: "standalone"
          });
        // J, F, ..., D
        case "LLLLL":
          return localize2.month(month, {
            width: "narrow",
            context: "standalone"
          });
        // January, February, ..., December
        case "LLLL":
        default:
          return localize2.month(month, { width: "wide", context: "standalone" });
      }
    },
    // Local week of year
    w: function(date, token, localize2, options) {
      const week = getWeek(date, options);
      if (token === "wo") {
        return localize2.ordinalNumber(week, { unit: "week" });
      }
      return addLeadingZeros(week, token.length);
    },
    // ISO week of year
    I: function(date, token, localize2) {
      const isoWeek = getISOWeek(date);
      if (token === "Io") {
        return localize2.ordinalNumber(isoWeek, { unit: "week" });
      }
      return addLeadingZeros(isoWeek, token.length);
    },
    // Day of the month
    d: function(date, token, localize2) {
      if (token === "do") {
        return localize2.ordinalNumber(date.getDate(), { unit: "date" });
      }
      return lightFormatters.d(date, token);
    },
    // Day of year
    D: function(date, token, localize2) {
      const dayOfYear = getDayOfYear(date);
      if (token === "Do") {
        return localize2.ordinalNumber(dayOfYear, { unit: "dayOfYear" });
      }
      return addLeadingZeros(dayOfYear, token.length);
    },
    // Day of week
    E: function(date, token, localize2) {
      const dayOfWeek = date.getDay();
      switch (token) {
        // Tue
        case "E":
        case "EE":
        case "EEE":
          return localize2.day(dayOfWeek, {
            width: "abbreviated",
            context: "formatting"
          });
        // T
        case "EEEEE":
          return localize2.day(dayOfWeek, {
            width: "narrow",
            context: "formatting"
          });
        // Tu
        case "EEEEEE":
          return localize2.day(dayOfWeek, {
            width: "short",
            context: "formatting"
          });
        // Tuesday
        case "EEEE":
        default:
          return localize2.day(dayOfWeek, {
            width: "wide",
            context: "formatting"
          });
      }
    },
    // Local day of week
    e: function(date, token, localize2, options) {
      const dayOfWeek = date.getDay();
      const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;
      switch (token) {
        // Numerical value (Nth day of week with current locale or weekStartsOn)
        case "e":
          return String(localDayOfWeek);
        // Padded numerical value
        case "ee":
          return addLeadingZeros(localDayOfWeek, 2);
        // 1st, 2nd, ..., 7th
        case "eo":
          return localize2.ordinalNumber(localDayOfWeek, { unit: "day" });
        case "eee":
          return localize2.day(dayOfWeek, {
            width: "abbreviated",
            context: "formatting"
          });
        // T
        case "eeeee":
          return localize2.day(dayOfWeek, {
            width: "narrow",
            context: "formatting"
          });
        // Tu
        case "eeeeee":
          return localize2.day(dayOfWeek, {
            width: "short",
            context: "formatting"
          });
        // Tuesday
        case "eeee":
        default:
          return localize2.day(dayOfWeek, {
            width: "wide",
            context: "formatting"
          });
      }
    },
    // Stand-alone local day of week
    c: function(date, token, localize2, options) {
      const dayOfWeek = date.getDay();
      const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;
      switch (token) {
        // Numerical value (same as in `e`)
        case "c":
          return String(localDayOfWeek);
        // Padded numerical value
        case "cc":
          return addLeadingZeros(localDayOfWeek, token.length);
        // 1st, 2nd, ..., 7th
        case "co":
          return localize2.ordinalNumber(localDayOfWeek, { unit: "day" });
        case "ccc":
          return localize2.day(dayOfWeek, {
            width: "abbreviated",
            context: "standalone"
          });
        // T
        case "ccccc":
          return localize2.day(dayOfWeek, {
            width: "narrow",
            context: "standalone"
          });
        // Tu
        case "cccccc":
          return localize2.day(dayOfWeek, {
            width: "short",
            context: "standalone"
          });
        // Tuesday
        case "cccc":
        default:
          return localize2.day(dayOfWeek, {
            width: "wide",
            context: "standalone"
          });
      }
    },
    // ISO day of week
    i: function(date, token, localize2) {
      const dayOfWeek = date.getDay();
      const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;
      switch (token) {
        // 2
        case "i":
          return String(isoDayOfWeek);
        // 02
        case "ii":
          return addLeadingZeros(isoDayOfWeek, token.length);
        // 2nd
        case "io":
          return localize2.ordinalNumber(isoDayOfWeek, { unit: "day" });
        // Tue
        case "iii":
          return localize2.day(dayOfWeek, {
            width: "abbreviated",
            context: "formatting"
          });
        // T
        case "iiiii":
          return localize2.day(dayOfWeek, {
            width: "narrow",
            context: "formatting"
          });
        // Tu
        case "iiiiii":
          return localize2.day(dayOfWeek, {
            width: "short",
            context: "formatting"
          });
        // Tuesday
        case "iiii":
        default:
          return localize2.day(dayOfWeek, {
            width: "wide",
            context: "formatting"
          });
      }
    },
    // AM or PM
    a: function(date, token, localize2) {
      const hours = date.getHours();
      const dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am";
      switch (token) {
        case "a":
        case "aa":
          return localize2.dayPeriod(dayPeriodEnumValue, {
            width: "abbreviated",
            context: "formatting"
          });
        case "aaa":
          return localize2.dayPeriod(dayPeriodEnumValue, {
            width: "abbreviated",
            context: "formatting"
          }).toLowerCase();
        case "aaaaa":
          return localize2.dayPeriod(dayPeriodEnumValue, {
            width: "narrow",
            context: "formatting"
          });
        case "aaaa":
        default:
          return localize2.dayPeriod(dayPeriodEnumValue, {
            width: "wide",
            context: "formatting"
          });
      }
    },
    // AM, PM, midnight, noon
    b: function(date, token, localize2) {
      const hours = date.getHours();
      let dayPeriodEnumValue;
      if (hours === 12) {
        dayPeriodEnumValue = dayPeriodEnum.noon;
      } else if (hours === 0) {
        dayPeriodEnumValue = dayPeriodEnum.midnight;
      } else {
        dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am";
      }
      switch (token) {
        case "b":
        case "bb":
          return localize2.dayPeriod(dayPeriodEnumValue, {
            width: "abbreviated",
            context: "formatting"
          });
        case "bbb":
          return localize2.dayPeriod(dayPeriodEnumValue, {
            width: "abbreviated",
            context: "formatting"
          }).toLowerCase();
        case "bbbbb":
          return localize2.dayPeriod(dayPeriodEnumValue, {
            width: "narrow",
            context: "formatting"
          });
        case "bbbb":
        default:
          return localize2.dayPeriod(dayPeriodEnumValue, {
            width: "wide",
            context: "formatting"
          });
      }
    },
    // in the morning, in the afternoon, in the evening, at night
    B: function(date, token, localize2) {
      const hours = date.getHours();
      let dayPeriodEnumValue;
      if (hours >= 17) {
        dayPeriodEnumValue = dayPeriodEnum.evening;
      } else if (hours >= 12) {
        dayPeriodEnumValue = dayPeriodEnum.afternoon;
      } else if (hours >= 4) {
        dayPeriodEnumValue = dayPeriodEnum.morning;
      } else {
        dayPeriodEnumValue = dayPeriodEnum.night;
      }
      switch (token) {
        case "B":
        case "BB":
        case "BBB":
          return localize2.dayPeriod(dayPeriodEnumValue, {
            width: "abbreviated",
            context: "formatting"
          });
        case "BBBBB":
          return localize2.dayPeriod(dayPeriodEnumValue, {
            width: "narrow",
            context: "formatting"
          });
        case "BBBB":
        default:
          return localize2.dayPeriod(dayPeriodEnumValue, {
            width: "wide",
            context: "formatting"
          });
      }
    },
    // Hour [1-12]
    h: function(date, token, localize2) {
      if (token === "ho") {
        let hours = date.getHours() % 12;
        if (hours === 0) hours = 12;
        return localize2.ordinalNumber(hours, { unit: "hour" });
      }
      return lightFormatters.h(date, token);
    },
    // Hour [0-23]
    H: function(date, token, localize2) {
      if (token === "Ho") {
        return localize2.ordinalNumber(date.getHours(), { unit: "hour" });
      }
      return lightFormatters.H(date, token);
    },
    // Hour [0-11]
    K: function(date, token, localize2) {
      const hours = date.getHours() % 12;
      if (token === "Ko") {
        return localize2.ordinalNumber(hours, { unit: "hour" });
      }
      return addLeadingZeros(hours, token.length);
    },
    // Hour [1-24]
    k: function(date, token, localize2) {
      let hours = date.getHours();
      if (hours === 0) hours = 24;
      if (token === "ko") {
        return localize2.ordinalNumber(hours, { unit: "hour" });
      }
      return addLeadingZeros(hours, token.length);
    },
    // Minute
    m: function(date, token, localize2) {
      if (token === "mo") {
        return localize2.ordinalNumber(date.getMinutes(), { unit: "minute" });
      }
      return lightFormatters.m(date, token);
    },
    // Second
    s: function(date, token, localize2) {
      if (token === "so") {
        return localize2.ordinalNumber(date.getSeconds(), { unit: "second" });
      }
      return lightFormatters.s(date, token);
    },
    // Fraction of second
    S: function(date, token) {
      return lightFormatters.S(date, token);
    },
    // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)
    X: function(date, token, _localize) {
      const timezoneOffset = date.getTimezoneOffset();
      if (timezoneOffset === 0) {
        return "Z";
      }
      switch (token) {
        // Hours and optional minutes
        case "X":
          return formatTimezoneWithOptionalMinutes(timezoneOffset);
        // Hours, minutes and optional seconds without `:` delimiter
        // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
        // so this token always has the same output as `XX`
        case "XXXX":
        case "XX":
          return formatTimezone(timezoneOffset);
        // Hours, minutes and optional seconds with `:` delimiter
        // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
        // so this token always has the same output as `XXX`
        case "XXXXX":
        case "XXX":
        // Hours and minutes with `:` delimiter
        default:
          return formatTimezone(timezoneOffset, ":");
      }
    },
    // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)
    x: function(date, token, _localize) {
      const timezoneOffset = date.getTimezoneOffset();
      switch (token) {
        // Hours and optional minutes
        case "x":
          return formatTimezoneWithOptionalMinutes(timezoneOffset);
        // Hours, minutes and optional seconds without `:` delimiter
        // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
        // so this token always has the same output as `xx`
        case "xxxx":
        case "xx":
          return formatTimezone(timezoneOffset);
        // Hours, minutes and optional seconds with `:` delimiter
        // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
        // so this token always has the same output as `xxx`
        case "xxxxx":
        case "xxx":
        // Hours and minutes with `:` delimiter
        default:
          return formatTimezone(timezoneOffset, ":");
      }
    },
    // Timezone (GMT)
    O: function(date, token, _localize) {
      const timezoneOffset = date.getTimezoneOffset();
      switch (token) {
        // Short
        case "O":
        case "OO":
        case "OOO":
          return "GMT" + formatTimezoneShort(timezoneOffset, ":");
        // Long
        case "OOOO":
        default:
          return "GMT" + formatTimezone(timezoneOffset, ":");
      }
    },
    // Timezone (specific non-location)
    z: function(date, token, _localize) {
      const timezoneOffset = date.getTimezoneOffset();
      switch (token) {
        // Short
        case "z":
        case "zz":
        case "zzz":
          return "GMT" + formatTimezoneShort(timezoneOffset, ":");
        // Long
        case "zzzz":
        default:
          return "GMT" + formatTimezone(timezoneOffset, ":");
      }
    },
    // Seconds timestamp
    t: function(date, token, _localize) {
      const timestamp = Math.trunc(+date / 1e3);
      return addLeadingZeros(timestamp, token.length);
    },
    // Milliseconds timestamp
    T: function(date, token, _localize) {
      return addLeadingZeros(+date, token.length);
    }
  };
  function formatTimezoneShort(offset4, delimiter = "") {
    const sign = offset4 > 0 ? "-" : "+";
    const absOffset = Math.abs(offset4);
    const hours = Math.trunc(absOffset / 60);
    const minutes = absOffset % 60;
    if (minutes === 0) {
      return sign + String(hours);
    }
    return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);
  }
  function formatTimezoneWithOptionalMinutes(offset4, delimiter) {
    if (offset4 % 60 === 0) {
      const sign = offset4 > 0 ? "-" : "+";
      return sign + addLeadingZeros(Math.abs(offset4) / 60, 2);
    }
    return formatTimezone(offset4, delimiter);
  }
  function formatTimezone(offset4, delimiter = "") {
    const sign = offset4 > 0 ? "-" : "+";
    const absOffset = Math.abs(offset4);
    const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);
    const minutes = addLeadingZeros(absOffset % 60, 2);
    return sign + hours + delimiter + minutes;
  }

  // node_modules/date-fns/_lib/format/longFormatters.js
  var dateLongFormatter = (pattern, formatLong2) => {
    switch (pattern) {
      case "P":
        return formatLong2.date({ width: "short" });
      case "PP":
        return formatLong2.date({ width: "medium" });
      case "PPP":
        return formatLong2.date({ width: "long" });
      case "PPPP":
      default:
        return formatLong2.date({ width: "full" });
    }
  };
  var timeLongFormatter = (pattern, formatLong2) => {
    switch (pattern) {
      case "p":
        return formatLong2.time({ width: "short" });
      case "pp":
        return formatLong2.time({ width: "medium" });
      case "ppp":
        return formatLong2.time({ width: "long" });
      case "pppp":
      default:
        return formatLong2.time({ width: "full" });
    }
  };
  var dateTimeLongFormatter = (pattern, formatLong2) => {
    const matchResult = pattern.match(/(P+)(p+)?/) || [];
    const datePattern = matchResult[1];
    const timePattern = matchResult[2];
    if (!timePattern) {
      return dateLongFormatter(pattern, formatLong2);
    }
    let dateTimeFormat;
    switch (datePattern) {
      case "P":
        dateTimeFormat = formatLong2.dateTime({ width: "short" });
        break;
      case "PP":
        dateTimeFormat = formatLong2.dateTime({ width: "medium" });
        break;
      case "PPP":
        dateTimeFormat = formatLong2.dateTime({ width: "long" });
        break;
      case "PPPP":
      default:
        dateTimeFormat = formatLong2.dateTime({ width: "full" });
        break;
    }
    return dateTimeFormat.replace("{{date}}", dateLongFormatter(datePattern, formatLong2)).replace("{{time}}", timeLongFormatter(timePattern, formatLong2));
  };
  var longFormatters = {
    p: timeLongFormatter,
    P: dateTimeLongFormatter
  };

  // node_modules/date-fns/_lib/protectedTokens.js
  var dayOfYearTokenRE = /^D+$/;
  var weekYearTokenRE = /^Y+$/;
  var throwTokens = ["D", "DD", "YY", "YYYY"];
  function isProtectedDayOfYearToken(token) {
    return dayOfYearTokenRE.test(token);
  }
  function isProtectedWeekYearToken(token) {
    return weekYearTokenRE.test(token);
  }
  function warnOrThrowProtectedError(token, format7, input) {
    const _message = message(token, format7, input);
    console.warn(_message);
    if (throwTokens.includes(token)) throw new RangeError(_message);
  }
  function message(token, format7, input) {
    const subject = token[0] === "Y" ? "years" : "days of the month";
    return `Use \`${token.toLowerCase()}\` instead of \`${token}\` (in \`${format7}\`) for formatting ${subject} to the input \`${input}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;
  }

  // node_modules/date-fns/format.js
  var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g;
  var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;
  var escapedStringRegExp = /^'([^]*?)'?$/;
  var doubleQuoteRegExp = /''/g;
  var unescapedLatinCharacterRegExp = /[a-zA-Z]/;
  function format(date, formatStr, options) {
    const defaultOptions2 = getDefaultOptions();
    const locale = options?.locale ?? defaultOptions2.locale ?? enUS;
    const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1;
    const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0;
    const originalDate = toDate(date, options?.in);
    if (!isValid(originalDate)) {
      throw new RangeError("Invalid time value");
    }
    let parts = formatStr.match(longFormattingTokensRegExp).map((substring) => {
      const firstCharacter = substring[0];
      if (firstCharacter === "p" || firstCharacter === "P") {
        const longFormatter = longFormatters[firstCharacter];
        return longFormatter(substring, locale.formatLong);
      }
      return substring;
    }).join("").match(formattingTokensRegExp).map((substring) => {
      if (substring === "''") {
        return { isToken: false, value: "'" };
      }
      const firstCharacter = substring[0];
      if (firstCharacter === "'") {
        return { isToken: false, value: cleanEscapedString(substring) };
      }
      if (formatters[firstCharacter]) {
        return { isToken: true, value: substring };
      }
      if (firstCharacter.match(unescapedLatinCharacterRegExp)) {
        throw new RangeError(
          "Format string contains an unescaped latin alphabet character `" + firstCharacter + "`"
        );
      }
      return { isToken: false, value: substring };
    });
    if (locale.localize.preprocessor) {
      parts = locale.localize.preprocessor(originalDate, parts);
    }
    const formatterOptions = {
      firstWeekContainsDate,
      weekStartsOn,
      locale
    };
    return parts.map((part) => {
      if (!part.isToken) return part.value;
      const token = part.value;
      if (!options?.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token) || !options?.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {
        warnOrThrowProtectedError(token, formatStr, String(date));
      }
      const formatter = formatters[token[0]];
      return formatter(originalDate, token, locale.localize, formatterOptions);
    }).join("");
  }
  function cleanEscapedString(input) {
    const matched = input.match(escapedStringRegExp);
    if (!matched) {
      return input;
    }
    return matched[1].replace(doubleQuoteRegExp, "'");
  }

  // node_modules/date-fns/getDaysInMonth.js
  function getDaysInMonth(date, options) {
    const _date = toDate(date, options?.in);
    const year = _date.getFullYear();
    const monthIndex = _date.getMonth();
    const lastDayOfMonth = constructFrom(_date, 0);
    lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);
    lastDayOfMonth.setHours(0, 0, 0, 0);
    return lastDayOfMonth.getDate();
  }

  // node_modules/date-fns/getDefaultOptions.js
  function getDefaultOptions2() {
    return Object.assign({}, getDefaultOptions());
  }

  // node_modules/date-fns/getISODay.js
  function getISODay(date, options) {
    const day = toDate(date, options?.in).getDay();
    return day === 0 ? 7 : day;
  }

  // node_modules/date-fns/getMonth.js
  function getMonth(date, options) {
    return toDate(date, options?.in).getMonth();
  }

  // node_modules/date-fns/getYear.js
  function getYear(date, options) {
    return toDate(date, options?.in).getFullYear();
  }

  // node_modules/date-fns/isAfter.js
  function isAfter(date, dateToCompare) {
    return +toDate(date) > +toDate(dateToCompare);
  }

  // node_modules/date-fns/isBefore.js
  function isBefore(date, dateToCompare) {
    return +toDate(date) < +toDate(dateToCompare);
  }

  // node_modules/date-fns/transpose.js
  function transpose(date, constructor) {
    const date_ = isConstructor(constructor) ? new constructor(0) : constructFrom(constructor, 0);
    date_.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
    date_.setHours(
      date.getHours(),
      date.getMinutes(),
      date.getSeconds(),
      date.getMilliseconds()
    );
    return date_;
  }
  function isConstructor(constructor) {
    return typeof constructor === "function" && constructor.prototype?.constructor === constructor;
  }

  // node_modules/date-fns/parse/_lib/Setter.js
  var TIMEZONE_UNIT_PRIORITY = 10;
  var Setter = class {
    subPriority = 0;
    validate(_utcDate, _options) {
      return true;
    }
  };
  var ValueSetter = class extends Setter {
    constructor(value, validateValue, setValue, priority2, subPriority) {
      super();
      this.value = value;
      this.validateValue = validateValue;
      this.setValue = setValue;
      this.priority = priority2;
      if (subPriority) {
        this.subPriority = subPriority;
      }
    }
    validate(date, options) {
      return this.validateValue(date, this.value, options);
    }
    set(date, flags, options) {
      return this.setValue(date, flags, this.value, options);
    }
  };
  var DateTimezoneSetter = class extends Setter {
    priority = TIMEZONE_UNIT_PRIORITY;
    subPriority = -1;
    constructor(context, reference) {
      super();
      this.context = context || ((date) => constructFrom(reference, date));
    }
    set(date, flags) {
      if (flags.timestampIsSet) return date;
      return constructFrom(date, transpose(date, this.context));
    }
  };

  // node_modules/date-fns/parse/_lib/Parser.js
  var Parser = class {
    run(dateString, token, match3, options) {
      const result = this.parse(dateString, token, match3, options);
      if (!result) {
        return null;
      }
      return {
        setter: new ValueSetter(
          result.value,
          this.validate,
          this.set,
          this.priority,
          this.subPriority
        ),
        rest: result.rest
      };
    }
    validate(_utcDate, _value, _options) {
      return true;
    }
  };

  // node_modules/date-fns/parse/_lib/parsers/EraParser.js
  var EraParser = class extends Parser {
    priority = 140;
    parse(dateString, token, match3) {
      switch (token) {
        // AD, BC
        case "G":
        case "GG":
        case "GGG":
          return match3.era(dateString, { width: "abbreviated" }) || match3.era(dateString, { width: "narrow" });
        // A, B
        case "GGGGG":
          return match3.era(dateString, { width: "narrow" });
        // Anno Domini, Before Christ
        case "GGGG":
        default:
          return match3.era(dateString, { width: "wide" }) || match3.era(dateString, { width: "abbreviated" }) || match3.era(dateString, { width: "narrow" });
      }
    }
    set(date, flags, value) {
      flags.era = value;
      date.setFullYear(value, 0, 1);
      date.setHours(0, 0, 0, 0);
      return date;
    }
    incompatibleTokens = ["R", "u", "t", "T"];
  };

  // node_modules/date-fns/parse/_lib/constants.js
  var numericPatterns = {
    month: /^(1[0-2]|0?\d)/,
    // 0 to 12
    date: /^(3[0-1]|[0-2]?\d)/,
    // 0 to 31
    dayOfYear: /^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,
    // 0 to 366
    week: /^(5[0-3]|[0-4]?\d)/,
    // 0 to 53
    hour23h: /^(2[0-3]|[0-1]?\d)/,
    // 0 to 23
    hour24h: /^(2[0-4]|[0-1]?\d)/,
    // 0 to 24
    hour11h: /^(1[0-1]|0?\d)/,
    // 0 to 11
    hour12h: /^(1[0-2]|0?\d)/,
    // 0 to 12
    minute: /^[0-5]?\d/,
    // 0 to 59
    second: /^[0-5]?\d/,
    // 0 to 59
    singleDigit: /^\d/,
    // 0 to 9
    twoDigits: /^\d{1,2}/,
    // 0 to 99
    threeDigits: /^\d{1,3}/,
    // 0 to 999
    fourDigits: /^\d{1,4}/,
    // 0 to 9999
    anyDigitsSigned: /^-?\d+/,
    singleDigitSigned: /^-?\d/,
    // 0 to 9, -0 to -9
    twoDigitsSigned: /^-?\d{1,2}/,
    // 0 to 99, -0 to -99
    threeDigitsSigned: /^-?\d{1,3}/,
    // 0 to 999, -0 to -999
    fourDigitsSigned: /^-?\d{1,4}/
    // 0 to 9999, -0 to -9999
  };
  var timezonePatterns = {
    basicOptionalMinutes: /^([+-])(\d{2})(\d{2})?|Z/,
    basic: /^([+-])(\d{2})(\d{2})|Z/,
    basicOptionalSeconds: /^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,
    extended: /^([+-])(\d{2}):(\d{2})|Z/,
    extendedOptionalSeconds: /^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/
  };

  // node_modules/date-fns/parse/_lib/utils.js
  function mapValue(parseFnResult, mapFn) {
    if (!parseFnResult) {
      return parseFnResult;
    }
    return {
      value: mapFn(parseFnResult.value),
      rest: parseFnResult.rest
    };
  }
  function parseNumericPattern(pattern, dateString) {
    const matchResult = dateString.match(pattern);
    if (!matchResult) {
      return null;
    }
    return {
      value: parseInt(matchResult[0], 10),
      rest: dateString.slice(matchResult[0].length)
    };
  }
  function parseTimezonePattern(pattern, dateString) {
    const matchResult = dateString.match(pattern);
    if (!matchResult) {
      return null;
    }
    if (matchResult[0] === "Z") {
      return {
        value: 0,
        rest: dateString.slice(1)
      };
    }
    const sign = matchResult[1] === "+" ? 1 : -1;
    const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;
    const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;
    const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;
    return {
      value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),
      rest: dateString.slice(matchResult[0].length)
    };
  }
  function parseAnyDigitsSigned(dateString) {
    return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);
  }
  function parseNDigits(n2, dateString) {
    switch (n2) {
      case 1:
        return parseNumericPattern(numericPatterns.singleDigit, dateString);
      case 2:
        return parseNumericPattern(numericPatterns.twoDigits, dateString);
      case 3:
        return parseNumericPattern(numericPatterns.threeDigits, dateString);
      case 4:
        return parseNumericPattern(numericPatterns.fourDigits, dateString);
      default:
        return parseNumericPattern(new RegExp("^\\d{1," + n2 + "}"), dateString);
    }
  }
  function parseNDigitsSigned(n2, dateString) {
    switch (n2) {
      case 1:
        return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);
      case 2:
        return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);
      case 3:
        return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);
      case 4:
        return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);
      default:
        return parseNumericPattern(new RegExp("^-?\\d{1," + n2 + "}"), dateString);
    }
  }
  function dayPeriodEnumToHours(dayPeriod) {
    switch (dayPeriod) {
      case "morning":
        return 4;
      case "evening":
        return 17;
      case "pm":
      case "noon":
      case "afternoon":
        return 12;
      case "am":
      case "midnight":
      case "night":
      default:
        return 0;
    }
  }
  function normalizeTwoDigitYear(twoDigitYear, currentYear) {
    const isCommonEra = currentYear > 0;
    const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;
    let result;
    if (absCurrentYear <= 50) {
      result = twoDigitYear || 100;
    } else {
      const rangeEnd = absCurrentYear + 50;
      const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;
      const isPreviousCentury = twoDigitYear >= rangeEnd % 100;
      result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);
    }
    return isCommonEra ? result : 1 - result;
  }
  function isLeapYearIndex(year) {
    return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;
  }

  // node_modules/date-fns/parse/_lib/parsers/YearParser.js
  var YearParser = class extends Parser {
    priority = 130;
    incompatibleTokens = ["Y", "R", "u", "w", "I", "i", "e", "c", "t", "T"];
    parse(dateString, token, match3) {
      const valueCallback = (year) => ({
        year,
        isTwoDigitYear: token === "yy"
      });
      switch (token) {
        case "y":
          return mapValue(parseNDigits(4, dateString), valueCallback);
        case "yo":
          return mapValue(
            match3.ordinalNumber(dateString, {
              unit: "year"
            }),
            valueCallback
          );
        default:
          return mapValue(parseNDigits(token.length, dateString), valueCallback);
      }
    }
    validate(_date, value) {
      return value.isTwoDigitYear || value.year > 0;
    }
    set(date, flags, value) {
      const currentYear = date.getFullYear();
      if (value.isTwoDigitYear) {
        const normalizedTwoDigitYear = normalizeTwoDigitYear(
          value.year,
          currentYear
        );
        date.setFullYear(normalizedTwoDigitYear, 0, 1);
        date.setHours(0, 0, 0, 0);
        return date;
      }
      const year = !("era" in flags) || flags.era === 1 ? value.year : 1 - value.year;
      date.setFullYear(year, 0, 1);
      date.setHours(0, 0, 0, 0);
      return date;
    }
  };

  // node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js
  var LocalWeekYearParser = class extends Parser {
    priority = 130;
    parse(dateString, token, match3) {
      const valueCallback = (year) => ({
        year,
        isTwoDigitYear: token === "YY"
      });
      switch (token) {
        case "Y":
          return mapValue(parseNDigits(4, dateString), valueCallback);
        case "Yo":
          return mapValue(
            match3.ordinalNumber(dateString, {
              unit: "year"
            }),
            valueCallback
          );
        default:
          return mapValue(parseNDigits(token.length, dateString), valueCallback);
      }
    }
    validate(_date, value) {
      return value.isTwoDigitYear || value.year > 0;
    }
    set(date, flags, value, options) {
      const currentYear = getWeekYear(date, options);
      if (value.isTwoDigitYear) {
        const normalizedTwoDigitYear = normalizeTwoDigitYear(
          value.year,
          currentYear
        );
        date.setFullYear(
          normalizedTwoDigitYear,
          0,
          options.firstWeekContainsDate
        );
        date.setHours(0, 0, 0, 0);
        return startOfWeek(date, options);
      }
      const year = !("era" in flags) || flags.era === 1 ? value.year : 1 - value.year;
      date.setFullYear(year, 0, options.firstWeekContainsDate);
      date.setHours(0, 0, 0, 0);
      return startOfWeek(date, options);
    }
    incompatibleTokens = [
      "y",
      "R",
      "u",
      "Q",
      "q",
      "M",
      "L",
      "I",
      "d",
      "D",
      "i",
      "t",
      "T"
    ];
  };

  // node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js
  var ISOWeekYearParser = class extends Parser {
    priority = 130;
    parse(dateString, token) {
      if (token === "R") {
        return parseNDigitsSigned(4, dateString);
      }
      return parseNDigitsSigned(token.length, dateString);
    }
    set(date, _flags, value) {
      const firstWeekOfYear = constructFrom(date, 0);
      firstWeekOfYear.setFullYear(value, 0, 4);
      firstWeekOfYear.setHours(0, 0, 0, 0);
      return startOfISOWeek(firstWeekOfYear);
    }
    incompatibleTokens = [
      "G",
      "y",
      "Y",
      "u",
      "Q",
      "q",
      "M",
      "L",
      "w",
      "d",
      "D",
      "e",
      "c",
      "t",
      "T"
    ];
  };

  // node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js
  var ExtendedYearParser = class extends Parser {
    priority = 130;
    parse(dateString, token) {
      if (token === "u") {
        return parseNDigitsSigned(4, dateString);
      }
      return parseNDigitsSigned(token.length, dateString);
    }
    set(date, _flags, value) {
      date.setFullYear(value, 0, 1);
      date.setHours(0, 0, 0, 0);
      return date;
    }
    incompatibleTokens = ["G", "y", "Y", "R", "w", "I", "i", "e", "c", "t", "T"];
  };

  // node_modules/date-fns/parse/_lib/parsers/QuarterParser.js
  var QuarterParser = class extends Parser {
    priority = 120;
    parse(dateString, token, match3) {
      switch (token) {
        // 1, 2, 3, 4
        case "Q":
        case "QQ":
          return parseNDigits(token.length, dateString);
        // 1st, 2nd, 3rd, 4th
        case "Qo":
          return match3.ordinalNumber(dateString, { unit: "quarter" });
        // Q1, Q2, Q3, Q4
        case "QQQ":
          return match3.quarter(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.quarter(dateString, {
            width: "narrow",
            context: "formatting"
          });
        // 1, 2, 3, 4 (narrow quarter; could be not numerical)
        case "QQQQQ":
          return match3.quarter(dateString, {
            width: "narrow",
            context: "formatting"
          });
        // 1st quarter, 2nd quarter, ...
        case "QQQQ":
        default:
          return match3.quarter(dateString, {
            width: "wide",
            context: "formatting"
          }) || match3.quarter(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.quarter(dateString, {
            width: "narrow",
            context: "formatting"
          });
      }
    }
    validate(_date, value) {
      return value >= 1 && value <= 4;
    }
    set(date, _flags, value) {
      date.setMonth((value - 1) * 3, 1);
      date.setHours(0, 0, 0, 0);
      return date;
    }
    incompatibleTokens = [
      "Y",
      "R",
      "q",
      "M",
      "L",
      "w",
      "I",
      "d",
      "D",
      "i",
      "e",
      "c",
      "t",
      "T"
    ];
  };

  // node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js
  var StandAloneQuarterParser = class extends Parser {
    priority = 120;
    parse(dateString, token, match3) {
      switch (token) {
        // 1, 2, 3, 4
        case "q":
        case "qq":
          return parseNDigits(token.length, dateString);
        // 1st, 2nd, 3rd, 4th
        case "qo":
          return match3.ordinalNumber(dateString, { unit: "quarter" });
        // Q1, Q2, Q3, Q4
        case "qqq":
          return match3.quarter(dateString, {
            width: "abbreviated",
            context: "standalone"
          }) || match3.quarter(dateString, {
            width: "narrow",
            context: "standalone"
          });
        // 1, 2, 3, 4 (narrow quarter; could be not numerical)
        case "qqqqq":
          return match3.quarter(dateString, {
            width: "narrow",
            context: "standalone"
          });
        // 1st quarter, 2nd quarter, ...
        case "qqqq":
        default:
          return match3.quarter(dateString, {
            width: "wide",
            context: "standalone"
          }) || match3.quarter(dateString, {
            width: "abbreviated",
            context: "standalone"
          }) || match3.quarter(dateString, {
            width: "narrow",
            context: "standalone"
          });
      }
    }
    validate(_date, value) {
      return value >= 1 && value <= 4;
    }
    set(date, _flags, value) {
      date.setMonth((value - 1) * 3, 1);
      date.setHours(0, 0, 0, 0);
      return date;
    }
    incompatibleTokens = [
      "Y",
      "R",
      "Q",
      "M",
      "L",
      "w",
      "I",
      "d",
      "D",
      "i",
      "e",
      "c",
      "t",
      "T"
    ];
  };

  // node_modules/date-fns/parse/_lib/parsers/MonthParser.js
  var MonthParser = class extends Parser {
    incompatibleTokens = [
      "Y",
      "R",
      "q",
      "Q",
      "L",
      "w",
      "I",
      "D",
      "i",
      "e",
      "c",
      "t",
      "T"
    ];
    priority = 110;
    parse(dateString, token, match3) {
      const valueCallback = (value) => value - 1;
      switch (token) {
        // 1, 2, ..., 12
        case "M":
          return mapValue(
            parseNumericPattern(numericPatterns.month, dateString),
            valueCallback
          );
        // 01, 02, ..., 12
        case "MM":
          return mapValue(parseNDigits(2, dateString), valueCallback);
        // 1st, 2nd, ..., 12th
        case "Mo":
          return mapValue(
            match3.ordinalNumber(dateString, {
              unit: "month"
            }),
            valueCallback
          );
        // Jan, Feb, ..., Dec
        case "MMM":
          return match3.month(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.month(dateString, { width: "narrow", context: "formatting" });
        // J, F, ..., D
        case "MMMMM":
          return match3.month(dateString, {
            width: "narrow",
            context: "formatting"
          });
        // January, February, ..., December
        case "MMMM":
        default:
          return match3.month(dateString, { width: "wide", context: "formatting" }) || match3.month(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.month(dateString, { width: "narrow", context: "formatting" });
      }
    }
    validate(_date, value) {
      return value >= 0 && value <= 11;
    }
    set(date, _flags, value) {
      date.setMonth(value, 1);
      date.setHours(0, 0, 0, 0);
      return date;
    }
  };

  // node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js
  var StandAloneMonthParser = class extends Parser {
    priority = 110;
    parse(dateString, token, match3) {
      const valueCallback = (value) => value - 1;
      switch (token) {
        // 1, 2, ..., 12
        case "L":
          return mapValue(
            parseNumericPattern(numericPatterns.month, dateString),
            valueCallback
          );
        // 01, 02, ..., 12
        case "LL":
          return mapValue(parseNDigits(2, dateString), valueCallback);
        // 1st, 2nd, ..., 12th
        case "Lo":
          return mapValue(
            match3.ordinalNumber(dateString, {
              unit: "month"
            }),
            valueCallback
          );
        // Jan, Feb, ..., Dec
        case "LLL":
          return match3.month(dateString, {
            width: "abbreviated",
            context: "standalone"
          }) || match3.month(dateString, { width: "narrow", context: "standalone" });
        // J, F, ..., D
        case "LLLLL":
          return match3.month(dateString, {
            width: "narrow",
            context: "standalone"
          });
        // January, February, ..., December
        case "LLLL":
        default:
          return match3.month(dateString, { width: "wide", context: "standalone" }) || match3.month(dateString, {
            width: "abbreviated",
            context: "standalone"
          }) || match3.month(dateString, { width: "narrow", context: "standalone" });
      }
    }
    validate(_date, value) {
      return value >= 0 && value <= 11;
    }
    set(date, _flags, value) {
      date.setMonth(value, 1);
      date.setHours(0, 0, 0, 0);
      return date;
    }
    incompatibleTokens = [
      "Y",
      "R",
      "q",
      "Q",
      "M",
      "w",
      "I",
      "D",
      "i",
      "e",
      "c",
      "t",
      "T"
    ];
  };

  // node_modules/date-fns/setWeek.js
  function setWeek(date, week, options) {
    const date_ = toDate(date, options?.in);
    const diff = getWeek(date_, options) - week;
    date_.setDate(date_.getDate() - diff * 7);
    return toDate(date_, options?.in);
  }

  // node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js
  var LocalWeekParser = class extends Parser {
    priority = 100;
    parse(dateString, token, match3) {
      switch (token) {
        case "w":
          return parseNumericPattern(numericPatterns.week, dateString);
        case "wo":
          return match3.ordinalNumber(dateString, { unit: "week" });
        default:
          return parseNDigits(token.length, dateString);
      }
    }
    validate(_date, value) {
      return value >= 1 && value <= 53;
    }
    set(date, _flags, value, options) {
      return startOfWeek(setWeek(date, value, options), options);
    }
    incompatibleTokens = [
      "y",
      "R",
      "u",
      "q",
      "Q",
      "M",
      "L",
      "I",
      "d",
      "D",
      "i",
      "t",
      "T"
    ];
  };

  // node_modules/date-fns/setISOWeek.js
  function setISOWeek(date, week, options) {
    const _date = toDate(date, options?.in);
    const diff = getISOWeek(_date, options) - week;
    _date.setDate(_date.getDate() - diff * 7);
    return _date;
  }

  // node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js
  var ISOWeekParser = class extends Parser {
    priority = 100;
    parse(dateString, token, match3) {
      switch (token) {
        case "I":
          return parseNumericPattern(numericPatterns.week, dateString);
        case "Io":
          return match3.ordinalNumber(dateString, { unit: "week" });
        default:
          return parseNDigits(token.length, dateString);
      }
    }
    validate(_date, value) {
      return value >= 1 && value <= 53;
    }
    set(date, _flags, value) {
      return startOfISOWeek(setISOWeek(date, value));
    }
    incompatibleTokens = [
      "y",
      "Y",
      "u",
      "q",
      "Q",
      "M",
      "L",
      "w",
      "d",
      "D",
      "e",
      "c",
      "t",
      "T"
    ];
  };

  // node_modules/date-fns/parse/_lib/parsers/DateParser.js
  var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  var DAYS_IN_MONTH_LEAP_YEAR = [
    31,
    29,
    31,
    30,
    31,
    30,
    31,
    31,
    30,
    31,
    30,
    31
  ];
  var DateParser = class extends Parser {
    priority = 90;
    subPriority = 1;
    parse(dateString, token, match3) {
      switch (token) {
        case "d":
          return parseNumericPattern(numericPatterns.date, dateString);
        case "do":
          return match3.ordinalNumber(dateString, { unit: "date" });
        default:
          return parseNDigits(token.length, dateString);
      }
    }
    validate(date, value) {
      const year = date.getFullYear();
      const isLeapYear = isLeapYearIndex(year);
      const month = date.getMonth();
      if (isLeapYear) {
        return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];
      } else {
        return value >= 1 && value <= DAYS_IN_MONTH[month];
      }
    }
    set(date, _flags, value) {
      date.setDate(value);
      date.setHours(0, 0, 0, 0);
      return date;
    }
    incompatibleTokens = [
      "Y",
      "R",
      "q",
      "Q",
      "w",
      "I",
      "D",
      "i",
      "e",
      "c",
      "t",
      "T"
    ];
  };

  // node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js
  var DayOfYearParser = class extends Parser {
    priority = 90;
    subpriority = 1;
    parse(dateString, token, match3) {
      switch (token) {
        case "D":
        case "DD":
          return parseNumericPattern(numericPatterns.dayOfYear, dateString);
        case "Do":
          return match3.ordinalNumber(dateString, { unit: "date" });
        default:
          return parseNDigits(token.length, dateString);
      }
    }
    validate(date, value) {
      const year = date.getFullYear();
      const isLeapYear = isLeapYearIndex(year);
      if (isLeapYear) {
        return value >= 1 && value <= 366;
      } else {
        return value >= 1 && value <= 365;
      }
    }
    set(date, _flags, value) {
      date.setMonth(0, value);
      date.setHours(0, 0, 0, 0);
      return date;
    }
    incompatibleTokens = [
      "Y",
      "R",
      "q",
      "Q",
      "M",
      "L",
      "w",
      "I",
      "d",
      "E",
      "i",
      "e",
      "c",
      "t",
      "T"
    ];
  };

  // node_modules/date-fns/setDay.js
  function setDay(date, day, options) {
    const defaultOptions2 = getDefaultOptions();
    const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0;
    const date_ = toDate(date, options?.in);
    const currentDay = date_.getDay();
    const remainder = day % 7;
    const dayIndex = (remainder + 7) % 7;
    const delta = 7 - weekStartsOn;
    const diff = day < 0 || day > 6 ? day - (currentDay + delta) % 7 : (dayIndex + delta) % 7 - (currentDay + delta) % 7;
    return addDays(date_, diff, options);
  }

  // node_modules/date-fns/parse/_lib/parsers/DayParser.js
  var DayParser = class extends Parser {
    priority = 90;
    parse(dateString, token, match3) {
      switch (token) {
        // Tue
        case "E":
        case "EE":
        case "EEE":
          return match3.day(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.day(dateString, { width: "short", context: "formatting" }) || match3.day(dateString, { width: "narrow", context: "formatting" });
        // T
        case "EEEEE":
          return match3.day(dateString, {
            width: "narrow",
            context: "formatting"
          });
        // Tu
        case "EEEEEE":
          return match3.day(dateString, { width: "short", context: "formatting" }) || match3.day(dateString, { width: "narrow", context: "formatting" });
        // Tuesday
        case "EEEE":
        default:
          return match3.day(dateString, { width: "wide", context: "formatting" }) || match3.day(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.day(dateString, { width: "short", context: "formatting" }) || match3.day(dateString, { width: "narrow", context: "formatting" });
      }
    }
    validate(_date, value) {
      return value >= 0 && value <= 6;
    }
    set(date, _flags, value, options) {
      date = setDay(date, value, options);
      date.setHours(0, 0, 0, 0);
      return date;
    }
    incompatibleTokens = ["D", "i", "e", "c", "t", "T"];
  };

  // node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js
  var LocalDayParser = class extends Parser {
    priority = 90;
    parse(dateString, token, match3, options) {
      const valueCallback = (value) => {
        const wholeWeekDays = Math.floor((value - 1) / 7) * 7;
        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;
      };
      switch (token) {
        // 3
        case "e":
        case "ee":
          return mapValue(parseNDigits(token.length, dateString), valueCallback);
        // 3rd
        case "eo":
          return mapValue(
            match3.ordinalNumber(dateString, {
              unit: "day"
            }),
            valueCallback
          );
        // Tue
        case "eee":
          return match3.day(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.day(dateString, { width: "short", context: "formatting" }) || match3.day(dateString, { width: "narrow", context: "formatting" });
        // T
        case "eeeee":
          return match3.day(dateString, {
            width: "narrow",
            context: "formatting"
          });
        // Tu
        case "eeeeee":
          return match3.day(dateString, { width: "short", context: "formatting" }) || match3.day(dateString, { width: "narrow", context: "formatting" });
        // Tuesday
        case "eeee":
        default:
          return match3.day(dateString, { width: "wide", context: "formatting" }) || match3.day(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.day(dateString, { width: "short", context: "formatting" }) || match3.day(dateString, { width: "narrow", context: "formatting" });
      }
    }
    validate(_date, value) {
      return value >= 0 && value <= 6;
    }
    set(date, _flags, value, options) {
      date = setDay(date, value, options);
      date.setHours(0, 0, 0, 0);
      return date;
    }
    incompatibleTokens = [
      "y",
      "R",
      "u",
      "q",
      "Q",
      "M",
      "L",
      "I",
      "d",
      "D",
      "E",
      "i",
      "c",
      "t",
      "T"
    ];
  };

  // node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js
  var StandAloneLocalDayParser = class extends Parser {
    priority = 90;
    parse(dateString, token, match3, options) {
      const valueCallback = (value) => {
        const wholeWeekDays = Math.floor((value - 1) / 7) * 7;
        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;
      };
      switch (token) {
        // 3
        case "c":
        case "cc":
          return mapValue(parseNDigits(token.length, dateString), valueCallback);
        // 3rd
        case "co":
          return mapValue(
            match3.ordinalNumber(dateString, {
              unit: "day"
            }),
            valueCallback
          );
        // Tue
        case "ccc":
          return match3.day(dateString, {
            width: "abbreviated",
            context: "standalone"
          }) || match3.day(dateString, { width: "short", context: "standalone" }) || match3.day(dateString, { width: "narrow", context: "standalone" });
        // T
        case "ccccc":
          return match3.day(dateString, {
            width: "narrow",
            context: "standalone"
          });
        // Tu
        case "cccccc":
          return match3.day(dateString, { width: "short", context: "standalone" }) || match3.day(dateString, { width: "narrow", context: "standalone" });
        // Tuesday
        case "cccc":
        default:
          return match3.day(dateString, { width: "wide", context: "standalone" }) || match3.day(dateString, {
            width: "abbreviated",
            context: "standalone"
          }) || match3.day(dateString, { width: "short", context: "standalone" }) || match3.day(dateString, { width: "narrow", context: "standalone" });
      }
    }
    validate(_date, value) {
      return value >= 0 && value <= 6;
    }
    set(date, _flags, value, options) {
      date = setDay(date, value, options);
      date.setHours(0, 0, 0, 0);
      return date;
    }
    incompatibleTokens = [
      "y",
      "R",
      "u",
      "q",
      "Q",
      "M",
      "L",
      "I",
      "d",
      "D",
      "E",
      "i",
      "e",
      "t",
      "T"
    ];
  };

  // node_modules/date-fns/setISODay.js
  function setISODay(date, day, options) {
    const date_ = toDate(date, options?.in);
    const currentDay = getISODay(date_, options);
    const diff = day - currentDay;
    return addDays(date_, diff, options);
  }

  // node_modules/date-fns/parse/_lib/parsers/ISODayParser.js
  var ISODayParser = class extends Parser {
    priority = 90;
    parse(dateString, token, match3) {
      const valueCallback = (value) => {
        if (value === 0) {
          return 7;
        }
        return value;
      };
      switch (token) {
        // 2
        case "i":
        case "ii":
          return parseNDigits(token.length, dateString);
        // 2nd
        case "io":
          return match3.ordinalNumber(dateString, { unit: "day" });
        // Tue
        case "iii":
          return mapValue(
            match3.day(dateString, {
              width: "abbreviated",
              context: "formatting"
            }) || match3.day(dateString, {
              width: "short",
              context: "formatting"
            }) || match3.day(dateString, {
              width: "narrow",
              context: "formatting"
            }),
            valueCallback
          );
        // T
        case "iiiii":
          return mapValue(
            match3.day(dateString, {
              width: "narrow",
              context: "formatting"
            }),
            valueCallback
          );
        // Tu
        case "iiiiii":
          return mapValue(
            match3.day(dateString, {
              width: "short",
              context: "formatting"
            }) || match3.day(dateString, {
              width: "narrow",
              context: "formatting"
            }),
            valueCallback
          );
        // Tuesday
        case "iiii":
        default:
          return mapValue(
            match3.day(dateString, {
              width: "wide",
              context: "formatting"
            }) || match3.day(dateString, {
              width: "abbreviated",
              context: "formatting"
            }) || match3.day(dateString, {
              width: "short",
              context: "formatting"
            }) || match3.day(dateString, {
              width: "narrow",
              context: "formatting"
            }),
            valueCallback
          );
      }
    }
    validate(_date, value) {
      return value >= 1 && value <= 7;
    }
    set(date, _flags, value) {
      date = setISODay(date, value);
      date.setHours(0, 0, 0, 0);
      return date;
    }
    incompatibleTokens = [
      "y",
      "Y",
      "u",
      "q",
      "Q",
      "M",
      "L",
      "w",
      "d",
      "D",
      "E",
      "e",
      "c",
      "t",
      "T"
    ];
  };

  // node_modules/date-fns/parse/_lib/parsers/AMPMParser.js
  var AMPMParser = class extends Parser {
    priority = 80;
    parse(dateString, token, match3) {
      switch (token) {
        case "a":
        case "aa":
        case "aaa":
          return match3.dayPeriod(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.dayPeriod(dateString, {
            width: "narrow",
            context: "formatting"
          });
        case "aaaaa":
          return match3.dayPeriod(dateString, {
            width: "narrow",
            context: "formatting"
          });
        case "aaaa":
        default:
          return match3.dayPeriod(dateString, {
            width: "wide",
            context: "formatting"
          }) || match3.dayPeriod(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.dayPeriod(dateString, {
            width: "narrow",
            context: "formatting"
          });
      }
    }
    set(date, _flags, value) {
      date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);
      return date;
    }
    incompatibleTokens = ["b", "B", "H", "k", "t", "T"];
  };

  // node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js
  var AMPMMidnightParser = class extends Parser {
    priority = 80;
    parse(dateString, token, match3) {
      switch (token) {
        case "b":
        case "bb":
        case "bbb":
          return match3.dayPeriod(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.dayPeriod(dateString, {
            width: "narrow",
            context: "formatting"
          });
        case "bbbbb":
          return match3.dayPeriod(dateString, {
            width: "narrow",
            context: "formatting"
          });
        case "bbbb":
        default:
          return match3.dayPeriod(dateString, {
            width: "wide",
            context: "formatting"
          }) || match3.dayPeriod(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.dayPeriod(dateString, {
            width: "narrow",
            context: "formatting"
          });
      }
    }
    set(date, _flags, value) {
      date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);
      return date;
    }
    incompatibleTokens = ["a", "B", "H", "k", "t", "T"];
  };

  // node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js
  var DayPeriodParser = class extends Parser {
    priority = 80;
    parse(dateString, token, match3) {
      switch (token) {
        case "B":
        case "BB":
        case "BBB":
          return match3.dayPeriod(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.dayPeriod(dateString, {
            width: "narrow",
            context: "formatting"
          });
        case "BBBBB":
          return match3.dayPeriod(dateString, {
            width: "narrow",
            context: "formatting"
          });
        case "BBBB":
        default:
          return match3.dayPeriod(dateString, {
            width: "wide",
            context: "formatting"
          }) || match3.dayPeriod(dateString, {
            width: "abbreviated",
            context: "formatting"
          }) || match3.dayPeriod(dateString, {
            width: "narrow",
            context: "formatting"
          });
      }
    }
    set(date, _flags, value) {
      date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);
      return date;
    }
    incompatibleTokens = ["a", "b", "t", "T"];
  };

  // node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js
  var Hour1to12Parser = class extends Parser {
    priority = 70;
    parse(dateString, token, match3) {
      switch (token) {
        case "h":
          return parseNumericPattern(numericPatterns.hour12h, dateString);
        case "ho":
          return match3.ordinalNumber(dateString, { unit: "hour" });
        default:
          return parseNDigits(token.length, dateString);
      }
    }
    validate(_date, value) {
      return value >= 1 && value <= 12;
    }
    set(date, _flags, value) {
      const isPM = date.getHours() >= 12;
      if (isPM && value < 12) {
        date.setHours(value + 12, 0, 0, 0);
      } else if (!isPM && value === 12) {
        date.setHours(0, 0, 0, 0);
      } else {
        date.setHours(value, 0, 0, 0);
      }
      return date;
    }
    incompatibleTokens = ["H", "K", "k", "t", "T"];
  };

  // node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js
  var Hour0to23Parser = class extends Parser {
    priority = 70;
    parse(dateString, token, match3) {
      switch (token) {
        case "H":
          return parseNumericPattern(numericPatterns.hour23h, dateString);
        case "Ho":
          return match3.ordinalNumber(dateString, { unit: "hour" });
        default:
          return parseNDigits(token.length, dateString);
      }
    }
    validate(_date, value) {
      return value >= 0 && value <= 23;
    }
    set(date, _flags, value) {
      date.setHours(value, 0, 0, 0);
      return date;
    }
    incompatibleTokens = ["a", "b", "h", "K", "k", "t", "T"];
  };

  // node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js
  var Hour0To11Parser = class extends Parser {
    priority = 70;
    parse(dateString, token, match3) {
      switch (token) {
        case "K":
          return parseNumericPattern(numericPatterns.hour11h, dateString);
        case "Ko":
          return match3.ordinalNumber(dateString, { unit: "hour" });
        default:
          return parseNDigits(token.length, dateString);
      }
    }
    validate(_date, value) {
      return value >= 0 && value <= 11;
    }
    set(date, _flags, value) {
      const isPM = date.getHours() >= 12;
      if (isPM && value < 12) {
        date.setHours(value + 12, 0, 0, 0);
      } else {
        date.setHours(value, 0, 0, 0);
      }
      return date;
    }
    incompatibleTokens = ["h", "H", "k", "t", "T"];
  };

  // node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js
  var Hour1To24Parser = class extends Parser {
    priority = 70;
    parse(dateString, token, match3) {
      switch (token) {
        case "k":
          return parseNumericPattern(numericPatterns.hour24h, dateString);
        case "ko":
          return match3.ordinalNumber(dateString, { unit: "hour" });
        default:
          return parseNDigits(token.length, dateString);
      }
    }
    validate(_date, value) {
      return value >= 1 && value <= 24;
    }
    set(date, _flags, value) {
      const hours = value <= 24 ? value % 24 : value;
      date.setHours(hours, 0, 0, 0);
      return date;
    }
    incompatibleTokens = ["a", "b", "h", "H", "K", "t", "T"];
  };

  // node_modules/date-fns/parse/_lib/parsers/MinuteParser.js
  var MinuteParser = class extends Parser {
    priority = 60;
    parse(dateString, token, match3) {
      switch (token) {
        case "m":
          return parseNumericPattern(numericPatterns.minute, dateString);
        case "mo":
          return match3.ordinalNumber(dateString, { unit: "minute" });
        default:
          return parseNDigits(token.length, dateString);
      }
    }
    validate(_date, value) {
      return value >= 0 && value <= 59;
    }
    set(date, _flags, value) {
      date.setMinutes(value, 0, 0);
      return date;
    }
    incompatibleTokens = ["t", "T"];
  };

  // node_modules/date-fns/parse/_lib/parsers/SecondParser.js
  var SecondParser = class extends Parser {
    priority = 50;
    parse(dateString, token, match3) {
      switch (token) {
        case "s":
          return parseNumericPattern(numericPatterns.second, dateString);
        case "so":
          return match3.ordinalNumber(dateString, { unit: "second" });
        default:
          return parseNDigits(token.length, dateString);
      }
    }
    validate(_date, value) {
      return value >= 0 && value <= 59;
    }
    set(date, _flags, value) {
      date.setSeconds(value, 0);
      return date;
    }
    incompatibleTokens = ["t", "T"];
  };

  // node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js
  var FractionOfSecondParser = class extends Parser {
    priority = 30;
    parse(dateString, token) {
      const valueCallback = (value) => Math.trunc(value * Math.pow(10, -token.length + 3));
      return mapValue(parseNDigits(token.length, dateString), valueCallback);
    }
    set(date, _flags, value) {
      date.setMilliseconds(value);
      return date;
    }
    incompatibleTokens = ["t", "T"];
  };

  // node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js
  var ISOTimezoneWithZParser = class extends Parser {
    priority = 10;
    parse(dateString, token) {
      switch (token) {
        case "X":
          return parseTimezonePattern(
            timezonePatterns.basicOptionalMinutes,
            dateString
          );
        case "XX":
          return parseTimezonePattern(timezonePatterns.basic, dateString);
        case "XXXX":
          return parseTimezonePattern(
            timezonePatterns.basicOptionalSeconds,
            dateString
          );
        case "XXXXX":
          return parseTimezonePattern(
            timezonePatterns.extendedOptionalSeconds,
            dateString
          );
        case "XXX":
        default:
          return parseTimezonePattern(timezonePatterns.extended, dateString);
      }
    }
    set(date, flags, value) {
      if (flags.timestampIsSet) return date;
      return constructFrom(
        date,
        date.getTime() - getTimezoneOffsetInMilliseconds(date) - value
      );
    }
    incompatibleTokens = ["t", "T", "x"];
  };

  // node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js
  var ISOTimezoneParser = class extends Parser {
    priority = 10;
    parse(dateString, token) {
      switch (token) {
        case "x":
          return parseTimezonePattern(
            timezonePatterns.basicOptionalMinutes,
            dateString
          );
        case "xx":
          return parseTimezonePattern(timezonePatterns.basic, dateString);
        case "xxxx":
          return parseTimezonePattern(
            timezonePatterns.basicOptionalSeconds,
            dateString
          );
        case "xxxxx":
          return parseTimezonePattern(
            timezonePatterns.extendedOptionalSeconds,
            dateString
          );
        case "xxx":
        default:
          return parseTimezonePattern(timezonePatterns.extended, dateString);
      }
    }
    set(date, flags, value) {
      if (flags.timestampIsSet) return date;
      return constructFrom(
        date,
        date.getTime() - getTimezoneOffsetInMilliseconds(date) - value
      );
    }
    incompatibleTokens = ["t", "T", "X"];
  };

  // node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js
  var TimestampSecondsParser = class extends Parser {
    priority = 40;
    parse(dateString) {
      return parseAnyDigitsSigned(dateString);
    }
    set(date, _flags, value) {
      return [constructFrom(date, value * 1e3), { timestampIsSet: true }];
    }
    incompatibleTokens = "*";
  };

  // node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js
  var TimestampMillisecondsParser = class extends Parser {
    priority = 20;
    parse(dateString) {
      return parseAnyDigitsSigned(dateString);
    }
    set(date, _flags, value) {
      return [constructFrom(date, value), { timestampIsSet: true }];
    }
    incompatibleTokens = "*";
  };

  // node_modules/date-fns/parse/_lib/parsers.js
  var parsers = {
    G: new EraParser(),
    y: new YearParser(),
    Y: new LocalWeekYearParser(),
    R: new ISOWeekYearParser(),
    u: new ExtendedYearParser(),
    Q: new QuarterParser(),
    q: new StandAloneQuarterParser(),
    M: new MonthParser(),
    L: new StandAloneMonthParser(),
    w: new LocalWeekParser(),
    I: new ISOWeekParser(),
    d: new DateParser(),
    D: new DayOfYearParser(),
    E: new DayParser(),
    e: new LocalDayParser(),
    c: new StandAloneLocalDayParser(),
    i: new ISODayParser(),
    a: new AMPMParser(),
    b: new AMPMMidnightParser(),
    B: new DayPeriodParser(),
    h: new Hour1to12Parser(),
    H: new Hour0to23Parser(),
    K: new Hour0To11Parser(),
    k: new Hour1To24Parser(),
    m: new MinuteParser(),
    s: new SecondParser(),
    S: new FractionOfSecondParser(),
    X: new ISOTimezoneWithZParser(),
    x: new ISOTimezoneParser(),
    t: new TimestampSecondsParser(),
    T: new TimestampMillisecondsParser()
  };

  // node_modules/date-fns/parse.js
  var formattingTokensRegExp2 = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g;
  var longFormattingTokensRegExp2 = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;
  var escapedStringRegExp2 = /^'([^]*?)'?$/;
  var doubleQuoteRegExp2 = /''/g;
  var notWhitespaceRegExp = /\S/;
  var unescapedLatinCharacterRegExp2 = /[a-zA-Z]/;
  function parse2(dateStr, formatStr, referenceDate, options) {
    const invalidDate = () => constructFrom(options?.in || referenceDate, NaN);
    const defaultOptions2 = getDefaultOptions2();
    const locale = options?.locale ?? defaultOptions2.locale ?? enUS;
    const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1;
    const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0;
    if (!formatStr)
      return dateStr ? invalidDate() : toDate(referenceDate, options?.in);
    const subFnOptions = {
      firstWeekContainsDate,
      weekStartsOn,
      locale
    };
    const setters = [new DateTimezoneSetter(options?.in, referenceDate)];
    const tokens = formatStr.match(longFormattingTokensRegExp2).map((substring) => {
      const firstCharacter = substring[0];
      if (firstCharacter in longFormatters) {
        const longFormatter = longFormatters[firstCharacter];
        return longFormatter(substring, locale.formatLong);
      }
      return substring;
    }).join("").match(formattingTokensRegExp2);
    const usedTokens = [];
    for (let token of tokens) {
      if (!options?.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {
        warnOrThrowProtectedError(token, formatStr, dateStr);
      }
      if (!options?.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {
        warnOrThrowProtectedError(token, formatStr, dateStr);
      }
      const firstCharacter = token[0];
      const parser = parsers[firstCharacter];
      if (parser) {
        const { incompatibleTokens } = parser;
        if (Array.isArray(incompatibleTokens)) {
          const incompatibleToken = usedTokens.find(
            (usedToken) => incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter
          );
          if (incompatibleToken) {
            throw new RangeError(
              `The format string mustn't contain \`${incompatibleToken.fullToken}\` and \`${token}\` at the same time`
            );
          }
        } else if (parser.incompatibleTokens === "*" && usedTokens.length > 0) {
          throw new RangeError(
            `The format string mustn't contain \`${token}\` and any other token at the same time`
          );
        }
        usedTokens.push({ token: firstCharacter, fullToken: token });
        const parseResult = parser.run(
          dateStr,
          token,
          locale.match,
          subFnOptions
        );
        if (!parseResult) {
          return invalidDate();
        }
        setters.push(parseResult.setter);
        dateStr = parseResult.rest;
      } else {
        if (firstCharacter.match(unescapedLatinCharacterRegExp2)) {
          throw new RangeError(
            "Format string contains an unescaped latin alphabet character `" + firstCharacter + "`"
          );
        }
        if (token === "''") {
          token = "'";
        } else if (firstCharacter === "'") {
          token = cleanEscapedString2(token);
        }
        if (dateStr.indexOf(token) === 0) {
          dateStr = dateStr.slice(token.length);
        } else {
          return invalidDate();
        }
      }
    }
    if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {
      return invalidDate();
    }
    const uniquePrioritySetters = setters.map((setter) => setter.priority).sort((a2, b2) => b2 - a2).filter((priority2, index3, array) => array.indexOf(priority2) === index3).map(
      (priority2) => setters.filter((setter) => setter.priority === priority2).sort((a2, b2) => b2.subPriority - a2.subPriority)
    ).map((setterArray) => setterArray[0]);
    let date = toDate(referenceDate, options?.in);
    if (isNaN(+date)) return invalidDate();
    const flags = {};
    for (const setter of uniquePrioritySetters) {
      if (!setter.validate(date, subFnOptions)) {
        return invalidDate();
      }
      const result = setter.set(date, flags, subFnOptions);
      if (Array.isArray(result)) {
        date = result[0];
        Object.assign(flags, result[1]);
      } else {
        date = result;
      }
    }
    return date;
  }
  function cleanEscapedString2(input) {
    return input.match(escapedStringRegExp2)[1].replace(doubleQuoteRegExp2, "'");
  }

  // node_modules/date-fns/isSameMonth.js
  function isSameMonth(laterDate, earlierDate, options) {
    const [laterDate_, earlierDate_] = normalizeDates(
      options?.in,
      laterDate,
      earlierDate
    );
    return laterDate_.getFullYear() === earlierDate_.getFullYear() && laterDate_.getMonth() === earlierDate_.getMonth();
  }

  // node_modules/date-fns/isSameYear.js
  function isSameYear(laterDate, earlierDate, options) {
    const [laterDate_, earlierDate_] = normalizeDates(
      options?.in,
      laterDate,
      earlierDate
    );
    return laterDate_.getFullYear() === earlierDate_.getFullYear();
  }

  // node_modules/date-fns/subDays.js
  function subDays(date, amount, options) {
    return addDays(date, -amount, options);
  }

  // node_modules/date-fns/parseISO.js
  function parseISO(argument, options) {
    const invalidDate = () => constructFrom(options?.in, NaN);
    const additionalDigits = options?.additionalDigits ?? 2;
    const dateStrings = splitDateString(argument);
    let date;
    if (dateStrings.date) {
      const parseYearResult = parseYear(dateStrings.date, additionalDigits);
      date = parseDate(parseYearResult.restDateString, parseYearResult.year);
    }
    if (!date || isNaN(+date)) return invalidDate();
    const timestamp = +date;
    let time = 0;
    let offset4;
    if (dateStrings.time) {
      time = parseTime(dateStrings.time);
      if (isNaN(time)) return invalidDate();
    }
    if (dateStrings.timezone) {
      offset4 = parseTimezone(dateStrings.timezone);
      if (isNaN(offset4)) return invalidDate();
    } else {
      const tmpDate = new Date(timestamp + time);
      const result = toDate(0, options?.in);
      result.setFullYear(
        tmpDate.getUTCFullYear(),
        tmpDate.getUTCMonth(),
        tmpDate.getUTCDate()
      );
      result.setHours(
        tmpDate.getUTCHours(),
        tmpDate.getUTCMinutes(),
        tmpDate.getUTCSeconds(),
        tmpDate.getUTCMilliseconds()
      );
      return result;
    }
    return toDate(timestamp + time + offset4, options?.in);
  }
  var patterns = {
    dateTimeDelimiter: /[T ]/,
    timeZoneDelimiter: /[Z ]/i,
    timezone: /([Z+-].*)$/
  };
  var dateRegex = /^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/;
  var timeRegex = /^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/;
  var timezoneRegex = /^([+-])(\d{2})(?::?(\d{2}))?$/;
  function splitDateString(dateString) {
    const dateStrings = {};
    const array = dateString.split(patterns.dateTimeDelimiter);
    let timeString;
    if (array.length > 2) {
      return dateStrings;
    }
    if (/:/.test(array[0])) {
      timeString = array[0];
    } else {
      dateStrings.date = array[0];
      timeString = array[1];
      if (patterns.timeZoneDelimiter.test(dateStrings.date)) {
        dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];
        timeString = dateString.substr(
          dateStrings.date.length,
          dateString.length
        );
      }
    }
    if (timeString) {
      const token = patterns.timezone.exec(timeString);
      if (token) {
        dateStrings.time = timeString.replace(token[1], "");
        dateStrings.timezone = token[1];
      } else {
        dateStrings.time = timeString;
      }
    }
    return dateStrings;
  }
  function parseYear(dateString, additionalDigits) {
    const regex = new RegExp(
      "^(?:(\\d{4}|[+-]\\d{" + (4 + additionalDigits) + "})|(\\d{2}|[+-]\\d{" + (2 + additionalDigits) + "})$)"
    );
    const captures = dateString.match(regex);
    if (!captures) return { year: NaN, restDateString: "" };
    const year = captures[1] ? parseInt(captures[1]) : null;
    const century = captures[2] ? parseInt(captures[2]) : null;
    return {
      year: century === null ? year : century * 100,
      restDateString: dateString.slice((captures[1] || captures[2]).length)
    };
  }
  function parseDate(dateString, year) {
    if (year === null) return /* @__PURE__ */ new Date(NaN);
    const captures = dateString.match(dateRegex);
    if (!captures) return /* @__PURE__ */ new Date(NaN);
    const isWeekDate = !!captures[4];
    const dayOfYear = parseDateUnit(captures[1]);
    const month = parseDateUnit(captures[2]) - 1;
    const day = parseDateUnit(captures[3]);
    const week = parseDateUnit(captures[4]);
    const dayOfWeek = parseDateUnit(captures[5]) - 1;
    if (isWeekDate) {
      if (!validateWeekDate(year, week, dayOfWeek)) {
        return /* @__PURE__ */ new Date(NaN);
      }
      return dayOfISOWeekYear(year, week, dayOfWeek);
    } else {
      const date = /* @__PURE__ */ new Date(0);
      if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {
        return /* @__PURE__ */ new Date(NaN);
      }
      date.setUTCFullYear(year, month, Math.max(dayOfYear, day));
      return date;
    }
  }
  function parseDateUnit(value) {
    return value ? parseInt(value) : 1;
  }
  function parseTime(timeString) {
    const captures = timeString.match(timeRegex);
    if (!captures) return NaN;
    const hours = parseTimeUnit(captures[1]);
    const minutes = parseTimeUnit(captures[2]);
    const seconds = parseTimeUnit(captures[3]);
    if (!validateTime(hours, minutes, seconds)) {
      return NaN;
    }
    return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1e3;
  }
  function parseTimeUnit(value) {
    return value && parseFloat(value.replace(",", ".")) || 0;
  }
  function parseTimezone(timezoneString) {
    if (timezoneString === "Z") return 0;
    const captures = timezoneString.match(timezoneRegex);
    if (!captures) return 0;
    const sign = captures[1] === "+" ? -1 : 1;
    const hours = parseInt(captures[2]);
    const minutes = captures[3] && parseInt(captures[3]) || 0;
    if (!validateTimezone(hours, minutes)) {
      return NaN;
    }
    return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);
  }
  function dayOfISOWeekYear(isoWeekYear, week, day) {
    const date = /* @__PURE__ */ new Date(0);
    date.setUTCFullYear(isoWeekYear, 0, 4);
    const fourthOfJanuaryDay = date.getUTCDay() || 7;
    const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;
    date.setUTCDate(date.getUTCDate() + diff);
    return date;
  }
  var daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  function isLeapYearIndex2(year) {
    return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;
  }
  function validateDate(year, month, date) {
    return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex2(year) ? 29 : 28));
  }
  function validateDayOfYearDate(year, dayOfYear) {
    return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex2(year) ? 366 : 365);
  }
  function validateWeekDate(_year, week, day) {
    return week >= 1 && week <= 53 && day >= 0 && day <= 6;
  }
  function validateTime(hours, minutes, seconds) {
    if (hours === 24) {
      return minutes === 0 && seconds === 0;
    }
    return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;
  }
  function validateTimezone(_hours, minutes) {
    return minutes >= 0 && minutes <= 59;
  }

  // node_modules/date-fns/setMonth.js
  function setMonth(date, month, options) {
    const _date = toDate(date, options?.in);
    const year = _date.getFullYear();
    const day = _date.getDate();
    const midMonth = constructFrom(options?.in || date, 0);
    midMonth.setFullYear(year, month, 15);
    midMonth.setHours(0, 0, 0, 0);
    const daysInMonth = getDaysInMonth(midMonth);
    _date.setMonth(month, Math.min(day, daysInMonth));
    return _date;
  }

  // node_modules/date-fns/setYear.js
  function setYear(date, year, options) {
    const date_ = toDate(date, options?.in);
    if (isNaN(+date_)) return constructFrom(options?.in || date, NaN);
    date_.setFullYear(year);
    return date_;
  }

  // node_modules/date-fns/subMonths.js
  function subMonths(date, amount, options) {
    return addMonths(date, -amount, options);
  }

  // node_modules/date-fns/subWeeks.js
  function subWeeks(date, amount, options) {
    return addWeeks(date, -amount, options);
  }

  // node_modules/date-fns/subYears.js
  function subYears(date, amount, options) {
    return addYears(date, -amount, options);
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js
  var FIVE_WEEKS = 5;
  var FOUR_WEEKS = 4;
  function getBroadcastWeeksInMonth(month, dateLib) {
    const firstDayOfMonth = dateLib.startOfMonth(month);
    const firstDayOfWeek = firstDayOfMonth.getDay() > 0 ? firstDayOfMonth.getDay() : 7;
    const broadcastStartDate = dateLib.addDays(month, -firstDayOfWeek + 1);
    const lastDateOfLastWeek = dateLib.addDays(broadcastStartDate, FIVE_WEEKS * 7 - 1);
    const numberOfWeeks = dateLib.getMonth(month) === dateLib.getMonth(lastDateOfLastWeek) ? FIVE_WEEKS : FOUR_WEEKS;
    return numberOfWeeks;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js
  function startOfBroadcastWeek(date, dateLib) {
    const firstOfMonth = dateLib.startOfMonth(date);
    const dayOfWeek = firstOfMonth.getDay();
    if (dayOfWeek === 1) {
      return firstOfMonth;
    } else if (dayOfWeek === 0) {
      return dateLib.addDays(firstOfMonth, -1 * 6);
    } else {
      return dateLib.addDays(firstOfMonth, -1 * (dayOfWeek - 1));
    }
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js
  function endOfBroadcastWeek(date, dateLib) {
    const startDate2 = startOfBroadcastWeek(date, dateLib);
    const numberOfWeeks = getBroadcastWeeksInMonth(date, dateLib);
    const endDate = dateLib.addDays(startDate2, numberOfWeeks * 7 - 1);
    return endDate;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/locale/en-US.js
  var enUS2 = {
    ...enUS,
    labels: {
      labelDayButton: (date, modifiers, options, dateLib) => {
        let formatDate2;
        if (dateLib && typeof dateLib.format === "function") {
          formatDate2 = dateLib.format.bind(dateLib);
        } else {
          formatDate2 = (d2, pattern) => format(d2, pattern, { locale: enUS, ...options });
        }
        let label = formatDate2(date, "PPPP");
        if (modifiers.today)
          label = `Today, ${label}`;
        if (modifiers.selected)
          label = `${label}, selected`;
        return label;
      },
      labelMonthDropdown: "Choose the Month",
      labelNext: "Go to the Next Month",
      labelPrevious: "Go to the Previous Month",
      labelWeekNumber: (weekNumber) => `Week ${weekNumber}`,
      labelYearDropdown: "Choose the Year",
      labelGrid: (date, options, dateLib) => {
        let formatDate2;
        if (dateLib && typeof dateLib.format === "function") {
          formatDate2 = dateLib.format.bind(dateLib);
        } else {
          formatDate2 = (d2, pattern) => format(d2, pattern, { locale: enUS, ...options });
        }
        return formatDate2(date, "LLLL yyyy");
      },
      labelGridcell: (date, modifiers, options, dateLib) => {
        let formatDate2;
        if (dateLib && typeof dateLib.format === "function") {
          formatDate2 = dateLib.format.bind(dateLib);
        } else {
          formatDate2 = (d2, pattern) => format(d2, pattern, { locale: enUS, ...options });
        }
        let label = formatDate2(date, "PPPP");
        if (modifiers?.today) {
          label = `Today, ${label}`;
        }
        return label;
      },
      labelNav: "Navigation bar",
      labelWeekNumberHeader: "Week Number",
      labelWeekday: (date, options, dateLib) => {
        let formatDate2;
        if (dateLib && typeof dateLib.format === "function") {
          formatDate2 = dateLib.format.bind(dateLib);
        } else {
          formatDate2 = (d2, pattern) => format(d2, pattern, { locale: enUS, ...options });
        }
        return formatDate2(date, "cccc");
      }
    }
  };

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/classes/DateLib.js
  var DateLib = class _DateLib {
    /**
     * Creates an instance of `DateLib`.
     *
     * @param options Configuration options for the date library.
     * @param overrides Custom overrides for the date library functions.
     */
    constructor(options, overrides) {
      this.today = () => {
        if (this.overrides?.today) {
          return this.overrides.today();
        }
        if (this.options.timeZone) {
          return TZDate.tz(this.options.timeZone);
        }
        const DateCtor = this.options.Date ?? Date;
        return new DateCtor();
      };
      this.newDate = (year, monthIndex, date) => {
        if (this.overrides?.newDate) {
          return this.overrides.newDate(year, monthIndex, date);
        }
        if (this.options.timeZone) {
          return new TZDate(year, monthIndex, date, this.options.timeZone);
        }
        return new Date(year, monthIndex, date);
      };
      this.addDays = (date, amount) => {
        return this.overrides?.addDays ? this.overrides.addDays(date, amount) : addDays(date, amount);
      };
      this.addMonths = (date, amount) => {
        return this.overrides?.addMonths ? this.overrides.addMonths(date, amount) : addMonths(date, amount);
      };
      this.addWeeks = (date, amount) => {
        return this.overrides?.addWeeks ? this.overrides.addWeeks(date, amount) : addWeeks(date, amount);
      };
      this.addYears = (date, amount) => {
        return this.overrides?.addYears ? this.overrides.addYears(date, amount) : addYears(date, amount);
      };
      this.differenceInCalendarDays = (dateLeft, dateRight) => {
        return this.overrides?.differenceInCalendarDays ? this.overrides.differenceInCalendarDays(dateLeft, dateRight) : differenceInCalendarDays(dateLeft, dateRight);
      };
      this.differenceInCalendarMonths = (dateLeft, dateRight) => {
        return this.overrides?.differenceInCalendarMonths ? this.overrides.differenceInCalendarMonths(dateLeft, dateRight) : differenceInCalendarMonths(dateLeft, dateRight);
      };
      this.eachMonthOfInterval = (interval) => {
        return this.overrides?.eachMonthOfInterval ? this.overrides.eachMonthOfInterval(interval) : eachMonthOfInterval(interval);
      };
      this.eachYearOfInterval = (interval) => {
        const years = this.overrides?.eachYearOfInterval ? this.overrides.eachYearOfInterval(interval) : eachYearOfInterval(interval);
        const uniqueYears = new Set(years.map((d2) => this.getYear(d2)));
        if (uniqueYears.size === years.length) {
          return years;
        }
        const yearsArray = [];
        uniqueYears.forEach((y3) => {
          yearsArray.push(new Date(y3, 0, 1));
        });
        return yearsArray;
      };
      this.endOfBroadcastWeek = (date) => {
        return this.overrides?.endOfBroadcastWeek ? this.overrides.endOfBroadcastWeek(date) : endOfBroadcastWeek(date, this);
      };
      this.endOfISOWeek = (date) => {
        return this.overrides?.endOfISOWeek ? this.overrides.endOfISOWeek(date) : endOfISOWeek(date);
      };
      this.endOfMonth = (date) => {
        return this.overrides?.endOfMonth ? this.overrides.endOfMonth(date) : endOfMonth(date);
      };
      this.endOfWeek = (date, options2) => {
        return this.overrides?.endOfWeek ? this.overrides.endOfWeek(date, options2) : endOfWeek(date, this.options);
      };
      this.endOfYear = (date) => {
        return this.overrides?.endOfYear ? this.overrides.endOfYear(date) : endOfYear(date);
      };
      this.format = (date, formatStr, _options) => {
        const formatted = this.overrides?.format ? this.overrides.format(date, formatStr, this.options) : format(date, formatStr, this.options);
        if (this.options.numerals && this.options.numerals !== "latn") {
          return this.replaceDigits(formatted);
        }
        return formatted;
      };
      this.getISOWeek = (date) => {
        return this.overrides?.getISOWeek ? this.overrides.getISOWeek(date) : getISOWeek(date);
      };
      this.getMonth = (date, _options) => {
        return this.overrides?.getMonth ? this.overrides.getMonth(date, this.options) : getMonth(date, this.options);
      };
      this.getYear = (date, _options) => {
        return this.overrides?.getYear ? this.overrides.getYear(date, this.options) : getYear(date, this.options);
      };
      this.getWeek = (date, _options) => {
        return this.overrides?.getWeek ? this.overrides.getWeek(date, this.options) : getWeek(date, this.options);
      };
      this.isAfter = (date, dateToCompare) => {
        return this.overrides?.isAfter ? this.overrides.isAfter(date, dateToCompare) : isAfter(date, dateToCompare);
      };
      this.isBefore = (date, dateToCompare) => {
        return this.overrides?.isBefore ? this.overrides.isBefore(date, dateToCompare) : isBefore(date, dateToCompare);
      };
      this.isDate = (value) => {
        return this.overrides?.isDate ? this.overrides.isDate(value) : isDate(value);
      };
      this.isSameDay = (dateLeft, dateRight) => {
        return this.overrides?.isSameDay ? this.overrides.isSameDay(dateLeft, dateRight) : isSameDay(dateLeft, dateRight);
      };
      this.isSameMonth = (dateLeft, dateRight) => {
        return this.overrides?.isSameMonth ? this.overrides.isSameMonth(dateLeft, dateRight) : isSameMonth(dateLeft, dateRight);
      };
      this.isSameYear = (dateLeft, dateRight) => {
        return this.overrides?.isSameYear ? this.overrides.isSameYear(dateLeft, dateRight) : isSameYear(dateLeft, dateRight);
      };
      this.max = (dates) => {
        return this.overrides?.max ? this.overrides.max(dates) : max2(dates);
      };
      this.min = (dates) => {
        return this.overrides?.min ? this.overrides.min(dates) : min2(dates);
      };
      this.setMonth = (date, month) => {
        return this.overrides?.setMonth ? this.overrides.setMonth(date, month) : setMonth(date, month);
      };
      this.setYear = (date, year) => {
        return this.overrides?.setYear ? this.overrides.setYear(date, year) : setYear(date, year);
      };
      this.startOfBroadcastWeek = (date, _dateLib) => {
        return this.overrides?.startOfBroadcastWeek ? this.overrides.startOfBroadcastWeek(date, this) : startOfBroadcastWeek(date, this);
      };
      this.startOfDay = (date) => {
        return this.overrides?.startOfDay ? this.overrides.startOfDay(date) : startOfDay(date);
      };
      this.startOfISOWeek = (date) => {
        return this.overrides?.startOfISOWeek ? this.overrides.startOfISOWeek(date) : startOfISOWeek(date);
      };
      this.startOfMonth = (date) => {
        return this.overrides?.startOfMonth ? this.overrides.startOfMonth(date) : startOfMonth(date);
      };
      this.startOfWeek = (date, _options) => {
        return this.overrides?.startOfWeek ? this.overrides.startOfWeek(date, this.options) : startOfWeek(date, this.options);
      };
      this.startOfYear = (date) => {
        return this.overrides?.startOfYear ? this.overrides.startOfYear(date) : startOfYear(date);
      };
      this.options = { locale: enUS2, ...options };
      this.overrides = overrides;
    }
    /**
     * Generates a mapping of Arabic digits (0-9) to the target numbering system
     * digits.
     *
     * @since 9.5.0
     * @returns A record mapping Arabic digits to the target numerals.
     */
    getDigitMap() {
      const { numerals = "latn" } = this.options;
      const formatter = new Intl.NumberFormat("en-US", {
        numberingSystem: numerals
      });
      const digitMap = {};
      for (let i2 = 0; i2 < 10; i2++) {
        digitMap[i2.toString()] = formatter.format(i2);
      }
      return digitMap;
    }
    /**
     * Replaces Arabic digits in a string with the target numbering system digits.
     *
     * @since 9.5.0
     * @param input The string containing Arabic digits.
     * @returns The string with digits replaced.
     */
    replaceDigits(input) {
      const digitMap = this.getDigitMap();
      return input.replace(/\d/g, (digit) => digitMap[digit] || digit);
    }
    /**
     * Formats a number using the configured numbering system.
     *
     * @since 9.5.0
     * @param value The number to format.
     * @returns The formatted number as a string.
     */
    formatNumber(value) {
      return this.replaceDigits(value.toString());
    }
    /**
     * Returns the preferred ordering for month and year labels for the current
     * locale.
     */
    getMonthYearOrder() {
      const code = this.options.locale?.code;
      if (!code) {
        return "month-first";
      }
      return _DateLib.yearFirstLocales.has(code) ? "year-first" : "month-first";
    }
    /**
     * Formats the month/year pair respecting locale conventions.
     *
     * @since 9.11.0
     */
    formatMonthYear(date) {
      const { locale, timeZone, numerals } = this.options;
      const localeCode = locale?.code;
      if (localeCode && _DateLib.yearFirstLocales.has(localeCode)) {
        try {
          const intl = new Intl.DateTimeFormat(localeCode, {
            month: "long",
            year: "numeric",
            timeZone,
            numberingSystem: numerals
          });
          const formatted = intl.format(date);
          return formatted;
        } catch {
        }
      }
      const pattern = this.getMonthYearOrder() === "year-first" ? "y LLLL" : "LLLL y";
      return this.format(date, pattern);
    }
  };
  DateLib.yearFirstLocales = /* @__PURE__ */ new Set([
    "eu",
    "hu",
    "ja",
    "ja-Hira",
    "ja-JP",
    "ko",
    "ko-KR",
    "lt",
    "lt-LT",
    "lv",
    "lv-LV",
    "mn",
    "mn-MN",
    "zh",
    "zh-CN",
    "zh-HK",
    "zh-TW"
  ]);
  var defaultDateLib = new DateLib();

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js
  var CalendarDay = class {
    constructor(date, displayMonth, dateLib = defaultDateLib) {
      this.date = date;
      this.displayMonth = displayMonth;
      this.outside = Boolean(displayMonth && !dateLib.isSameMonth(date, displayMonth));
      this.dateLib = dateLib;
      this.isoDate = dateLib.format(date, "yyyy-MM-dd");
      this.displayMonthId = dateLib.format(displayMonth, "yyyy-MM");
      this.dateMonthId = dateLib.format(date, "yyyy-MM");
    }
    /**
     * Checks if this day is equal to another `CalendarDay`, considering both the
     * date and the displayed month.
     *
     * @param day The `CalendarDay` to compare with.
     * @returns `true` if the days are equal, otherwise `false`.
     */
    isEqualTo(day) {
      return this.dateLib.isSameDay(day.date, this.date) && this.dateLib.isSameMonth(day.displayMonth, this.displayMonth);
    }
  };

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js
  var CalendarMonth = class {
    constructor(month, weeks) {
      this.date = month;
      this.weeks = weeks;
    }
  };

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js
  var CalendarWeek = class {
    constructor(weekNumber, days) {
      this.days = days;
      this.weekNumber = weekNumber;
    }
  };

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/custom-components.js
  var custom_components_exports = {};
  __export(custom_components_exports, {
    CaptionLabel: () => CaptionLabel,
    Chevron: () => Chevron,
    Day: () => Day,
    DayButton: () => DayButton,
    Dropdown: () => Dropdown,
    DropdownNav: () => DropdownNav,
    Footer: () => Footer,
    Month: () => Month,
    MonthCaption: () => MonthCaption,
    MonthGrid: () => MonthGrid,
    Months: () => Months,
    MonthsDropdown: () => MonthsDropdown,
    Nav: () => Nav,
    NextMonthButton: () => NextMonthButton,
    Option: () => Option,
    PreviousMonthButton: () => PreviousMonthButton,
    Root: () => Root3,
    Select: () => Select,
    Week: () => Week,
    WeekNumber: () => WeekNumber,
    WeekNumberHeader: () => WeekNumberHeader,
    Weekday: () => Weekday,
    Weekdays: () => Weekdays,
    Weeks: () => Weeks,
    YearsDropdown: () => YearsDropdown
  });

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/CaptionLabel.js
  var import_react6 = __toESM(require_react(), 1);
  function CaptionLabel(props) {
    return import_react6.default.createElement("span", { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Chevron.js
  var import_react7 = __toESM(require_react(), 1);
  function Chevron(props) {
    const { size: size4 = 24, orientation = "left", className, style } = props;
    return import_react7.default.createElement(
      "svg",
      { className, style, width: size4, height: size4, viewBox: "0 0 24 24" },
      orientation === "up" && import_react7.default.createElement("polygon", { points: "6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28" }),
      orientation === "down" && import_react7.default.createElement("polygon", { points: "6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72" }),
      orientation === "left" && import_react7.default.createElement("polygon", { points: "16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20" }),
      orientation === "right" && import_react7.default.createElement("polygon", { points: "8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20" })
    );
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Day.js
  var import_react8 = __toESM(require_react(), 1);
  function Day(props) {
    const { day, modifiers, ...tdProps } = props;
    return import_react8.default.createElement("td", { ...tdProps });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/DayButton.js
  var import_react9 = __toESM(require_react(), 1);
  function DayButton(props) {
    const { day, modifiers, ...buttonProps } = props;
    const ref = import_react9.default.useRef(null);
    import_react9.default.useEffect(() => {
      if (modifiers.focused)
        ref.current?.focus();
    }, [modifiers.focused]);
    return import_react9.default.createElement("button", { ref, ...buttonProps });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Dropdown.js
  var import_react11 = __toESM(require_react(), 1);

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/UI.js
  var UI;
  (function(UI2) {
    UI2["Root"] = "root";
    UI2["Chevron"] = "chevron";
    UI2["Day"] = "day";
    UI2["DayButton"] = "day_button";
    UI2["CaptionLabel"] = "caption_label";
    UI2["Dropdowns"] = "dropdowns";
    UI2["Dropdown"] = "dropdown";
    UI2["DropdownRoot"] = "dropdown_root";
    UI2["Footer"] = "footer";
    UI2["MonthGrid"] = "month_grid";
    UI2["MonthCaption"] = "month_caption";
    UI2["MonthsDropdown"] = "months_dropdown";
    UI2["Month"] = "month";
    UI2["Months"] = "months";
    UI2["Nav"] = "nav";
    UI2["NextMonthButton"] = "button_next";
    UI2["PreviousMonthButton"] = "button_previous";
    UI2["Week"] = "week";
    UI2["Weeks"] = "weeks";
    UI2["Weekday"] = "weekday";
    UI2["Weekdays"] = "weekdays";
    UI2["WeekNumber"] = "week_number";
    UI2["WeekNumberHeader"] = "week_number_header";
    UI2["YearsDropdown"] = "years_dropdown";
  })(UI || (UI = {}));
  var DayFlag;
  (function(DayFlag2) {
    DayFlag2["disabled"] = "disabled";
    DayFlag2["hidden"] = "hidden";
    DayFlag2["outside"] = "outside";
    DayFlag2["focused"] = "focused";
    DayFlag2["today"] = "today";
  })(DayFlag || (DayFlag = {}));
  var SelectionState;
  (function(SelectionState2) {
    SelectionState2["range_end"] = "range_end";
    SelectionState2["range_middle"] = "range_middle";
    SelectionState2["range_start"] = "range_start";
    SelectionState2["selected"] = "selected";
  })(SelectionState || (SelectionState = {}));
  var Animation;
  (function(Animation3) {
    Animation3["weeks_before_enter"] = "weeks_before_enter";
    Animation3["weeks_before_exit"] = "weeks_before_exit";
    Animation3["weeks_after_enter"] = "weeks_after_enter";
    Animation3["weeks_after_exit"] = "weeks_after_exit";
    Animation3["caption_after_enter"] = "caption_after_enter";
    Animation3["caption_after_exit"] = "caption_after_exit";
    Animation3["caption_before_enter"] = "caption_before_enter";
    Animation3["caption_before_exit"] = "caption_before_exit";
  })(Animation || (Animation = {}));

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useDayPicker.js
  var import_react10 = __toESM(require_react(), 1);
  var dayPickerContext = (0, import_react10.createContext)(void 0);
  function useDayPicker() {
    const context = (0, import_react10.useContext)(dayPickerContext);
    if (context === void 0) {
      throw new Error("useDayPicker() must be used within a custom component.");
    }
    return context;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Dropdown.js
  function Dropdown(props) {
    const { options, className, ...selectProps } = props;
    const { classNames, components, styles } = useDayPicker();
    const cssClassSelect = [classNames[UI.Dropdown], className].join(" ");
    const selectedOption = options?.find(({ value }) => value === selectProps.value);
    return import_react11.default.createElement(
      "span",
      { "data-disabled": selectProps.disabled, className: classNames[UI.DropdownRoot], style: styles?.[UI.DropdownRoot] },
      import_react11.default.createElement(components.Select, { className: cssClassSelect, ...selectProps }, options?.map(({ value, label, disabled: disabled2 }) => import_react11.default.createElement(components.Option, { key: value, value, disabled: disabled2 }, label))),
      import_react11.default.createElement(
        "span",
        { className: classNames[UI.CaptionLabel], style: styles?.[UI.CaptionLabel], "aria-hidden": true },
        selectedOption?.label,
        import_react11.default.createElement(components.Chevron, { orientation: "down", size: 18, className: classNames[UI.Chevron], style: styles?.[UI.Chevron] })
      )
    );
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/DropdownNav.js
  var import_react12 = __toESM(require_react(), 1);
  function DropdownNav(props) {
    return import_react12.default.createElement("div", { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Footer.js
  var import_react13 = __toESM(require_react(), 1);
  function Footer(props) {
    return import_react13.default.createElement("div", { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Month.js
  var import_react14 = __toESM(require_react(), 1);
  function Month(props) {
    const { calendarMonth, displayIndex, ...divProps } = props;
    return import_react14.default.createElement("div", { ...divProps }, props.children);
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/MonthCaption.js
  var import_react15 = __toESM(require_react(), 1);
  function MonthCaption(props) {
    const { calendarMonth, displayIndex, ...divProps } = props;
    return import_react15.default.createElement("div", { ...divProps });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/MonthGrid.js
  var import_react16 = __toESM(require_react(), 1);
  function MonthGrid(props) {
    return import_react16.default.createElement("table", { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Months.js
  var import_react17 = __toESM(require_react(), 1);
  function Months(props) {
    return import_react17.default.createElement("div", { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js
  var import_react18 = __toESM(require_react(), 1);
  function MonthsDropdown(props) {
    const { components } = useDayPicker();
    return import_react18.default.createElement(components.Dropdown, { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Nav.js
  var import_react19 = __toESM(require_react(), 1);
  function Nav(props) {
    const { onPreviousClick, onNextClick, previousMonth, nextMonth, ...navProps } = props;
    const { components, classNames, styles, labels: { labelPrevious: labelPrevious2, labelNext: labelNext2 } } = useDayPicker();
    const handleNextClick = (0, import_react19.useCallback)((e2) => {
      if (nextMonth) {
        onNextClick?.(e2);
      }
    }, [nextMonth, onNextClick]);
    const handlePreviousClick = (0, import_react19.useCallback)((e2) => {
      if (previousMonth) {
        onPreviousClick?.(e2);
      }
    }, [previousMonth, onPreviousClick]);
    return import_react19.default.createElement(
      "nav",
      { ...navProps },
      import_react19.default.createElement(
        components.PreviousMonthButton,
        { type: "button", className: classNames[UI.PreviousMonthButton], style: styles?.[UI.PreviousMonthButton], tabIndex: previousMonth ? void 0 : -1, "aria-disabled": previousMonth ? void 0 : true, "aria-label": labelPrevious2(previousMonth), onClick: handlePreviousClick },
        import_react19.default.createElement(components.Chevron, { disabled: previousMonth ? void 0 : true, className: classNames[UI.Chevron], style: styles?.[UI.Chevron], orientation: "left" })
      ),
      import_react19.default.createElement(
        components.NextMonthButton,
        { type: "button", className: classNames[UI.NextMonthButton], style: styles?.[UI.NextMonthButton], tabIndex: nextMonth ? void 0 : -1, "aria-disabled": nextMonth ? void 0 : true, "aria-label": labelNext2(nextMonth), onClick: handleNextClick },
        import_react19.default.createElement(components.Chevron, { disabled: nextMonth ? void 0 : true, orientation: "right", className: classNames[UI.Chevron], style: styles?.[UI.Chevron] })
      )
    );
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/NextMonthButton.js
  var import_react20 = __toESM(require_react(), 1);
  function NextMonthButton(props) {
    return import_react20.default.createElement("button", { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Option.js
  var import_react21 = __toESM(require_react(), 1);
  function Option(props) {
    return import_react21.default.createElement("option", { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js
  var import_react22 = __toESM(require_react(), 1);
  function PreviousMonthButton(props) {
    return import_react22.default.createElement("button", { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Root.js
  var import_react23 = __toESM(require_react(), 1);
  function Root3(props) {
    const { rootRef, ...rest } = props;
    return import_react23.default.createElement("div", { ...rest, ref: rootRef });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Select.js
  var import_react24 = __toESM(require_react(), 1);
  function Select(props) {
    return import_react24.default.createElement("select", { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Week.js
  var import_react25 = __toESM(require_react(), 1);
  function Week(props) {
    const { week, ...trProps } = props;
    return import_react25.default.createElement("tr", { ...trProps });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Weekday.js
  var import_react26 = __toESM(require_react(), 1);
  function Weekday(props) {
    return import_react26.default.createElement("th", { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Weekdays.js
  var import_react27 = __toESM(require_react(), 1);
  function Weekdays(props) {
    return import_react27.default.createElement(
      "thead",
      { "aria-hidden": true },
      import_react27.default.createElement("tr", { ...props })
    );
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/WeekNumber.js
  var import_react28 = __toESM(require_react(), 1);
  function WeekNumber(props) {
    const { week, ...thProps } = props;
    return import_react28.default.createElement("th", { ...thProps });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js
  var import_react29 = __toESM(require_react(), 1);
  function WeekNumberHeader(props) {
    return import_react29.default.createElement("th", { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Weeks.js
  var import_react30 = __toESM(require_react(), 1);
  function Weeks(props) {
    return import_react30.default.createElement("tbody", { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/YearsDropdown.js
  var import_react31 = __toESM(require_react(), 1);
  function YearsDropdown(props) {
    const { components } = useDayPicker();
    return import_react31.default.createElement(components.Dropdown, { ...props });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/DayPicker.js
  var import_react36 = __toESM(require_react(), 1);

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js
  function rangeIncludesDate(range, date, excludeEnds = false, dateLib = defaultDateLib) {
    let { from, to: to2 } = range;
    const { differenceInCalendarDays: differenceInCalendarDays2, isSameDay: isSameDay3 } = dateLib;
    if (from && to2) {
      const isRangeInverted = differenceInCalendarDays2(to2, from) < 0;
      if (isRangeInverted) {
        [from, to2] = [to2, from];
      }
      const isInRange = differenceInCalendarDays2(date, from) >= (excludeEnds ? 1 : 0) && differenceInCalendarDays2(to2, date) >= (excludeEnds ? 1 : 0);
      return isInRange;
    }
    if (!excludeEnds && to2) {
      return isSameDay3(to2, date);
    }
    if (!excludeEnds && from) {
      return isSameDay3(from, date);
    }
    return false;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/typeguards.js
  function isDateInterval(matcher) {
    return Boolean(matcher && typeof matcher === "object" && "before" in matcher && "after" in matcher);
  }
  function isDateRange(value) {
    return Boolean(value && typeof value === "object" && "from" in value);
  }
  function isDateAfterType(value) {
    return Boolean(value && typeof value === "object" && "after" in value);
  }
  function isDateBeforeType(value) {
    return Boolean(value && typeof value === "object" && "before" in value);
  }
  function isDayOfWeekType(value) {
    return Boolean(value && typeof value === "object" && "dayOfWeek" in value);
  }
  function isDatesArray(value, dateLib) {
    return Array.isArray(value) && value.every(dateLib.isDate);
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js
  function dateMatchModifiers(date, matchers, dateLib = defaultDateLib) {
    const matchersArr = !Array.isArray(matchers) ? [matchers] : matchers;
    const { isSameDay: isSameDay3, differenceInCalendarDays: differenceInCalendarDays2, isAfter: isAfter2 } = dateLib;
    return matchersArr.some((matcher) => {
      if (typeof matcher === "boolean") {
        return matcher;
      }
      if (dateLib.isDate(matcher)) {
        return isSameDay3(date, matcher);
      }
      if (isDatesArray(matcher, dateLib)) {
        return matcher.some((matcherDate) => isSameDay3(date, matcherDate));
      }
      if (isDateRange(matcher)) {
        return rangeIncludesDate(matcher, date, false, dateLib);
      }
      if (isDayOfWeekType(matcher)) {
        if (!Array.isArray(matcher.dayOfWeek)) {
          return matcher.dayOfWeek === date.getDay();
        }
        return matcher.dayOfWeek.includes(date.getDay());
      }
      if (isDateInterval(matcher)) {
        const diffBefore = differenceInCalendarDays2(matcher.before, date);
        const diffAfter = differenceInCalendarDays2(matcher.after, date);
        const isDayBefore = diffBefore > 0;
        const isDayAfter = diffAfter < 0;
        const isClosedInterval = isAfter2(matcher.before, matcher.after);
        if (isClosedInterval) {
          return isDayAfter && isDayBefore;
        } else {
          return isDayBefore || isDayAfter;
        }
      }
      if (isDateAfterType(matcher)) {
        return differenceInCalendarDays2(date, matcher.after) > 0;
      }
      if (isDateBeforeType(matcher)) {
        return differenceInCalendarDays2(matcher.before, date) > 0;
      }
      if (typeof matcher === "function") {
        return matcher(date);
      }
      return false;
    });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js
  function createGetModifiers(days, props, navStart, navEnd, dateLib) {
    const { disabled: disabled2, hidden, modifiers, showOutsideDays, broadcastCalendar, today = dateLib.today() } = props;
    const { isSameDay: isSameDay3, isSameMonth: isSameMonth2, startOfMonth: startOfMonth2, isBefore: isBefore2, endOfMonth: endOfMonth2, isAfter: isAfter2 } = dateLib;
    const computedNavStart = navStart && startOfMonth2(navStart);
    const computedNavEnd = navEnd && endOfMonth2(navEnd);
    const internalModifiersMap = {
      [DayFlag.focused]: [],
      [DayFlag.outside]: [],
      [DayFlag.disabled]: [],
      [DayFlag.hidden]: [],
      [DayFlag.today]: []
    };
    const customModifiersMap = {};
    for (const day of days) {
      const { date, displayMonth } = day;
      const isOutside = Boolean(displayMonth && !isSameMonth2(date, displayMonth));
      const isBeforeNavStart = Boolean(computedNavStart && isBefore2(date, computedNavStart));
      const isAfterNavEnd = Boolean(computedNavEnd && isAfter2(date, computedNavEnd));
      const isDisabled = Boolean(disabled2 && dateMatchModifiers(date, disabled2, dateLib));
      const isHidden2 = Boolean(hidden && dateMatchModifiers(date, hidden, dateLib)) || isBeforeNavStart || isAfterNavEnd || // Broadcast calendar will show outside days as default
      !broadcastCalendar && !showOutsideDays && isOutside || broadcastCalendar && showOutsideDays === false && isOutside;
      const isToday = isSameDay3(date, today);
      if (isOutside)
        internalModifiersMap.outside.push(day);
      if (isDisabled)
        internalModifiersMap.disabled.push(day);
      if (isHidden2)
        internalModifiersMap.hidden.push(day);
      if (isToday)
        internalModifiersMap.today.push(day);
      if (modifiers) {
        Object.keys(modifiers).forEach((name2) => {
          const modifierValue = modifiers?.[name2];
          const isMatch = modifierValue ? dateMatchModifiers(date, modifierValue, dateLib) : false;
          if (!isMatch)
            return;
          if (customModifiersMap[name2]) {
            customModifiersMap[name2].push(day);
          } else {
            customModifiersMap[name2] = [day];
          }
        });
      }
    }
    return (day) => {
      const dayFlags = {
        [DayFlag.focused]: false,
        [DayFlag.disabled]: false,
        [DayFlag.hidden]: false,
        [DayFlag.outside]: false,
        [DayFlag.today]: false
      };
      const customModifiers = {};
      for (const name2 in internalModifiersMap) {
        const days2 = internalModifiersMap[name2];
        dayFlags[name2] = days2.some((d2) => d2 === day);
      }
      for (const name2 in customModifiersMap) {
        customModifiers[name2] = customModifiersMap[name2].some((d2) => d2 === day);
      }
      return {
        ...dayFlags,
        // custom modifiers should override all the previous ones
        ...customModifiers
      };
    };
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js
  function getClassNamesForModifiers(modifiers, classNames, modifiersClassNames = {}) {
    const modifierClassNames = Object.entries(modifiers).filter(([, active]) => active === true).reduce((previousValue, [key]) => {
      if (modifiersClassNames[key]) {
        previousValue.push(modifiersClassNames[key]);
      } else if (classNames[DayFlag[key]]) {
        previousValue.push(classNames[DayFlag[key]]);
      } else if (classNames[SelectionState[key]]) {
        previousValue.push(classNames[SelectionState[key]]);
      }
      return previousValue;
    }, [classNames[UI.Day]]);
    return modifierClassNames;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getComponents.js
  function getComponents(customComponents) {
    return {
      ...custom_components_exports,
      ...customComponents
    };
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js
  function getDataAttributes(props) {
    const dataAttributes = {
      "data-mode": props.mode ?? void 0,
      "data-required": "required" in props ? props.required : void 0,
      "data-multiple-months": props.numberOfMonths && props.numberOfMonths > 1 || void 0,
      "data-week-numbers": props.showWeekNumber || void 0,
      "data-broadcast-calendar": props.broadcastCalendar || void 0,
      "data-nav-layout": props.navLayout || void 0
    };
    Object.entries(props).forEach(([key, val]) => {
      if (key.startsWith("data-")) {
        dataAttributes[key] = val;
      }
    });
    return dataAttributes;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js
  function getDefaultClassNames() {
    const classNames = {};
    for (const key in UI) {
      classNames[UI[key]] = `rdp-${UI[key]}`;
    }
    for (const key in DayFlag) {
      classNames[DayFlag[key]] = `rdp-${DayFlag[key]}`;
    }
    for (const key in SelectionState) {
      classNames[SelectionState[key]] = `rdp-${SelectionState[key]}`;
    }
    for (const key in Animation) {
      classNames[Animation[key]] = `rdp-${Animation[key]}`;
    }
    return classNames;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/index.js
  var formatters_exports = {};
  __export(formatters_exports, {
    formatCaption: () => formatCaption,
    formatDay: () => formatDay,
    formatMonthDropdown: () => formatMonthDropdown,
    formatWeekNumber: () => formatWeekNumber,
    formatWeekNumberHeader: () => formatWeekNumberHeader,
    formatWeekdayName: () => formatWeekdayName,
    formatYearDropdown: () => formatYearDropdown
  });

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatCaption.js
  function formatCaption(month, options, dateLib) {
    const lib = dateLib ?? new DateLib(options);
    return lib.formatMonthYear(month);
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatDay.js
  function formatDay(date, options, dateLib) {
    return (dateLib ?? new DateLib(options)).format(date, "d");
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js
  function formatMonthDropdown(month, dateLib = defaultDateLib) {
    return dateLib.format(month, "LLLL");
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js
  function formatWeekdayName(weekday, options, dateLib) {
    return (dateLib ?? new DateLib(options)).format(weekday, "cccccc");
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js
  function formatWeekNumber(weekNumber, dateLib = defaultDateLib) {
    if (weekNumber < 10) {
      return dateLib.formatNumber(`0${weekNumber.toLocaleString()}`);
    }
    return dateLib.formatNumber(`${weekNumber.toLocaleString()}`);
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js
  function formatWeekNumberHeader() {
    return ``;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js
  function formatYearDropdown(year, dateLib = defaultDateLib) {
    return dateLib.format(year, "yyyy");
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getFormatters.js
  function getFormatters(customFormatters) {
    return {
      ...formatters_exports,
      ...customFormatters
    };
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/index.js
  var labels_exports = {};
  __export(labels_exports, {
    labelDayButton: () => labelDayButton,
    labelGrid: () => labelGrid,
    labelGridcell: () => labelGridcell,
    labelMonthDropdown: () => labelMonthDropdown,
    labelNav: () => labelNav,
    labelNext: () => labelNext,
    labelPrevious: () => labelPrevious,
    labelWeekNumber: () => labelWeekNumber,
    labelWeekNumberHeader: () => labelWeekNumberHeader,
    labelWeekday: () => labelWeekday,
    labelYearDropdown: () => labelYearDropdown
  });

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelDayButton.js
  function labelDayButton(date, modifiers, options, dateLib) {
    let label = (dateLib ?? new DateLib(options)).format(date, "PPPP");
    if (modifiers.today)
      label = `Today, ${label}`;
    if (modifiers.selected)
      label = `${label}, selected`;
    return label;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelGrid.js
  function labelGrid(date, options, dateLib) {
    const lib = dateLib ?? new DateLib(options);
    return lib.formatMonthYear(date);
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelGridcell.js
  function labelGridcell(date, modifiers, options, dateLib) {
    let label = (dateLib ?? new DateLib(options)).format(date, "PPPP");
    if (modifiers?.today) {
      label = `Today, ${label}`;
    }
    return label;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js
  function labelMonthDropdown(_options) {
    return "Choose the Month";
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelNav.js
  function labelNav() {
    return "";
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelNext.js
  var defaultLabel = "Go to the Next Month";
  function labelNext(_month, _options) {
    return defaultLabel;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelPrevious.js
  function labelPrevious(_month) {
    return "Go to the Previous Month";
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelWeekday.js
  function labelWeekday(date, options, dateLib) {
    return (dateLib ?? new DateLib(options)).format(date, "cccc");
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js
  function labelWeekNumber(weekNumber, _options) {
    return `Week ${weekNumber}`;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js
  function labelWeekNumberHeader(_options) {
    return "Week Number";
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js
  function labelYearDropdown(_options) {
    return "Choose the Year";
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getLabels.js
  var resolveLabel = (defaultLabel2, customLabel, localeLabel) => {
    if (customLabel)
      return customLabel;
    if (localeLabel) {
      return typeof localeLabel === "function" ? localeLabel : (..._args) => localeLabel;
    }
    return defaultLabel2;
  };
  function getLabels(customLabels, options) {
    const localeLabels = options.locale?.labels ?? {};
    return {
      ...labels_exports,
      ...customLabels ?? {},
      labelDayButton: resolveLabel(labelDayButton, customLabels?.labelDayButton, localeLabels.labelDayButton),
      labelMonthDropdown: resolveLabel(labelMonthDropdown, customLabels?.labelMonthDropdown, localeLabels.labelMonthDropdown),
      labelNext: resolveLabel(labelNext, customLabels?.labelNext, localeLabels.labelNext),
      labelPrevious: resolveLabel(labelPrevious, customLabels?.labelPrevious, localeLabels.labelPrevious),
      labelWeekNumber: resolveLabel(labelWeekNumber, customLabels?.labelWeekNumber, localeLabels.labelWeekNumber),
      labelYearDropdown: resolveLabel(labelYearDropdown, customLabels?.labelYearDropdown, localeLabels.labelYearDropdown),
      labelGrid: resolveLabel(labelGrid, customLabels?.labelGrid, localeLabels.labelGrid),
      labelGridcell: resolveLabel(labelGridcell, customLabels?.labelGridcell, localeLabels.labelGridcell),
      labelNav: resolveLabel(labelNav, customLabels?.labelNav, localeLabels.labelNav),
      labelWeekNumberHeader: resolveLabel(labelWeekNumberHeader, customLabels?.labelWeekNumberHeader, localeLabels.labelWeekNumberHeader),
      labelWeekday: resolveLabel(labelWeekday, customLabels?.labelWeekday, localeLabels.labelWeekday)
    };
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js
  function getMonthOptions(displayMonth, navStart, navEnd, formatters2, dateLib) {
    const { startOfMonth: startOfMonth2, startOfYear: startOfYear2, endOfYear: endOfYear2, eachMonthOfInterval: eachMonthOfInterval2, getMonth: getMonth2 } = dateLib;
    const months = eachMonthOfInterval2({
      start: startOfYear2(displayMonth),
      end: endOfYear2(displayMonth)
    });
    const options = months.map((month) => {
      const label = formatters2.formatMonthDropdown(month, dateLib);
      const value = getMonth2(month);
      const disabled2 = navStart && month < startOfMonth2(navStart) || navEnd && month > startOfMonth2(navEnd) || false;
      return { value, label, disabled: disabled2 };
    });
    return options;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js
  function getStyleForModifiers(dayModifiers, styles = {}, modifiersStyles = {}) {
    let style = { ...styles?.[UI.Day] };
    Object.entries(dayModifiers).filter(([, active]) => active === true).forEach(([modifier]) => {
      style = {
        ...style,
        ...modifiersStyles?.[modifier]
      };
    });
    return style;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js
  function getWeekdays(dateLib, ISOWeek, broadcastCalendar, today) {
    const referenceToday = today ?? dateLib.today();
    const start2 = broadcastCalendar ? dateLib.startOfBroadcastWeek(referenceToday, dateLib) : ISOWeek ? dateLib.startOfISOWeek(referenceToday) : dateLib.startOfWeek(referenceToday);
    const days = [];
    for (let i2 = 0; i2 < 7; i2++) {
      const day = dateLib.addDays(start2, i2);
      days.push(day);
    }
    return days;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js
  function getYearOptions(navStart, navEnd, formatters2, dateLib, reverse = false) {
    if (!navStart)
      return void 0;
    if (!navEnd)
      return void 0;
    const { startOfYear: startOfYear2, endOfYear: endOfYear2, eachYearOfInterval: eachYearOfInterval2, getYear: getYear2 } = dateLib;
    const firstNavYear = startOfYear2(navStart);
    const lastNavYear = endOfYear2(navEnd);
    const years = eachYearOfInterval2({ start: firstNavYear, end: lastNavYear });
    if (reverse)
      years.reverse();
    return years.map((year) => {
      const label = formatters2.formatYearDropdown(year, dateLib);
      return {
        value: getYear2(year),
        label,
        disabled: false
      };
    });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/noonDateLib.js
  function createNoonOverrides(timeZone, options = {}) {
    const { weekStartsOn, locale } = options;
    const fallbackWeekStartsOn = weekStartsOn ?? locale?.options?.weekStartsOn ?? 0;
    const toNoonTZDate = (date) => {
      const normalizedDate = typeof date === "number" || typeof date === "string" ? new Date(date) : date;
      return new TZDate(normalizedDate.getFullYear(), normalizedDate.getMonth(), normalizedDate.getDate(), 12, 0, 0, timeZone);
    };
    const toCalendarDate2 = (date) => {
      const zoned = toNoonTZDate(date);
      return new Date(zoned.getFullYear(), zoned.getMonth(), zoned.getDate(), 0, 0, 0, 0);
    };
    return {
      today: () => {
        return toNoonTZDate(TZDate.tz(timeZone));
      },
      newDate: (year, monthIndex, date) => {
        return new TZDate(year, monthIndex, date, 12, 0, 0, timeZone);
      },
      startOfDay: (date) => {
        return toNoonTZDate(date);
      },
      startOfWeek: (date, options2) => {
        const base = toNoonTZDate(date);
        const weekStartsOnValue = options2?.weekStartsOn ?? fallbackWeekStartsOn;
        const diff = (base.getDay() - weekStartsOnValue + 7) % 7;
        base.setDate(base.getDate() - diff);
        return base;
      },
      startOfISOWeek: (date) => {
        const base = toNoonTZDate(date);
        const diff = (base.getDay() - 1 + 7) % 7;
        base.setDate(base.getDate() - diff);
        return base;
      },
      startOfMonth: (date) => {
        const base = toNoonTZDate(date);
        base.setDate(1);
        return base;
      },
      startOfYear: (date) => {
        const base = toNoonTZDate(date);
        base.setMonth(0, 1);
        return base;
      },
      endOfWeek: (date, options2) => {
        const base = toNoonTZDate(date);
        const weekStartsOnValue = options2?.weekStartsOn ?? fallbackWeekStartsOn;
        const endDow = (weekStartsOnValue + 6) % 7;
        const diff = (endDow - base.getDay() + 7) % 7;
        base.setDate(base.getDate() + diff);
        return base;
      },
      endOfISOWeek: (date) => {
        const base = toNoonTZDate(date);
        const diff = (7 - base.getDay()) % 7;
        base.setDate(base.getDate() + diff);
        return base;
      },
      endOfMonth: (date) => {
        const base = toNoonTZDate(date);
        base.setMonth(base.getMonth() + 1, 0);
        return base;
      },
      endOfYear: (date) => {
        const base = toNoonTZDate(date);
        base.setMonth(11, 31);
        return base;
      },
      eachMonthOfInterval: (interval) => {
        const start2 = toNoonTZDate(interval.start);
        const end = toNoonTZDate(interval.end);
        const result = [];
        const cursor = new TZDate(start2.getFullYear(), start2.getMonth(), 1, 12, 0, 0, timeZone);
        const endKey = end.getFullYear() * 12 + end.getMonth();
        while (cursor.getFullYear() * 12 + cursor.getMonth() <= endKey) {
          result.push(new TZDate(cursor, timeZone));
          cursor.setMonth(cursor.getMonth() + 1, 1);
        }
        return result;
      },
      // Normalize to noon once before arithmetic (avoid DST/midnight edge cases),
      // mutate the same TZDate, and return it.
      addDays: (date, amount) => {
        const base = toNoonTZDate(date);
        base.setDate(base.getDate() + amount);
        return base;
      },
      addWeeks: (date, amount) => {
        const base = toNoonTZDate(date);
        base.setDate(base.getDate() + amount * 7);
        return base;
      },
      addMonths: (date, amount) => {
        const base = toNoonTZDate(date);
        base.setMonth(base.getMonth() + amount);
        return base;
      },
      addYears: (date, amount) => {
        const base = toNoonTZDate(date);
        base.setFullYear(base.getFullYear() + amount);
        return base;
      },
      eachYearOfInterval: (interval) => {
        const start2 = toNoonTZDate(interval.start);
        const end = toNoonTZDate(interval.end);
        const years = [];
        const cursor = new TZDate(start2.getFullYear(), 0, 1, 12, 0, 0, timeZone);
        while (cursor.getFullYear() <= end.getFullYear()) {
          years.push(new TZDate(cursor, timeZone));
          cursor.setFullYear(cursor.getFullYear() + 1, 0, 1);
        }
        return years;
      },
      getWeek: (date, options2) => {
        const base = toCalendarDate2(date);
        return getWeek(base, {
          weekStartsOn: options2?.weekStartsOn ?? fallbackWeekStartsOn,
          firstWeekContainsDate: options2?.firstWeekContainsDate ?? locale?.options?.firstWeekContainsDate ?? 1
        });
      },
      getISOWeek: (date) => {
        const base = toCalendarDate2(date);
        return getISOWeek(base);
      },
      differenceInCalendarDays: (dateLeft, dateRight) => {
        const left = toCalendarDate2(dateLeft);
        const right = toCalendarDate2(dateRight);
        return differenceInCalendarDays(left, right);
      },
      differenceInCalendarMonths: (dateLeft, dateRight) => {
        const left = toCalendarDate2(dateLeft);
        const right = toCalendarDate2(dateRight);
        return differenceInCalendarMonths(left, right);
      }
    };
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useAnimation.js
  var import_react32 = __toESM(require_react(), 1);
  var asHtmlElement = (element) => {
    if (element instanceof HTMLElement)
      return element;
    return null;
  };
  var queryMonthEls = (element) => [
    ...element.querySelectorAll("[data-animated-month]") ?? []
  ];
  var queryMonthEl = (element) => asHtmlElement(element.querySelector("[data-animated-month]"));
  var queryCaptionEl = (element) => asHtmlElement(element.querySelector("[data-animated-caption]"));
  var queryWeeksEl = (element) => asHtmlElement(element.querySelector("[data-animated-weeks]"));
  var queryNavEl = (element) => asHtmlElement(element.querySelector("[data-animated-nav]"));
  var queryWeekdaysEl = (element) => asHtmlElement(element.querySelector("[data-animated-weekdays]"));
  function useAnimation(rootElRef, enabled, { classNames, months, focused, dateLib }) {
    const previousRootElSnapshotRef = (0, import_react32.useRef)(null);
    const previousMonthsRef = (0, import_react32.useRef)(months);
    const animatingRef = (0, import_react32.useRef)(false);
    (0, import_react32.useLayoutEffect)(() => {
      const previousMonths = previousMonthsRef.current;
      previousMonthsRef.current = months;
      if (!enabled || !rootElRef.current || // safety check because the ref can be set to anything by consumers
      !(rootElRef.current instanceof HTMLElement) || // validation required for the animation to work as expected
      months.length === 0 || previousMonths.length === 0 || months.length !== previousMonths.length) {
        return;
      }
      const isSameMonth2 = dateLib.isSameMonth(months[0].date, previousMonths[0].date);
      const isAfterPreviousMonth = dateLib.isAfter(months[0].date, previousMonths[0].date);
      const captionAnimationClass = isAfterPreviousMonth ? classNames[Animation.caption_after_enter] : classNames[Animation.caption_before_enter];
      const weeksAnimationClass = isAfterPreviousMonth ? classNames[Animation.weeks_after_enter] : classNames[Animation.weeks_before_enter];
      const previousRootElSnapshot = previousRootElSnapshotRef.current;
      const rootElSnapshot = rootElRef.current.cloneNode(true);
      if (rootElSnapshot instanceof HTMLElement) {
        const currentMonthElsSnapshot = queryMonthEls(rootElSnapshot);
        currentMonthElsSnapshot.forEach((currentMonthElSnapshot) => {
          if (!(currentMonthElSnapshot instanceof HTMLElement))
            return;
          const previousMonthElSnapshot = queryMonthEl(currentMonthElSnapshot);
          if (previousMonthElSnapshot && currentMonthElSnapshot.contains(previousMonthElSnapshot)) {
            currentMonthElSnapshot.removeChild(previousMonthElSnapshot);
          }
          const captionEl = queryCaptionEl(currentMonthElSnapshot);
          if (captionEl) {
            captionEl.classList.remove(captionAnimationClass);
          }
          const weeksEl = queryWeeksEl(currentMonthElSnapshot);
          if (weeksEl) {
            weeksEl.classList.remove(weeksAnimationClass);
          }
        });
        previousRootElSnapshotRef.current = rootElSnapshot;
      } else {
        previousRootElSnapshotRef.current = null;
      }
      if (animatingRef.current || isSameMonth2 || // skip animation if a day is focused because it can cause issues to the animation and is better for a11y
      focused) {
        return;
      }
      const previousMonthEls = previousRootElSnapshot instanceof HTMLElement ? queryMonthEls(previousRootElSnapshot) : [];
      const currentMonthEls = queryMonthEls(rootElRef.current);
      if (currentMonthEls?.every((el) => el instanceof HTMLElement) && previousMonthEls?.every((el) => el instanceof HTMLElement)) {
        animatingRef.current = true;
        const cleanUpFunctions = [];
        rootElRef.current.style.isolation = "isolate";
        const navEl = queryNavEl(rootElRef.current);
        if (navEl) {
          navEl.style.zIndex = "1";
        }
        currentMonthEls.forEach((currentMonthEl, index3) => {
          const previousMonthEl = previousMonthEls[index3];
          if (!previousMonthEl) {
            return;
          }
          currentMonthEl.style.position = "relative";
          currentMonthEl.style.overflow = "hidden";
          const captionEl = queryCaptionEl(currentMonthEl);
          if (captionEl) {
            captionEl.classList.add(captionAnimationClass);
          }
          const weeksEl = queryWeeksEl(currentMonthEl);
          if (weeksEl) {
            weeksEl.classList.add(weeksAnimationClass);
          }
          const cleanUp = () => {
            animatingRef.current = false;
            if (rootElRef.current) {
              rootElRef.current.style.isolation = "";
            }
            if (navEl) {
              navEl.style.zIndex = "";
            }
            if (captionEl) {
              captionEl.classList.remove(captionAnimationClass);
            }
            if (weeksEl) {
              weeksEl.classList.remove(weeksAnimationClass);
            }
            currentMonthEl.style.position = "";
            currentMonthEl.style.overflow = "";
            if (currentMonthEl.contains(previousMonthEl)) {
              currentMonthEl.removeChild(previousMonthEl);
            }
          };
          cleanUpFunctions.push(cleanUp);
          previousMonthEl.style.pointerEvents = "none";
          previousMonthEl.style.position = "absolute";
          previousMonthEl.style.overflow = "hidden";
          previousMonthEl.setAttribute("aria-hidden", "true");
          const previousWeekdaysEl = queryWeekdaysEl(previousMonthEl);
          if (previousWeekdaysEl) {
            previousWeekdaysEl.style.opacity = "0";
          }
          const previousCaptionEl = queryCaptionEl(previousMonthEl);
          if (previousCaptionEl) {
            previousCaptionEl.classList.add(isAfterPreviousMonth ? classNames[Animation.caption_before_exit] : classNames[Animation.caption_after_exit]);
            previousCaptionEl.addEventListener("animationend", cleanUp);
          }
          const previousWeeksEl = queryWeeksEl(previousMonthEl);
          if (previousWeeksEl) {
            previousWeeksEl.classList.add(isAfterPreviousMonth ? classNames[Animation.weeks_before_exit] : classNames[Animation.weeks_after_exit]);
          }
          currentMonthEl.insertBefore(previousMonthEl, currentMonthEl.firstChild);
        });
      }
    });
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useCalendar.js
  var import_react34 = __toESM(require_react(), 1);

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getDates.js
  function getDates(displayMonths, maxDate, props, dateLib) {
    const firstMonth = displayMonths[0];
    const lastMonth = displayMonths[displayMonths.length - 1];
    const { ISOWeek, fixedWeeks, broadcastCalendar } = props ?? {};
    const { addDays: addDays2, differenceInCalendarDays: differenceInCalendarDays2, differenceInCalendarMonths: differenceInCalendarMonths2, endOfBroadcastWeek: endOfBroadcastWeek2, endOfISOWeek: endOfISOWeek2, endOfMonth: endOfMonth2, endOfWeek: endOfWeek2, isAfter: isAfter2, startOfBroadcastWeek: startOfBroadcastWeek2, startOfISOWeek: startOfISOWeek2, startOfWeek: startOfWeek2 } = dateLib;
    const startWeekFirstDate = broadcastCalendar ? startOfBroadcastWeek2(firstMonth, dateLib) : ISOWeek ? startOfISOWeek2(firstMonth) : startOfWeek2(firstMonth);
    const displayMonthsWeekEnd = broadcastCalendar ? endOfBroadcastWeek2(lastMonth) : ISOWeek ? endOfISOWeek2(endOfMonth2(lastMonth)) : endOfWeek2(endOfMonth2(lastMonth));
    const constraintWeekEnd = maxDate && (broadcastCalendar ? endOfBroadcastWeek2(maxDate) : ISOWeek ? endOfISOWeek2(maxDate) : endOfWeek2(maxDate));
    const gridEndDate = constraintWeekEnd && isAfter2(displayMonthsWeekEnd, constraintWeekEnd) ? constraintWeekEnd : displayMonthsWeekEnd;
    const nOfDays = differenceInCalendarDays2(gridEndDate, startWeekFirstDate);
    const nOfMonths = differenceInCalendarMonths2(lastMonth, firstMonth) + 1;
    const dates = [];
    for (let i2 = 0; i2 <= nOfDays; i2++) {
      const date = addDays2(startWeekFirstDate, i2);
      dates.push(date);
    }
    const nrOfDaysWithFixedWeeks = broadcastCalendar ? 35 : 42;
    const extraDates = nrOfDaysWithFixedWeeks * nOfMonths;
    if (fixedWeeks && dates.length < extraDates) {
      const daysToAdd = extraDates - dates.length;
      for (let i2 = 0; i2 < daysToAdd; i2++) {
        const date = addDays2(dates[dates.length - 1], 1);
        dates.push(date);
      }
    }
    return dates;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getDays.js
  function getDays(calendarMonths) {
    const initialDays = [];
    return calendarMonths.reduce((days, month) => {
      const weekDays = month.weeks.reduce((weekDays2, week) => {
        return weekDays2.concat(week.days.slice());
      }, initialDays.slice());
      return days.concat(weekDays.slice());
    }, initialDays.slice());
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js
  function getDisplayMonths(firstDisplayedMonth, calendarEndMonth, props, dateLib) {
    const { numberOfMonths = 1 } = props;
    const months = [];
    for (let i2 = 0; i2 < numberOfMonths; i2++) {
      const month = dateLib.addMonths(firstDisplayedMonth, i2);
      if (calendarEndMonth && month > calendarEndMonth) {
        break;
      }
      months.push(month);
    }
    return months;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js
  function getInitialMonth(props, navStart, navEnd, dateLib) {
    const { month, defaultMonth, today = dateLib.today(), numberOfMonths = 1 } = props;
    let initialMonth = month || defaultMonth || today;
    const { differenceInCalendarMonths: differenceInCalendarMonths2, addMonths: addMonths2, startOfMonth: startOfMonth2 } = dateLib;
    if (navEnd && differenceInCalendarMonths2(navEnd, initialMonth) < numberOfMonths - 1) {
      const offset4 = -1 * (numberOfMonths - 1);
      initialMonth = addMonths2(navEnd, offset4);
    }
    if (navStart && differenceInCalendarMonths2(initialMonth, navStart) < 0) {
      initialMonth = navStart;
    }
    return startOfMonth2(initialMonth);
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getMonths.js
  function getMonths(displayMonths, dates, props, dateLib) {
    const { addDays: addDays2, endOfBroadcastWeek: endOfBroadcastWeek2, endOfISOWeek: endOfISOWeek2, endOfMonth: endOfMonth2, endOfWeek: endOfWeek2, getISOWeek: getISOWeek2, getWeek: getWeek2, startOfBroadcastWeek: startOfBroadcastWeek2, startOfISOWeek: startOfISOWeek2, startOfWeek: startOfWeek2 } = dateLib;
    const dayPickerMonths = displayMonths.reduce((months, month) => {
      const firstDateOfFirstWeek = props.broadcastCalendar ? startOfBroadcastWeek2(month, dateLib) : props.ISOWeek ? startOfISOWeek2(month) : startOfWeek2(month);
      const lastDateOfLastWeek = props.broadcastCalendar ? endOfBroadcastWeek2(month) : props.ISOWeek ? endOfISOWeek2(endOfMonth2(month)) : endOfWeek2(endOfMonth2(month));
      const monthDates = dates.filter((date) => {
        return date >= firstDateOfFirstWeek && date <= lastDateOfLastWeek;
      });
      const nrOfDaysWithFixedWeeks = props.broadcastCalendar ? 35 : 42;
      if (props.fixedWeeks && monthDates.length < nrOfDaysWithFixedWeeks) {
        const extraDates = dates.filter((date) => {
          const daysToAdd = nrOfDaysWithFixedWeeks - monthDates.length;
          return date > lastDateOfLastWeek && date <= addDays2(lastDateOfLastWeek, daysToAdd);
        });
        monthDates.push(...extraDates);
      }
      const weeks = monthDates.reduce((weeks2, date) => {
        const weekNumber = props.ISOWeek ? getISOWeek2(date) : getWeek2(date);
        const week = weeks2.find((week2) => week2.weekNumber === weekNumber);
        const day = new CalendarDay(date, month, dateLib);
        if (!week) {
          weeks2.push(new CalendarWeek(weekNumber, [day]));
        } else {
          week.days.push(day);
        }
        return weeks2;
      }, []);
      const dayPickerMonth = new CalendarMonth(month, weeks);
      months.push(dayPickerMonth);
      return months;
    }, []);
    if (!props.reverseMonths) {
      return dayPickerMonths;
    } else {
      return dayPickerMonths.reverse();
    }
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js
  function getNavMonths(props, dateLib) {
    let { startMonth, endMonth } = props;
    const { startOfYear: startOfYear2, startOfDay: startOfDay2, startOfMonth: startOfMonth2, endOfMonth: endOfMonth2, addYears: addYears2, endOfYear: endOfYear2, today } = dateLib;
    const hasYearDropdown = props.captionLayout === "dropdown" || props.captionLayout === "dropdown-years";
    if (startMonth) {
      startMonth = startOfMonth2(startMonth);
    } else if (!startMonth && hasYearDropdown) {
      startMonth = startOfYear2(addYears2(props.today ?? today(), -100));
    }
    if (endMonth) {
      endMonth = endOfMonth2(endMonth);
    } else if (!endMonth && hasYearDropdown) {
      endMonth = endOfYear2(props.today ?? today());
    }
    return [
      startMonth ? startOfDay2(startMonth) : startMonth,
      endMonth ? startOfDay2(endMonth) : endMonth
    ];
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js
  function getNextMonth(firstDisplayedMonth, calendarEndMonth, options, dateLib) {
    if (options.disableNavigation) {
      return void 0;
    }
    const { pagedNavigation, numberOfMonths = 1 } = options;
    const { startOfMonth: startOfMonth2, addMonths: addMonths2, differenceInCalendarMonths: differenceInCalendarMonths2 } = dateLib;
    const offset4 = pagedNavigation ? numberOfMonths : 1;
    const month = startOfMonth2(firstDisplayedMonth);
    if (!calendarEndMonth) {
      return addMonths2(month, offset4);
    }
    const monthsDiff = differenceInCalendarMonths2(calendarEndMonth, firstDisplayedMonth);
    if (monthsDiff < numberOfMonths) {
      return void 0;
    }
    return addMonths2(month, offset4);
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js
  function getPreviousMonth(firstDisplayedMonth, calendarStartMonth, options, dateLib) {
    if (options.disableNavigation) {
      return void 0;
    }
    const { pagedNavigation, numberOfMonths } = options;
    const { startOfMonth: startOfMonth2, addMonths: addMonths2, differenceInCalendarMonths: differenceInCalendarMonths2 } = dateLib;
    const offset4 = pagedNavigation ? numberOfMonths ?? 1 : 1;
    const month = startOfMonth2(firstDisplayedMonth);
    if (!calendarStartMonth) {
      return addMonths2(month, -offset4);
    }
    const monthsDiff = differenceInCalendarMonths2(month, calendarStartMonth);
    if (monthsDiff <= 0) {
      return void 0;
    }
    return addMonths2(month, -offset4);
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getWeeks.js
  function getWeeks(months) {
    const initialWeeks = [];
    return months.reduce((weeks, month) => {
      return weeks.concat(month.weeks.slice());
    }, initialWeeks.slice());
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js
  var import_react33 = __toESM(require_react(), 1);
  function useControlledValue(defaultValue2, controlledValue) {
    const [uncontrolledValue, setValue] = (0, import_react33.useState)(defaultValue2);
    const value = controlledValue === void 0 ? uncontrolledValue : controlledValue;
    return [value, setValue];
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useCalendar.js
  function useCalendar(props, dateLib) {
    const [navStart, navEnd] = getNavMonths(props, dateLib);
    const { startOfMonth: startOfMonth2, endOfMonth: endOfMonth2 } = dateLib;
    const initialMonth = getInitialMonth(props, navStart, navEnd, dateLib);
    const [firstMonth, setFirstMonth] = useControlledValue(
      initialMonth,
      // initialMonth is always computed from props.month if provided
      props.month ? initialMonth : void 0
    );
    (0, import_react34.useEffect)(() => {
      const newInitialMonth = getInitialMonth(props, navStart, navEnd, dateLib);
      setFirstMonth(newInitialMonth);
    }, [props.timeZone]);
    const { months, weeks, days, previousMonth, nextMonth } = (0, import_react34.useMemo)(() => {
      const displayMonths = getDisplayMonths(firstMonth, navEnd, { numberOfMonths: props.numberOfMonths }, dateLib);
      const dates = getDates(displayMonths, props.endMonth ? endOfMonth2(props.endMonth) : void 0, {
        ISOWeek: props.ISOWeek,
        fixedWeeks: props.fixedWeeks,
        broadcastCalendar: props.broadcastCalendar
      }, dateLib);
      const months2 = getMonths(displayMonths, dates, {
        broadcastCalendar: props.broadcastCalendar,
        fixedWeeks: props.fixedWeeks,
        ISOWeek: props.ISOWeek,
        reverseMonths: props.reverseMonths
      }, dateLib);
      const weeks2 = getWeeks(months2);
      const days2 = getDays(months2);
      const previousMonth2 = getPreviousMonth(firstMonth, navStart, props, dateLib);
      const nextMonth2 = getNextMonth(firstMonth, navEnd, props, dateLib);
      return {
        months: months2,
        weeks: weeks2,
        days: days2,
        previousMonth: previousMonth2,
        nextMonth: nextMonth2
      };
    }, [
      dateLib,
      firstMonth.getTime(),
      navEnd?.getTime(),
      navStart?.getTime(),
      props.disableNavigation,
      props.broadcastCalendar,
      props.endMonth?.getTime(),
      props.fixedWeeks,
      props.ISOWeek,
      props.numberOfMonths,
      props.pagedNavigation,
      props.reverseMonths
    ]);
    const { disableNavigation, onMonthChange } = props;
    const isDayInCalendar = (day) => weeks.some((week) => week.days.some((d2) => d2.isEqualTo(day)));
    const goToMonth = (date) => {
      if (disableNavigation) {
        return;
      }
      let newMonth = startOfMonth2(date);
      if (navStart && newMonth < startOfMonth2(navStart)) {
        newMonth = startOfMonth2(navStart);
      }
      if (navEnd && newMonth > startOfMonth2(navEnd)) {
        newMonth = startOfMonth2(navEnd);
      }
      setFirstMonth(newMonth);
      onMonthChange?.(newMonth);
    };
    const goToDay = (day) => {
      if (isDayInCalendar(day)) {
        return;
      }
      goToMonth(day.date);
    };
    const calendar = {
      months,
      weeks,
      days,
      navStart,
      navEnd,
      previousMonth,
      nextMonth,
      goToMonth,
      goToDay
    };
    return calendar;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useFocus.js
  var import_react35 = __toESM(require_react(), 1);

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js
  var FocusTargetPriority;
  (function(FocusTargetPriority2) {
    FocusTargetPriority2[FocusTargetPriority2["Today"] = 0] = "Today";
    FocusTargetPriority2[FocusTargetPriority2["Selected"] = 1] = "Selected";
    FocusTargetPriority2[FocusTargetPriority2["LastFocused"] = 2] = "LastFocused";
    FocusTargetPriority2[FocusTargetPriority2["FocusedModifier"] = 3] = "FocusedModifier";
  })(FocusTargetPriority || (FocusTargetPriority = {}));
  function isFocusableDay(modifiers) {
    return !modifiers[DayFlag.disabled] && !modifiers[DayFlag.hidden] && !modifiers[DayFlag.outside];
  }
  function calculateFocusTarget(days, getModifiers, isSelected2, lastFocused) {
    let focusTarget;
    let foundFocusTargetPriority = -1;
    for (const day of days) {
      const modifiers = getModifiers(day);
      if (isFocusableDay(modifiers)) {
        if (modifiers[DayFlag.focused] && foundFocusTargetPriority < FocusTargetPriority.FocusedModifier) {
          focusTarget = day;
          foundFocusTargetPriority = FocusTargetPriority.FocusedModifier;
        } else if (lastFocused?.isEqualTo(day) && foundFocusTargetPriority < FocusTargetPriority.LastFocused) {
          focusTarget = day;
          foundFocusTargetPriority = FocusTargetPriority.LastFocused;
        } else if (isSelected2(day.date) && foundFocusTargetPriority < FocusTargetPriority.Selected) {
          focusTarget = day;
          foundFocusTargetPriority = FocusTargetPriority.Selected;
        } else if (modifiers[DayFlag.today] && foundFocusTargetPriority < FocusTargetPriority.Today) {
          focusTarget = day;
          foundFocusTargetPriority = FocusTargetPriority.Today;
        }
      }
    }
    if (!focusTarget) {
      focusTarget = days.find((day) => isFocusableDay(getModifiers(day)));
    }
    return focusTarget;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js
  function getFocusableDate(moveBy, moveDir, refDate, navStart, navEnd, props, dateLib) {
    const { ISOWeek, broadcastCalendar } = props;
    const { addDays: addDays2, addMonths: addMonths2, addWeeks: addWeeks2, addYears: addYears2, endOfBroadcastWeek: endOfBroadcastWeek2, endOfISOWeek: endOfISOWeek2, endOfWeek: endOfWeek2, max: max4, min: min4, startOfBroadcastWeek: startOfBroadcastWeek2, startOfISOWeek: startOfISOWeek2, startOfWeek: startOfWeek2 } = dateLib;
    const moveFns = {
      day: addDays2,
      week: addWeeks2,
      month: addMonths2,
      year: addYears2,
      startOfWeek: (date) => broadcastCalendar ? startOfBroadcastWeek2(date, dateLib) : ISOWeek ? startOfISOWeek2(date) : startOfWeek2(date),
      endOfWeek: (date) => broadcastCalendar ? endOfBroadcastWeek2(date) : ISOWeek ? endOfISOWeek2(date) : endOfWeek2(date)
    };
    let focusableDate = moveFns[moveBy](refDate, moveDir === "after" ? 1 : -1);
    if (moveDir === "before" && navStart) {
      focusableDate = max4([navStart, focusableDate]);
    } else if (moveDir === "after" && navEnd) {
      focusableDate = min4([navEnd, focusableDate]);
    }
    return focusableDate;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js
  function getNextFocus(moveBy, moveDir, refDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt = 0) {
    if (attempt > 365) {
      return void 0;
    }
    const focusableDate = getFocusableDate(moveBy, moveDir, refDay.date, calendarStartMonth, calendarEndMonth, props, dateLib);
    const isDisabled = Boolean(props.disabled && dateMatchModifiers(focusableDate, props.disabled, dateLib));
    const isHidden2 = Boolean(props.hidden && dateMatchModifiers(focusableDate, props.hidden, dateLib));
    const targetMonth = focusableDate;
    const focusDay = new CalendarDay(focusableDate, targetMonth, dateLib);
    if (!isDisabled && !isHidden2) {
      return focusDay;
    }
    return getNextFocus(moveBy, moveDir, focusDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt + 1);
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useFocus.js
  function useFocus2(props, calendar, getModifiers, isSelected2, dateLib) {
    const { autoFocus } = props;
    const [lastFocused, setLastFocused] = (0, import_react35.useState)();
    const focusTarget = calculateFocusTarget(calendar.days, getModifiers, isSelected2 || (() => false), lastFocused);
    const [focusedDay, setFocused] = (0, import_react35.useState)(autoFocus ? focusTarget : void 0);
    const blur = () => {
      setLastFocused(focusedDay);
      setFocused(void 0);
    };
    const moveFocus = (moveBy, moveDir) => {
      if (!focusedDay)
        return;
      const nextFocus = getNextFocus(moveBy, moveDir, focusedDay, calendar.navStart, calendar.navEnd, props, dateLib);
      if (!nextFocus)
        return;
      if (props.disableNavigation) {
        const isNextInCalendar = calendar.days.some((day) => day.isEqualTo(nextFocus));
        if (!isNextInCalendar) {
          return;
        }
      }
      calendar.goToDay(nextFocus);
      setFocused(nextFocus);
    };
    const isFocusTarget = (day) => {
      return Boolean(focusTarget?.isEqualTo(day));
    };
    const useFocus3 = {
      isFocusTarget,
      setFocused,
      focused: focusedDay,
      blur,
      moveFocus
    };
    return useFocus3;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/selection/useMulti.js
  function useMulti(props, dateLib) {
    const { selected: initiallySelected, required, onSelect } = props;
    const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : void 0);
    const selected = !onSelect ? internallySelected : initiallySelected;
    const { isSameDay: isSameDay3 } = dateLib;
    const isSelected2 = (date) => {
      return selected?.some((d2) => isSameDay3(d2, date)) ?? false;
    };
    const { min: min4, max: max4 } = props;
    const select9 = (triggerDate, modifiers, e2) => {
      let newDates = [...selected ?? []];
      if (isSelected2(triggerDate)) {
        if (selected?.length === min4) {
          return;
        }
        if (required && selected?.length === 1) {
          return;
        }
        newDates = selected?.filter((d2) => !isSameDay3(d2, triggerDate));
      } else {
        if (selected?.length === max4) {
          newDates = [triggerDate];
        } else {
          newDates = [...newDates, triggerDate];
        }
      }
      if (!onSelect) {
        setSelected(newDates);
      }
      onSelect?.(newDates, triggerDate, modifiers, e2);
      return newDates;
    };
    return {
      selected,
      select: select9,
      isSelected: isSelected2
    };
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/addToRange.js
  function addToRange(date, initialRange, min4 = 0, max4 = 0, required = false, dateLib = defaultDateLib) {
    const { from, to: to2 } = initialRange || {};
    const { isSameDay: isSameDay3, isAfter: isAfter2, isBefore: isBefore2 } = dateLib;
    let range;
    if (!from && !to2) {
      range = { from: date, to: min4 > 0 ? void 0 : date };
    } else if (from && !to2) {
      if (isSameDay3(from, date)) {
        if (min4 === 0) {
          range = { from, to: date };
        } else if (required) {
          range = { from, to: void 0 };
        } else {
          range = void 0;
        }
      } else if (isBefore2(date, from)) {
        range = { from: date, to: from };
      } else {
        range = { from, to: date };
      }
    } else if (from && to2) {
      if (isSameDay3(from, date) && isSameDay3(to2, date)) {
        if (required) {
          range = { from, to: to2 };
        } else {
          range = void 0;
        }
      } else if (isSameDay3(from, date)) {
        range = { from, to: min4 > 0 ? void 0 : date };
      } else if (isSameDay3(to2, date)) {
        range = { from: date, to: min4 > 0 ? void 0 : date };
      } else if (isBefore2(date, from)) {
        range = { from: date, to: to2 };
      } else if (isAfter2(date, from)) {
        range = { from, to: date };
      } else if (isAfter2(date, to2)) {
        range = { from, to: date };
      } else {
        throw new Error("Invalid range");
      }
    }
    if (range?.from && range?.to) {
      const diff = dateLib.differenceInCalendarDays(range.to, range.from);
      if (max4 > 0 && diff > max4) {
        range = { from: date, to: void 0 };
      } else if (min4 > 1 && diff < min4) {
        range = { from: date, to: void 0 };
      }
    }
    return range;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js
  function rangeContainsDayOfWeek(range, dayOfWeek, dateLib = defaultDateLib) {
    const dayOfWeekArr = !Array.isArray(dayOfWeek) ? [dayOfWeek] : dayOfWeek;
    let date = range.from;
    const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);
    const totalDaysLimit = Math.min(totalDays, 6);
    for (let i2 = 0; i2 <= totalDaysLimit; i2++) {
      if (dayOfWeekArr.includes(date.getDay())) {
        return true;
      }
      date = dateLib.addDays(date, 1);
    }
    return false;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js
  function rangeOverlaps(rangeLeft, rangeRight, dateLib = defaultDateLib) {
    return rangeIncludesDate(rangeLeft, rangeRight.from, false, dateLib) || rangeIncludesDate(rangeLeft, rangeRight.to, false, dateLib) || rangeIncludesDate(rangeRight, rangeLeft.from, false, dateLib) || rangeIncludesDate(rangeRight, rangeLeft.to, false, dateLib);
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js
  function rangeContainsModifiers(range, modifiers, dateLib = defaultDateLib) {
    const matchers = Array.isArray(modifiers) ? modifiers : [modifiers];
    const nonFunctionMatchers = matchers.filter((matcher) => typeof matcher !== "function");
    const nonFunctionMatchersResult = nonFunctionMatchers.some((matcher) => {
      if (typeof matcher === "boolean")
        return matcher;
      if (dateLib.isDate(matcher)) {
        return rangeIncludesDate(range, matcher, false, dateLib);
      }
      if (isDatesArray(matcher, dateLib)) {
        return matcher.some((date) => rangeIncludesDate(range, date, false, dateLib));
      }
      if (isDateRange(matcher)) {
        if (matcher.from && matcher.to) {
          return rangeOverlaps(range, { from: matcher.from, to: matcher.to }, dateLib);
        }
        return false;
      }
      if (isDayOfWeekType(matcher)) {
        return rangeContainsDayOfWeek(range, matcher.dayOfWeek, dateLib);
      }
      if (isDateInterval(matcher)) {
        const isClosedInterval = dateLib.isAfter(matcher.before, matcher.after);
        if (isClosedInterval) {
          return rangeOverlaps(range, {
            from: dateLib.addDays(matcher.after, 1),
            to: dateLib.addDays(matcher.before, -1)
          }, dateLib);
        }
        return dateMatchModifiers(range.from, matcher, dateLib) || dateMatchModifiers(range.to, matcher, dateLib);
      }
      if (isDateAfterType(matcher) || isDateBeforeType(matcher)) {
        return dateMatchModifiers(range.from, matcher, dateLib) || dateMatchModifiers(range.to, matcher, dateLib);
      }
      return false;
    });
    if (nonFunctionMatchersResult) {
      return true;
    }
    const functionMatchers = matchers.filter((matcher) => typeof matcher === "function");
    if (functionMatchers.length) {
      let date = range.from;
      const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);
      for (let i2 = 0; i2 <= totalDays; i2++) {
        if (functionMatchers.some((matcher) => matcher(date))) {
          return true;
        }
        date = dateLib.addDays(date, 1);
      }
    }
    return false;
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/selection/useRange.js
  function useRange(props, dateLib) {
    const { disabled: disabled2, excludeDisabled, resetOnSelect, selected: initiallySelected, required, onSelect } = props;
    const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : void 0);
    const selected = !onSelect ? internallySelected : initiallySelected;
    const isSelected2 = (date) => selected && rangeIncludesDate(selected, date, false, dateLib);
    const select9 = (triggerDate, modifiers, e2) => {
      const { min: min4, max: max4 } = props;
      let newRange;
      if (triggerDate) {
        const selectedFrom = selected?.from;
        const selectedTo = selected?.to;
        const hasFullRange = !!selectedFrom && !!selectedTo;
        const isClickingSingleDayRange = !!selectedFrom && !!selectedTo && dateLib.isSameDay(selectedFrom, selectedTo) && dateLib.isSameDay(triggerDate, selectedFrom);
        if (resetOnSelect && (hasFullRange || !selected?.from)) {
          if (!required && isClickingSingleDayRange) {
            newRange = void 0;
          } else {
            newRange = { from: triggerDate, to: void 0 };
          }
        } else {
          newRange = addToRange(triggerDate, selected, min4, max4, required, dateLib);
        }
      }
      if (excludeDisabled && disabled2 && newRange?.from && newRange.to) {
        if (rangeContainsModifiers({ from: newRange.from, to: newRange.to }, disabled2, dateLib)) {
          newRange.from = triggerDate;
          newRange.to = void 0;
        }
      }
      if (!onSelect) {
        setSelected(newRange);
      }
      onSelect?.(newRange, triggerDate, modifiers, e2);
      return newRange;
    };
    return {
      selected,
      select: select9,
      isSelected: isSelected2
    };
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/selection/useSingle.js
  function useSingle(props, dateLib) {
    const { selected: initiallySelected, required, onSelect } = props;
    const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : void 0);
    const selected = !onSelect ? internallySelected : initiallySelected;
    const { isSameDay: isSameDay3 } = dateLib;
    const isSelected2 = (compareDate) => {
      return selected ? isSameDay3(selected, compareDate) : false;
    };
    const select9 = (triggerDate, modifiers, e2) => {
      let newDate = triggerDate;
      if (!required && selected && selected && isSameDay3(triggerDate, selected)) {
        newDate = void 0;
      }
      if (!onSelect) {
        setSelected(newDate);
      }
      if (required) {
        onSelect?.(newDate, triggerDate, modifiers, e2);
      } else {
        onSelect?.(newDate, triggerDate, modifiers, e2);
      }
      return newDate;
    };
    return {
      selected,
      select: select9,
      isSelected: isSelected2
    };
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useSelection.js
  function useSelection(props, dateLib) {
    const single = useSingle(props, dateLib);
    const multi = useMulti(props, dateLib);
    const range = useRange(props, dateLib);
    switch (props.mode) {
      case "single":
        return single;
      case "multiple":
        return multi;
      case "range":
        return range;
      default:
        return void 0;
    }
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/toTimeZone.js
  function toTimeZone(date, timeZone) {
    if (date instanceof TZDate && date.timeZone === timeZone) {
      return date;
    }
    return new TZDate(date, timeZone);
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.js
  function toZoneNoon(date, timeZone, noonSafe) {
    if (!noonSafe)
      return toTimeZone(date, timeZone);
    const zoned = toTimeZone(date, timeZone);
    const noonZoned = new TZDate(zoned.getFullYear(), zoned.getMonth(), zoned.getDate(), 12, 0, 0, timeZone);
    return new Date(noonZoned.getTime());
  }
  function convertMatcher(matcher, timeZone, noonSafe) {
    if (typeof matcher === "boolean" || typeof matcher === "function") {
      return matcher;
    }
    if (matcher instanceof Date) {
      return toZoneNoon(matcher, timeZone, noonSafe);
    }
    if (Array.isArray(matcher)) {
      return matcher.map((value) => value instanceof Date ? toZoneNoon(value, timeZone, noonSafe) : value);
    }
    if (isDateRange(matcher)) {
      return {
        ...matcher,
        from: matcher.from ? toTimeZone(matcher.from, timeZone) : matcher.from,
        to: matcher.to ? toTimeZone(matcher.to, timeZone) : matcher.to
      };
    }
    if (isDateInterval(matcher)) {
      return {
        before: toZoneNoon(matcher.before, timeZone, noonSafe),
        after: toZoneNoon(matcher.after, timeZone, noonSafe)
      };
    }
    if (isDateAfterType(matcher)) {
      return {
        after: toZoneNoon(matcher.after, timeZone, noonSafe)
      };
    }
    if (isDateBeforeType(matcher)) {
      return {
        before: toZoneNoon(matcher.before, timeZone, noonSafe)
      };
    }
    return matcher;
  }
  function convertMatchersToTimeZone(matchers, timeZone, noonSafe) {
    if (!matchers) {
      return matchers;
    }
    if (Array.isArray(matchers)) {
      return matchers.map((matcher) => convertMatcher(matcher, timeZone, noonSafe));
    }
    return convertMatcher(matchers, timeZone, noonSafe);
  }

  // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/DayPicker.js
  function DayPicker(initialProps) {
    let props = initialProps;
    const timeZone = props.timeZone;
    if (timeZone) {
      props = {
        ...initialProps,
        timeZone
      };
      if (props.today) {
        props.today = toTimeZone(props.today, timeZone);
      }
      if (props.month) {
        props.month = toTimeZone(props.month, timeZone);
      }
      if (props.defaultMonth) {
        props.defaultMonth = toTimeZone(props.defaultMonth, timeZone);
      }
      if (props.startMonth) {
        props.startMonth = toTimeZone(props.startMonth, timeZone);
      }
      if (props.endMonth) {
        props.endMonth = toTimeZone(props.endMonth, timeZone);
      }
      if (props.mode === "single" && props.selected) {
        props.selected = toTimeZone(props.selected, timeZone);
      } else if (props.mode === "multiple" && props.selected) {
        props.selected = props.selected?.map((date) => toTimeZone(date, timeZone));
      } else if (props.mode === "range" && props.selected) {
        props.selected = {
          from: props.selected.from ? toTimeZone(props.selected.from, timeZone) : props.selected.from,
          to: props.selected.to ? toTimeZone(props.selected.to, timeZone) : props.selected.to
        };
      }
      if (props.disabled !== void 0) {
        props.disabled = convertMatchersToTimeZone(props.disabled, timeZone);
      }
      if (props.hidden !== void 0) {
        props.hidden = convertMatchersToTimeZone(props.hidden, timeZone);
      }
      if (props.modifiers) {
        const nextModifiers = {};
        Object.keys(props.modifiers).forEach((key) => {
          nextModifiers[key] = convertMatchersToTimeZone(props.modifiers?.[key], timeZone);
        });
        props.modifiers = nextModifiers;
      }
    }
    const { components, formatters: formatters2, labels, dateLib, locale, classNames } = (0, import_react36.useMemo)(() => {
      const locale2 = { ...enUS2, ...props.locale };
      const weekStartsOn = props.broadcastCalendar ? 1 : props.weekStartsOn;
      const noonOverrides = props.noonSafe && props.timeZone ? createNoonOverrides(props.timeZone, {
        weekStartsOn,
        locale: locale2
      }) : void 0;
      const overrides = props.dateLib && noonOverrides ? { ...noonOverrides, ...props.dateLib } : props.dateLib ?? noonOverrides;
      const dateLib2 = new DateLib({
        locale: locale2,
        weekStartsOn,
        firstWeekContainsDate: props.firstWeekContainsDate,
        useAdditionalWeekYearTokens: props.useAdditionalWeekYearTokens,
        useAdditionalDayOfYearTokens: props.useAdditionalDayOfYearTokens,
        timeZone: props.timeZone,
        numerals: props.numerals
      }, overrides);
      return {
        dateLib: dateLib2,
        components: getComponents(props.components),
        formatters: getFormatters(props.formatters),
        labels: getLabels(props.labels, dateLib2.options),
        locale: locale2,
        classNames: { ...getDefaultClassNames(), ...props.classNames }
      };
    }, [
      props.locale,
      props.broadcastCalendar,
      props.weekStartsOn,
      props.firstWeekContainsDate,
      props.useAdditionalWeekYearTokens,
      props.useAdditionalDayOfYearTokens,
      props.timeZone,
      props.numerals,
      props.dateLib,
      props.noonSafe,
      props.components,
      props.formatters,
      props.labels,
      props.classNames
    ]);
    if (!props.today) {
      props = { ...props, today: dateLib.today() };
    }
    const { captionLayout, mode, navLayout, numberOfMonths = 1, onDayBlur, onDayClick, onDayFocus, onDayKeyDown, onDayMouseEnter, onDayMouseLeave, onNextClick, onPrevClick, showWeekNumber, styles } = props;
    const { formatCaption: formatCaption2, formatDay: formatDay2, formatMonthDropdown: formatMonthDropdown2, formatWeekNumber: formatWeekNumber2, formatWeekNumberHeader: formatWeekNumberHeader2, formatWeekdayName: formatWeekdayName2, formatYearDropdown: formatYearDropdown2 } = formatters2;
    const calendar = useCalendar(props, dateLib);
    const { days, months, navStart, navEnd, previousMonth, nextMonth, goToMonth } = calendar;
    const getModifiers = createGetModifiers(days, props, navStart, navEnd, dateLib);
    const { isSelected: isSelected2, select: select9, selected: selectedValue } = useSelection(props, dateLib) ?? {};
    const { blur, focused, isFocusTarget, moveFocus, setFocused } = useFocus2(props, calendar, getModifiers, isSelected2 ?? (() => false), dateLib);
    const { labelDayButton: labelDayButton2, labelGridcell: labelGridcell2, labelGrid: labelGrid2, labelMonthDropdown: labelMonthDropdown2, labelNav: labelNav2, labelPrevious: labelPrevious2, labelNext: labelNext2, labelWeekday: labelWeekday2, labelWeekNumber: labelWeekNumber2, labelWeekNumberHeader: labelWeekNumberHeader2, labelYearDropdown: labelYearDropdown2 } = labels;
    const weekdays = (0, import_react36.useMemo)(() => getWeekdays(dateLib, props.ISOWeek, props.broadcastCalendar, props.today), [dateLib, props.ISOWeek, props.broadcastCalendar, props.today]);
    const isInteractive = mode !== void 0 || onDayClick !== void 0;
    const handlePreviousClick = (0, import_react36.useCallback)(() => {
      if (!previousMonth)
        return;
      goToMonth(previousMonth);
      onPrevClick?.(previousMonth);
    }, [previousMonth, goToMonth, onPrevClick]);
    const handleNextClick = (0, import_react36.useCallback)(() => {
      if (!nextMonth)
        return;
      goToMonth(nextMonth);
      onNextClick?.(nextMonth);
    }, [goToMonth, nextMonth, onNextClick]);
    const handleDayClick = (0, import_react36.useCallback)((day, m2) => (e2) => {
      e2.preventDefault();
      e2.stopPropagation();
      setFocused(day);
      if (m2.disabled) {
        return;
      }
      select9?.(day.date, m2, e2);
      onDayClick?.(day.date, m2, e2);
    }, [select9, onDayClick, setFocused]);
    const handleDayFocus = (0, import_react36.useCallback)((day, m2) => (e2) => {
      setFocused(day);
      onDayFocus?.(day.date, m2, e2);
    }, [onDayFocus, setFocused]);
    const handleDayBlur = (0, import_react36.useCallback)((day, m2) => (e2) => {
      blur();
      onDayBlur?.(day.date, m2, e2);
    }, [blur, onDayBlur]);
    const handleDayKeyDown = (0, import_react36.useCallback)((day, modifiers) => (e2) => {
      const keyMap = {
        ArrowLeft: [
          e2.shiftKey ? "month" : "day",
          props.dir === "rtl" ? "after" : "before"
        ],
        ArrowRight: [
          e2.shiftKey ? "month" : "day",
          props.dir === "rtl" ? "before" : "after"
        ],
        ArrowDown: [e2.shiftKey ? "year" : "week", "after"],
        ArrowUp: [e2.shiftKey ? "year" : "week", "before"],
        PageUp: [e2.shiftKey ? "year" : "month", "before"],
        PageDown: [e2.shiftKey ? "year" : "month", "after"],
        Home: ["startOfWeek", "before"],
        End: ["endOfWeek", "after"]
      };
      if (keyMap[e2.key]) {
        e2.preventDefault();
        e2.stopPropagation();
        const [moveBy, moveDir] = keyMap[e2.key];
        moveFocus(moveBy, moveDir);
      }
      onDayKeyDown?.(day.date, modifiers, e2);
    }, [moveFocus, onDayKeyDown, props.dir]);
    const handleDayMouseEnter = (0, import_react36.useCallback)((day, modifiers) => (e2) => {
      onDayMouseEnter?.(day.date, modifiers, e2);
    }, [onDayMouseEnter]);
    const handleDayMouseLeave = (0, import_react36.useCallback)((day, modifiers) => (e2) => {
      onDayMouseLeave?.(day.date, modifiers, e2);
    }, [onDayMouseLeave]);
    const handleMonthChange = (0, import_react36.useCallback)((date, monthOffset) => (e2) => {
      const selectedMonth = Number(e2.target.value);
      const month = dateLib.setMonth(dateLib.startOfMonth(date), selectedMonth);
      goToMonth(dateLib.addMonths(month, -monthOffset));
    }, [dateLib, goToMonth]);
    const handleYearChange = (0, import_react36.useCallback)((date, monthOffset) => (e2) => {
      const selectedYear = Number(e2.target.value);
      const month = dateLib.setYear(dateLib.startOfMonth(date), selectedYear);
      goToMonth(dateLib.addMonths(month, -monthOffset));
    }, [dateLib, goToMonth]);
    const { className, style } = (0, import_react36.useMemo)(() => ({
      className: [classNames[UI.Root], props.className].filter(Boolean).join(" "),
      style: { ...styles?.[UI.Root], ...props.style }
    }), [classNames, props.className, props.style, styles]);
    const dataAttributes = getDataAttributes(props);
    const getDropdownStyle = (dropdown) => {
      const dropdownStyle = styles?.[UI.Dropdown];
      const specificDropdownStyle = styles?.[dropdown];
      if (!dropdownStyle && !specificDropdownStyle) {
        return void 0;
      }
      return {
        ...dropdownStyle,
        ...specificDropdownStyle
      };
    };
    const rootElRef = (0, import_react36.useRef)(null);
    useAnimation(rootElRef, Boolean(props.animate), {
      classNames,
      months,
      focused,
      dateLib
    });
    const contextValue = {
      dayPickerProps: props,
      selected: selectedValue,
      select: select9,
      isSelected: isSelected2,
      months,
      nextMonth,
      previousMonth,
      goToMonth,
      getModifiers,
      components,
      classNames,
      styles,
      labels,
      formatters: formatters2
    };
    return import_react36.default.createElement(
      dayPickerContext.Provider,
      { value: contextValue },
      import_react36.default.createElement(
        components.Root,
        { rootRef: props.animate ? rootElRef : void 0, className, style, dir: props.dir, id: props.id, lang: props.lang ?? locale.code, nonce: props.nonce, title: props.title, role: props.role, "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], ...dataAttributes },
        import_react36.default.createElement(
          components.Months,
          { className: classNames[UI.Months], style: styles?.[UI.Months] },
          !props.hideNavigation && !navLayout && import_react36.default.createElement(components.Nav, { "data-animated-nav": props.animate ? "true" : void 0, className: classNames[UI.Nav], style: styles?.[UI.Nav], "aria-label": labelNav2(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth, nextMonth }),
          months.map((calendarMonth, displayIndex) => {
            const monthOffset = props.reverseMonths ? months.length - 1 - displayIndex : displayIndex;
            return import_react36.default.createElement(
              components.Month,
              {
                "data-animated-month": props.animate ? "true" : void 0,
                className: classNames[UI.Month],
                style: styles?.[UI.Month],
                // biome-ignore lint/suspicious/noArrayIndexKey: breaks animation
                key: displayIndex,
                displayIndex,
                calendarMonth
              },
              navLayout === "around" && !props.hideNavigation && displayIndex === 0 && import_react36.default.createElement(
                components.PreviousMonthButton,
                { type: "button", className: classNames[UI.PreviousMonthButton], style: styles?.[UI.PreviousMonthButton], tabIndex: previousMonth ? void 0 : -1, "aria-disabled": previousMonth ? void 0 : true, "aria-label": labelPrevious2(previousMonth), onClick: handlePreviousClick, "data-animated-button": props.animate ? "true" : void 0 },
                import_react36.default.createElement(components.Chevron, { disabled: previousMonth ? void 0 : true, className: classNames[UI.Chevron], style: styles?.[UI.Chevron], orientation: props.dir === "rtl" ? "right" : "left" })
              ),
              import_react36.default.createElement(components.MonthCaption, { "data-animated-caption": props.animate ? "true" : void 0, className: classNames[UI.MonthCaption], style: styles?.[UI.MonthCaption], calendarMonth, displayIndex }, captionLayout?.startsWith("dropdown") ? import_react36.default.createElement(
                components.DropdownNav,
                { className: classNames[UI.Dropdowns], style: styles?.[UI.Dropdowns] },
                (() => {
                  const monthControl = captionLayout === "dropdown" || captionLayout === "dropdown-months" ? import_react36.default.createElement(components.MonthsDropdown, { key: "month", className: classNames[UI.MonthsDropdown], "aria-label": labelMonthDropdown2(), disabled: Boolean(props.disableNavigation), onChange: handleMonthChange(calendarMonth.date, monthOffset), options: getMonthOptions(calendarMonth.date, navStart, navEnd, formatters2, dateLib), style: getDropdownStyle(UI.MonthsDropdown), value: dateLib.getMonth(calendarMonth.date) }) : import_react36.default.createElement("span", { key: "month" }, formatMonthDropdown2(calendarMonth.date, dateLib));
                  const yearControl = captionLayout === "dropdown" || captionLayout === "dropdown-years" ? import_react36.default.createElement(components.YearsDropdown, { key: "year", className: classNames[UI.YearsDropdown], "aria-label": labelYearDropdown2(dateLib.options), disabled: Boolean(props.disableNavigation), onChange: handleYearChange(calendarMonth.date, monthOffset), options: getYearOptions(navStart, navEnd, formatters2, dateLib, Boolean(props.reverseYears)), style: getDropdownStyle(UI.YearsDropdown), value: dateLib.getYear(calendarMonth.date) }) : import_react36.default.createElement("span", { key: "year" }, formatYearDropdown2(calendarMonth.date, dateLib));
                  const controls = dateLib.getMonthYearOrder() === "year-first" ? [yearControl, monthControl] : [monthControl, yearControl];
                  return controls;
                })(),
                import_react36.default.createElement("span", { role: "status", "aria-live": "polite", style: {
                  border: 0,
                  clip: "rect(0 0 0 0)",
                  height: "1px",
                  margin: "-1px",
                  overflow: "hidden",
                  padding: 0,
                  position: "absolute",
                  width: "1px",
                  whiteSpace: "nowrap",
                  wordWrap: "normal"
                } }, formatCaption2(calendarMonth.date, dateLib.options, dateLib))
              ) : import_react36.default.createElement(components.CaptionLabel, { className: classNames[UI.CaptionLabel], style: styles?.[UI.CaptionLabel], role: "status", "aria-live": "polite" }, formatCaption2(calendarMonth.date, dateLib.options, dateLib))),
              navLayout === "around" && !props.hideNavigation && displayIndex === numberOfMonths - 1 && import_react36.default.createElement(
                components.NextMonthButton,
                { type: "button", className: classNames[UI.NextMonthButton], style: styles?.[UI.NextMonthButton], tabIndex: nextMonth ? void 0 : -1, "aria-disabled": nextMonth ? void 0 : true, "aria-label": labelNext2(nextMonth), onClick: handleNextClick, "data-animated-button": props.animate ? "true" : void 0 },
                import_react36.default.createElement(components.Chevron, { disabled: nextMonth ? void 0 : true, className: classNames[UI.Chevron], style: styles?.[UI.Chevron], orientation: props.dir === "rtl" ? "left" : "right" })
              ),
              displayIndex === numberOfMonths - 1 && navLayout === "after" && !props.hideNavigation && import_react36.default.createElement(components.Nav, { "data-animated-nav": props.animate ? "true" : void 0, className: classNames[UI.Nav], style: styles?.[UI.Nav], "aria-label": labelNav2(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth, nextMonth }),
              import_react36.default.createElement(
                components.MonthGrid,
                { role: "grid", "aria-multiselectable": mode === "multiple" || mode === "range", "aria-label": labelGrid2(calendarMonth.date, dateLib.options, dateLib) || void 0, className: classNames[UI.MonthGrid], style: styles?.[UI.MonthGrid] },
                !props.hideWeekdays && import_react36.default.createElement(
                  components.Weekdays,
                  { "data-animated-weekdays": props.animate ? "true" : void 0, className: classNames[UI.Weekdays], style: styles?.[UI.Weekdays] },
                  showWeekNumber && import_react36.default.createElement(components.WeekNumberHeader, { "aria-label": labelWeekNumberHeader2(dateLib.options), className: classNames[UI.WeekNumberHeader], style: styles?.[UI.WeekNumberHeader], scope: "col" }, formatWeekNumberHeader2()),
                  weekdays.map((weekday) => import_react36.default.createElement(components.Weekday, { "aria-label": labelWeekday2(weekday, dateLib.options, dateLib), className: classNames[UI.Weekday], key: String(weekday), style: styles?.[UI.Weekday], scope: "col" }, formatWeekdayName2(weekday, dateLib.options, dateLib)))
                ),
                import_react36.default.createElement(components.Weeks, { "data-animated-weeks": props.animate ? "true" : void 0, className: classNames[UI.Weeks], style: styles?.[UI.Weeks] }, calendarMonth.weeks.map((week) => {
                  return import_react36.default.createElement(
                    components.Week,
                    { className: classNames[UI.Week], key: week.weekNumber, style: styles?.[UI.Week], week },
                    showWeekNumber && import_react36.default.createElement(components.WeekNumber, { week, style: styles?.[UI.WeekNumber], "aria-label": labelWeekNumber2(week.weekNumber, {
                      locale
                    }), className: classNames[UI.WeekNumber], scope: "row", role: "rowheader" }, formatWeekNumber2(week.weekNumber, dateLib)),
                    week.days.map((day) => {
                      const { date } = day;
                      const modifiers = getModifiers(day);
                      modifiers[DayFlag.focused] = !modifiers.hidden && Boolean(focused?.isEqualTo(day));
                      modifiers[SelectionState.selected] = isSelected2?.(date) || modifiers.selected;
                      if (isDateRange(selectedValue)) {
                        const { from, to: to2 } = selectedValue;
                        modifiers[SelectionState.range_start] = Boolean(from && to2 && dateLib.isSameDay(date, from));
                        modifiers[SelectionState.range_end] = Boolean(from && to2 && dateLib.isSameDay(date, to2));
                        modifiers[SelectionState.range_middle] = rangeIncludesDate(selectedValue, date, true, dateLib);
                      }
                      const style2 = getStyleForModifiers(modifiers, styles, props.modifiersStyles);
                      const className2 = getClassNamesForModifiers(modifiers, classNames, props.modifiersClassNames);
                      const ariaLabel = !isInteractive && !modifiers.hidden ? labelGridcell2(date, modifiers, dateLib.options, dateLib) : void 0;
                      return import_react36.default.createElement(components.Day, { key: `${day.isoDate}_${day.displayMonthId}`, day, modifiers, className: className2.join(" "), style: style2, role: "gridcell", "aria-selected": modifiers.selected || void 0, "aria-label": ariaLabel, "data-day": day.isoDate, "data-month": day.outside ? day.dateMonthId : void 0, "data-selected": modifiers.selected || void 0, "data-disabled": modifiers.disabled || void 0, "data-hidden": modifiers.hidden || void 0, "data-outside": day.outside || void 0, "data-focused": modifiers.focused || void 0, "data-today": modifiers.today || void 0 }, !modifiers.hidden && isInteractive ? import_react36.default.createElement(components.DayButton, { className: classNames[UI.DayButton], style: styles?.[UI.DayButton], type: "button", day, modifiers, disabled: !modifiers.focused && modifiers.disabled || void 0, "aria-disabled": modifiers.focused && modifiers.disabled || void 0, tabIndex: isFocusTarget(day) ? 0 : -1, "aria-label": labelDayButton2(date, modifiers, dateLib.options, dateLib), onClick: handleDayClick(day, modifiers), onBlur: handleDayBlur(day, modifiers), onFocus: handleDayFocus(day, modifiers), onKeyDown: handleDayKeyDown(day, modifiers), onMouseEnter: handleDayMouseEnter(day, modifiers), onMouseLeave: handleDayMouseLeave(day, modifiers) }, formatDay2(date, dateLib.options, dateLib)) : !modifiers.hidden && formatDay2(day.date, dateLib.options, dateLib));
                    })
                  );
                }))
              )
            );
          })
        ),
        props.footer && import_react36.default.createElement(components.Footer, { className: classNames[UI.Footer], style: styles?.[UI.Footer], role: "status", "aria-live": "polite" }, props.footer)
      )
    );
  }

  // packages/ui/build-module/calendar/calendar.mjs
  var import_element57 = __toESM(require_element(), 1);

  // packages/ui/build-module/calendar/utils/components.mjs
  var import_element53 = __toESM(require_element(), 1);
  var import_compose2 = __toESM(require_compose(), 1);
  var import_i18n13 = __toESM(require_i18n(), 1);

  // packages/ui/build-module/icon-button/icon-button.mjs
  var import_element51 = __toESM(require_element(), 1);
  var import_jsx_runtime181 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE24 = "data-wp-hash";
  function getRuntime24() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument24(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash24(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE24}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE24) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle24(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime24();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash24(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE24, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument24(targetDocument) {
    const runtime = getRuntime24();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle24(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle24(hash, css) {
    const runtime = getRuntime24();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle24(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle24("c5cdafb1bc", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0px;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}}");
  }
  var style_default23 = { "icon-button": "_28cfdc260e755391__icon-button", "icon": "f1c70d719989a85a__icon" };
  var IconButton = (0, import_element51.forwardRef)(
    function IconButton2({
      label,
      className,
      // Prevent accidental forwarding of `children`
      children: _children,
      disabled: disabled2,
      focusableWhenDisabled = true,
      icon,
      size: size4,
      shortcut,
      positioner,
      "aria-describedby": ariaDescribedBy,
      "aria-keyshortcuts": ariaKeyShortcuts,
      ...restProps
    }, ref) {
      const classes = clsx_default(style_default23["icon-button"], className);
      const { descriptionId, targetProps } = useKeyboardShortcutProps({
        "aria-describedby": ariaDescribedBy,
        "aria-keyshortcuts": ariaKeyShortcuts,
        shortcut
      });
      return /* @__PURE__ */ (0, import_jsx_runtime181.jsxs)(Root, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime181.jsxs)(
          Trigger,
          {
            ref,
            ...targetProps,
            disabled: disabled2 && !focusableWhenDisabled,
            render: /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(
              Button5,
              {
                ...restProps,
                size: size4,
                "aria-label": label,
                disabled: disabled2,
                focusableWhenDisabled
              }
            ),
            className: classes,
            children: [
              /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(Icon, { icon, size: 24, className: style_default23.icon }),
              shortcut && descriptionId && /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(
                KeyboardShortcutDescription,
                {
                  descriptionId,
                  shortcut
                }
              )
            ]
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime181.jsxs)(Popup, { positioner, children: [
          label,
          shortcut && /* @__PURE__ */ (0, import_jsx_runtime181.jsxs)(import_jsx_runtime181.Fragment, { children: [
            " ",
            /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(KeyboardShortcutDisplay, { shortcut })
          ] })
        ] })
      ] });
    }
  );

  // packages/ui/build-module/calendar/utils/root-context.mjs
  var import_element52 = __toESM(require_element(), 1);
  var RootContext = (0, import_element52.createContext)({});

  // packages/ui/build-module/calendar/utils/components.mjs
  var import_jsx_runtime182 = __toESM(require_jsx_runtime(), 1);
  var PreviewDashStartAndEnd = () => {
    return /* @__PURE__ */ (0, import_jsx_runtime182.jsx)(
      "svg",
      {
        viewBox: "0 0 32 32",
        xmlns: "http://www.w3.org/2000/svg",
        fill: "none",
        stroke: "currentColor",
        strokeDasharray: "3.7677",
        strokeDashoffset: "3.2",
        strokeWidth: "1",
        children: /* @__PURE__ */ (0, import_jsx_runtime182.jsx)("path", { d: "M29.5,0.5 h-27 a2,2 0 0 0 -2,2 v27 a2,2 0 0 0 2,2 h27 a2,2 0 0 0 2,-2 v-27 a2,2 0 0 0 -2,-2" })
      }
    );
  };
  var PreviewDashStart = () => {
    return /* @__PURE__ */ (0, import_jsx_runtime182.jsx)(
      "svg",
      {
        viewBox: "0 0 32 32",
        xmlns: "http://www.w3.org/2000/svg",
        fill: "none",
        stroke: "currentColor",
        strokeDasharray: "3.84516",
        strokeDashoffset: "1.9226",
        strokeWidth: "1",
        children: /* @__PURE__ */ (0, import_jsx_runtime182.jsx)("path", { d: "M32,0.5 h-29.5 a2,2 0 0 0 -2,2 v27 a2,2 0 0 0 2,2 h30" })
      }
    );
  };
  var PreviewDashMiddle = () => {
    return /* @__PURE__ */ (0, import_jsx_runtime182.jsxs)(
      "svg",
      {
        viewBox: "0 0 32 32",
        xmlns: "http://www.w3.org/2000/svg",
        fill: "none",
        stroke: "currentColor",
        strokeDasharray: "3.9 4",
        strokeDashoffset: "2",
        strokeWidth: "1",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime182.jsx)("line", { x1: "0", y1: "0.5", x2: "100", y2: "0.5" }),
          /* @__PURE__ */ (0, import_jsx_runtime182.jsx)("line", { x1: "0", y1: "31.5", x2: "100", y2: "31.5" })
        ]
      }
    );
  };
  var PreviewDashEnd = () => {
    return /* @__PURE__ */ (0, import_jsx_runtime182.jsx)(
      "svg",
      {
        viewBox: "0 0 32 32",
        xmlns: "http://www.w3.org/2000/svg",
        fill: "none",
        stroke: "currentColor",
        strokeDasharray: "3.84516",
        strokeDashoffset: "1.9226",
        strokeWidth: "1",
        children: /* @__PURE__ */ (0, import_jsx_runtime182.jsx)("path", { d: "M0,0.5 h29.5 a2,2 0 0 1 2,2 v27 a2,2 0 0 1 -2,2 h-29.5" })
      }
    );
  };
  function Day2(props) {
    const { day, modifiers, children, ...tdProps } = props;
    let PreviewDash;
    if (modifiers.preview_start && modifiers.preview_end) {
      PreviewDash = PreviewDashStartAndEnd;
    } else if (modifiers.preview_start) {
      PreviewDash = PreviewDashStart;
    } else if (modifiers.preview_end) {
      PreviewDash = PreviewDashEnd;
    } else if (modifiers.preview) {
      PreviewDash = PreviewDashMiddle;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime182.jsxs)("td", { ...tdProps, children: [
      PreviewDash && /* @__PURE__ */ (0, import_jsx_runtime182.jsx)(PreviewDash, {}),
      children
    ] });
  }
  function Root4({ rootRef, ...props }) {
    const { render: render5, ref, role, defaultAriaLabel } = (0, import_element53.useContext)(RootContext);
    const { months, labels } = useDayPicker();
    const hasExplicitLabel = props["aria-label"] !== void 0 || props["aria-labelledby"] !== void 0;
    let ariaLabel = props["aria-label"];
    if (!hasExplicitLabel && defaultAriaLabel && role === "application") {
      const currentMonth = months[0];
      ariaLabel = currentMonth ? (0, import_i18n13.sprintf)(
        // translators: 1: Calendar type. 2: Current month and year.
        (0, import_i18n13.__)("%1$s, %2$s"),
        defaultAriaLabel,
        labels.labelGrid(currentMonth.date)
      ) : defaultAriaLabel;
    }
    const mergedRef = (0, import_compose2.useMergeRefs)([rootRef ?? null, ref ?? null]);
    return useRender({
      render: render5,
      defaultTagName: "div",
      ref: mergedRef,
      props: { ...props, role, "aria-label": ariaLabel }
    });
  }
  function NavButton({
    icon,
    className,
    children: _children,
    "aria-label": label,
    "aria-disabled": ariaDisabled,
    ...props
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime182.jsx)(
      IconButton,
      {
        ...props,
        className,
        label,
        icon,
        variant: "minimal",
        tone: "neutral",
        size: "compact",
        disabled: ariaDisabled === true || ariaDisabled === "true",
        focusableWhenDisabled: true
      }
    );
  }
  function PreviousMonthButton2(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime182.jsx)(NavButton, { ...props, icon: chevron_left_default });
  }
  function NextMonthButton2(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime182.jsx)(NavButton, { ...props, icon: chevron_right_default });
  }

  // packages/ui/build-module/calendar/utils/constants.mjs
  var STYLE_HASH_ATTRIBUTE25 = "data-wp-hash";
  function getRuntime25() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument25(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash25(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE25}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE25) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle25(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime25();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash25(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE25, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument25(targetDocument) {
    const runtime = getRuntime25();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle25(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle25(hash, css) {
    const runtime = getRuntime25();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle25(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle25("9d2212290a", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._2c7ac60ba97b3411__root{--wp-ui-calendar-cell-size:var(--wpds-dimension-size-md,32px);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:inline-block;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);position:relative;z-index:0}._172c492625235710__day{color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);padding:0;position:relative;&:has(._1b64226e315835f8__day-button:disabled){color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}&:has(._1b64226e315835f8__day-button:focus-visible),&:has(._1b64226e315835f8__day-button:hover:not(:disabled)){color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e)}}._1b64226e315835f8__day-button{align-items:center;background:none;border:none;border-radius:var(--wpds-border-radius-sm,2px);color:inherit;cursor:var(--wpds-cursor-control,pointer);display:flex;font:inherit;font-variant-numeric:tabular-nums;height:var(--wp-ui-calendar-cell-size);justify-content:center;margin:0;padding:0;position:relative;width:var(--wp-ui-calendar-cell-size);&:before{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border:none;border-radius:var(--wpds-border-radius-sm,2px);z-index:-1}&:after,&:before{content:"";inset:0;position:absolute}&:after{pointer-events:none;z-index:1}&:disabled{cursor:revert;&:before{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000)}@media (forced-colors:active){text-decoration:line-through}}&:focus-visible:before,&:hover:not(:disabled):before{background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed)}}._66b9a8120581fd4b__caption-label{align-items:center;border:0;display:inline-flex;position:relative;text-transform:capitalize;white-space:nowrap;z-index:1}._2c7ac60ba97b3411__root[dir=rtl] ._395a75bb1930f57e__nav-button{transform:rotate(180deg);transform-origin:50%}._337e5337d49b7f3d__month-caption{align-content:center;display:flex;height:var(--wp-ui-calendar-cell-size);justify-content:center;margin-bottom:var(--wpds-dimension-gap-md,12px)}._110e46230c68e498__months{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-lg,16px);justify-content:center;max-width:fit-content;position:relative}._92915239fedb1fea__month-grid{border-collapse:separate;border-spacing:0 var(--wpds-dimension-gap-xs,4px)}._66b1d4a7b488b496__nav{align-items:center;display:flex;height:var(--wp-ui-calendar-cell-size);inset-block-start:0;inset-inline-end:0;inset-inline-start:0;justify-content:space-between;position:absolute}._7207199709ca5776__weekday{color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-weight:var(--wpds-typography-font-weight-default,400);height:var(--wp-ui-calendar-cell-size);padding:0;text-align:center;text-transform:uppercase;width:var(--wp-ui-calendar-cell-size)}._058175f0f9c495e0__today:after{border:2px solid;border-radius:50%;content:"";height:0;inset-block-start:2px;inset-inline-end:2px;position:absolute;width:0;z-index:1}.acb642920fb0bef5__selected:not(._165d91a726feca9c__range-middle){&:has(._1b64226e315835f8__day-button,._1b64226e315835f8__day-button:hover:not(:disabled)){color:var(--wpds-color-foreground-interactive-neutral-strong,#f0f0f0)}&:has(._1b64226e315835f8__day-button:disabled){color:var(--wpds-color-foreground-interactive-neutral-strong-disabled,#8d8d8d)}._1b64226e315835f8__day-button{&:before{background-color:var(--wpds-color-background-interactive-neutral-strong,#2d2d2d);border:1px solid transparent}&:disabled:before{background-color:var(--wpds-color-background-interactive-neutral-strong-disabled,#e6e6e6)}&:hover:not(:disabled):before{background-color:var(--wpds-color-background-interactive-neutral-strong-active,#1e1e1e)}}}.c259c5c255fda10f__outside{color:var(--wpds-color-foreground-interactive-neutral-weak,#707070)}._4d8957a0ca4ec8f0__hidden{visibility:hidden}.f2523033db055ffe__range-start:not(.c04a453de7b11520__range-end) ._1b64226e315835f8__day-button{&,&:before{border-end-end-radius:0;border-start-end-radius:0}}._165d91a726feca9c__range-middle ._1b64226e315835f8__day-button{&:before{background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);border-color:transparent;border-radius:0;border-style:solid;border-width:1px 0}}.c04a453de7b11520__range-end:not(.f2523033db055ffe__range-start) ._1b64226e315835f8__day-button{&,&:before{border-end-start-radius:0;border-start-start-radius:0}}._81b244e7c541d95e__preview svg{color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);inset:0;pointer-events:none;position:absolute;@media (forced-colors:active){color:inherit}}._81b244e7c541d95e__preview.acb642920fb0bef5__selected:not(._165d91a726feca9c__range-middle) svg{display:none}._2c7ac60ba97b3411__root[dir=rtl] ._81b244e7c541d95e__preview svg{transform:scaleX(-1)}._81b244e7c541d95e__preview._165d91a726feca9c__range-middle ._1b64226e315835f8__day-button:before{border:none}@keyframes _255a1a462a5377db__slide-in-left{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes c21e45f616d6db39__slide-in-right{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes aed80001de9ae226__slide-out-left{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes _7d4779a7f29408f2__slide-out-right{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes _83ba6321b055d687__fade-in{0%{opacity:0}to{opacity:1}}@keyframes _96fbead71248d210__fade-out{0%{opacity:1}to{opacity:0}}._1563bccb09e39c30__caption-after-enter,._60ac2a7fc3208801__weeks-before-exit,._735dacf9052adecd__caption-before-exit,._7f73a6ab85101202__weeks-after-exit,._805d698b56ba4a29__weeks-after-enter,._9721326fbc23a5fb__weeks-before-enter,.c7a3082839155d29__caption-after-exit,.cb8a5ec82ad0885e__caption-before-enter{animation-duration:0s;animation-fill-mode:forwards;animation-timing-function:var(--wpds-motion-easing-balanced,cubic-bezier(.4,0,.2,1));@media not (prefers-reduced-motion){animation-duration:var(--wpds-motion-duration-lg,.3s)}}._2c7ac60ba97b3411__root[dir=rtl] ._805d698b56ba4a29__weeks-after-enter,._9721326fbc23a5fb__weeks-before-enter{animation-name:_255a1a462a5377db__slide-in-left}._2c7ac60ba97b3411__root[dir=rtl] ._7f73a6ab85101202__weeks-after-exit,._60ac2a7fc3208801__weeks-before-exit{animation-name:aed80001de9ae226__slide-out-left}._2c7ac60ba97b3411__root[dir=rtl] ._9721326fbc23a5fb__weeks-before-enter,._805d698b56ba4a29__weeks-after-enter{animation-name:c21e45f616d6db39__slide-in-right}._2c7ac60ba97b3411__root[dir=rtl] ._60ac2a7fc3208801__weeks-before-exit,._7f73a6ab85101202__weeks-after-exit{animation-name:_7d4779a7f29408f2__slide-out-right}._1563bccb09e39c30__caption-after-enter,.cb8a5ec82ad0885e__caption-before-enter{animation-name:_83ba6321b055d687__fade-in}._735dacf9052adecd__caption-before-exit,.c7a3082839155d29__caption-after-exit{animation-name:_96fbead71248d210__fade-out}}}');
  }
  var style_default24 = { "root": "_2c7ac60ba97b3411__root", "day": "_172c492625235710__day", "day-button": "_1b64226e315835f8__day-button", "caption-label": "_66b9a8120581fd4b__caption-label", "nav-button": "_395a75bb1930f57e__nav-button", "month-caption": "_337e5337d49b7f3d__month-caption", "months": "_110e46230c68e498__months", "month-grid": "_92915239fedb1fea__month-grid", "nav": "_66b1d4a7b488b496__nav", "weekday": "_7207199709ca5776__weekday", "today": "_058175f0f9c495e0__today", "selected": "acb642920fb0bef5__selected", "range-middle": "_165d91a726feca9c__range-middle", "outside": "c259c5c255fda10f__outside", "hidden": "_4d8957a0ca4ec8f0__hidden", "range-start": "f2523033db055ffe__range-start", "range-end": "c04a453de7b11520__range-end", "preview": "_81b244e7c541d95e__preview", "weeks-before-enter": "_9721326fbc23a5fb__weeks-before-enter", "weeks-before-exit": "_60ac2a7fc3208801__weeks-before-exit", "weeks-after-enter": "_805d698b56ba4a29__weeks-after-enter", "weeks-after-exit": "_7f73a6ab85101202__weeks-after-exit", "caption-after-enter": "_1563bccb09e39c30__caption-after-enter", "caption-after-exit": "c7a3082839155d29__caption-after-exit", "caption-before-enter": "cb8a5ec82ad0885e__caption-before-enter", "caption-before-exit": "_735dacf9052adecd__caption-before-exit", "slide-in-left": "_255a1a462a5377db__slide-in-left", "slide-out-left": "aed80001de9ae226__slide-out-left", "slide-in-right": "c21e45f616d6db39__slide-in-right", "slide-out-right": "_7d4779a7f29408f2__slide-out-right", "fade-in": "_83ba6321b055d687__fade-in", "fade-out": "_96fbead71248d210__fade-out" };
  if (typeof process === "undefined" || true) {
    registerStyle25("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default10 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle25("08122b3d53", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within,:focus-visible ._81935a08e952f267__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
  }
  var focus_module_default3 = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-parent-visible": "_81935a08e952f267__outset-ring--focus-parent-visible", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" };
  if (typeof process === "undefined" || true) {
    registerStyle25("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default9 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  var CLASSNAMES = {
    root: clsx_default(style_default24.root, resets_default10["box-sizing"]),
    day: style_default24.day,
    day_button: clsx_default(
      style_default24["day-button"],
      global_css_defense_default9.button,
      focus_module_default3["outset-ring--focus-visible"]
    ),
    outside: style_default24.outside,
    caption_label: style_default24["caption-label"],
    button_next: style_default24["nav-button"],
    button_previous: style_default24["nav-button"],
    nav: style_default24.nav,
    month_caption: style_default24["month-caption"],
    months: style_default24.months,
    month_grid: style_default24["month-grid"],
    weekday: style_default24.weekday,
    today: style_default24.today,
    selected: style_default24.selected,
    /*
     * Disabled days are styled through `:has(.day-button:disabled)` rather than
     * a modifier class on the cell, because the two are not equivalent: the
     * focused day keeps its button enabled so it stays reachable. Mapped to
     * `undefined` on purpose, so `@daypicker/react` doesn't fall back to its
     * own `rdp-disabled` class for a modifier we don't style.
     */
    disabled: void 0,
    hidden: style_default24.hidden,
    range_start: style_default24["range-start"],
    range_end: style_default24["range-end"],
    range_middle: style_default24["range-middle"],
    weeks_before_enter: style_default24["weeks-before-enter"],
    weeks_before_exit: style_default24["weeks-before-exit"],
    weeks_after_enter: style_default24["weeks-after-enter"],
    weeks_after_exit: style_default24["weeks-after-exit"],
    caption_after_enter: style_default24["caption-after-enter"],
    caption_after_exit: style_default24["caption-after-exit"],
    caption_before_enter: style_default24["caption-before-enter"],
    caption_before_exit: style_default24["caption-before-exit"]
  };
  var MODIFIER_CLASSNAMES = {
    preview: style_default24.preview
  };
  var COMMON_PROPS = {
    animate: true,
    // Only show days in the current month
    showOutsideDays: false,
    // Hide week number column
    showWeekNumber: false,
    // Show weekdays row
    hideWeekdays: false,
    // Month and year caption are not interactive
    captionLayout: "label",
    // Show a variable number of weeks depending on the month
    fixedWeeks: false,
    // Show navigation buttons
    hideNavigation: false,
    // Class names
    classNames: CLASSNAMES,
    components: {
      Day: Day2,
      Root: Root4,
      PreviousMonthButton: PreviousMonthButton2,
      NextMonthButton: NextMonthButton2
    }
  };

  // packages/ui/build-module/calendar/utils/misc.mjs
  function clampNumberOfMonths(numberOfMonths) {
    return Math.min(3, Math.max(1, numberOfMonths));
  }

  // packages/ui/build-module/calendar/utils/use-controlled-value.mjs
  var import_element54 = __toESM(require_element(), 1);
  function useControlledValue2({
    defaultValue: defaultValue2,
    onChange,
    value: valueProp
  }) {
    const hasValue = typeof valueProp !== "undefined";
    const initialValue = hasValue ? valueProp : defaultValue2;
    const [state2, setState] = (0, import_element54.useState)(initialValue);
    const value = hasValue ? valueProp : state2;
    const uncontrolledSetValue = (0, import_element54.useCallback)(
      (nextValue, ...args) => {
        setState(nextValue);
        onChange?.(nextValue, ...args);
      },
      [onChange]
    );
    let setValue;
    if (hasValue && typeof onChange === "function") {
      setValue = onChange;
    } else if (!hasValue && typeof onChange === "function") {
      setValue = uncontrolledSetValue;
    } else {
      setValue = setState;
    }
    return [value, setValue];
  }

  // packages/ui/build-module/calendar/utils/use-localization-props.mjs
  var import_i18n14 = __toESM(require_i18n(), 1);
  var import_element55 = __toESM(require_element(), 1);
  function isLocaleRTL(locale) {
    const direction = (locale.getTextInfo?.() ?? locale.textInfo)?.direction;
    if (direction) {
      return direction === "rtl";
    }
    return [
      "ar",
      // Arabic
      "he",
      // Hebrew
      "fa",
      // Persian (Farsi)
      "ur",
      // Urdu
      "ps",
      // Pashto
      "syr",
      // Syriac
      "dv",
      // Divehi
      "ku",
      // Kurdish (Sorani)
      "ckb",
      // Central Kurdish (Sorani)
      "ug",
      // Uyghur
      "yi"
      // Yiddish
    ].includes(locale.language);
  }
  function getSupportedLocaleCode(localeCode) {
    if (!localeCode) {
      return;
    }
    let supportedLocaleCode;
    try {
      supportedLocaleCode = Intl.DateTimeFormat.supportedLocalesOf([
        localeCode
      ])[0];
    } catch {
    }
    return supportedLocaleCode;
  }
  function getWeekStartsOn(locale) {
    const firstDay = (locale.getWeekInfo?.() ?? locale.weekInfo)?.firstDay;
    if (firstDay === void 0 || firstDay < 1 || firstDay > 7) {
      return;
    }
    return firstDay % 7;
  }
  var useLocalizationProps = ({
    locale,
    timeZone,
    mode
  }) => {
    return (0, import_element55.useMemo)(() => {
      const isLocaleString = typeof locale === "string";
      const dateFnsLocale = isLocaleString || locale === void 0 ? enUS : locale;
      const supportedLocaleCode = getSupportedLocaleCode(
        isLocaleString ? locale : locale?.code
      );
      const localeCode = supportedLocaleCode ?? "en-US";
      const intlLocale = new Intl.Locale(localeCode);
      const isRightToLeft = supportedLocaleCode !== void 0 ? isLocaleRTL(intlLocale) : (0, import_i18n14.isRTL)();
      const weekStartsOn = isLocaleString || supportedLocaleCode !== void 0 ? getWeekStartsOn(intlLocale) : void 0;
      const monthNameFormatter = new Intl.DateTimeFormat(localeCode, {
        calendar: "gregory",
        year: "numeric",
        month: "long",
        timeZone
      });
      const weekdayNarrowFormatter = new Intl.DateTimeFormat(localeCode, {
        calendar: "gregory",
        weekday: "narrow",
        timeZone
      });
      const weekdayLongFormatter = new Intl.DateTimeFormat(localeCode, {
        calendar: "gregory",
        weekday: "long",
        timeZone
      });
      const fullDateFormatter = new Intl.DateTimeFormat(localeCode, {
        calendar: "gregory",
        weekday: "long",
        year: "numeric",
        month: "long",
        day: "numeric",
        timeZone
      });
      const dayNumberFormatter = new Intl.DateTimeFormat(localeCode, {
        calendar: "gregory",
        day: "numeric",
        timeZone
      });
      return {
        "aria-label": mode === "single" ? (0, import_i18n14.__)("Date calendar") : (0, import_i18n14.__)("Date range calendar"),
        labels: {
          /** The label for the navigation toolbar. */
          labelNav: () => (0, import_i18n14.__)("Navigation bar"),
          /**
           * The label for the month grid.
           * @param date
           */
          labelGrid: monthNameFormatter.format,
          /**
           * The label for the gridcell, when the calendar is not interactive.
           * @param date
           * @param modifiers
           */
          labelGridcell: (date, modifiers) => {
            const formattedDate = fullDateFormatter.format(date);
            let label = formattedDate;
            if (modifiers?.today) {
              label = (0, import_i18n14.sprintf)(
                // translators: %s is the full date (e.g. "Monday, April 29, 2025")
                (0, import_i18n14.__)("Today, %s"),
                formattedDate
              );
            }
            return label;
          },
          /** The label for the "next month" button. */
          labelNext: () => (0, import_i18n14.__)("Next month"),
          /** The label for the "previous month" button. */
          labelPrevious: () => (0, import_i18n14.__)("Previous month"),
          /**
           * The label for the day button.
           * @param date
           * @param modifiers
           */
          labelDayButton: (date, modifiers) => {
            const formattedDate = fullDateFormatter.format(date);
            let label = formattedDate;
            if (modifiers?.today && modifiers?.selected) {
              return (0, import_i18n14.sprintf)(
                // translators: %s is the full date (e.g. "Monday, April 29, 2025")
                (0, import_i18n14.__)("Today, %s, selected"),
                formattedDate
              );
            }
            if (modifiers?.today) {
              label = (0, import_i18n14.sprintf)(
                // translators: %s is the full date (e.g. "Monday, April 29, 2025")
                (0, import_i18n14.__)("Today, %s"),
                formattedDate
              );
            }
            if (modifiers?.selected) {
              label = (0, import_i18n14.sprintf)(
                // translators: %s is the full date (e.g. "Monday, April 29, 2025")
                (0, import_i18n14.__)("%s, selected"),
                formattedDate
              );
            }
            return label;
          },
          /**
           * The label for the weekday.
           * @param date
           */
          labelWeekday: weekdayLongFormatter.format
        },
        locale: dateFnsLocale,
        lang: localeCode,
        dir: isRightToLeft ? "rtl" : "ltr",
        ...weekStartsOn === void 0 ? {} : { weekStartsOn },
        formatters: {
          formatDay: dayNumberFormatter.format,
          formatWeekdayName: weekdayNarrowFormatter.format,
          formatCaption: monthNameFormatter.format
        },
        timeZone
      };
    }, [locale, timeZone, mode]);
  };

  // packages/ui/build-module/calendar/utils/use-preserve-day-focus.mjs
  var import_compose3 = __toESM(require_compose(), 1);
  var import_element56 = __toESM(require_element(), 1);
  function usePreserveDayFocus(forwardedRef, month) {
    const rootRef = (0, import_element56.useRef)(null);
    const hadDayFocusRef = (0, import_element56.useRef)(false);
    const mergedRef = (0, import_compose3.useMergeRefs)([rootRef, forwardedRef]);
    const monthIndex = month ? month.getFullYear() * 12 + month.getMonth() : void 0;
    const onDayFocus = (0, import_element56.useCallback)(() => {
      hadDayFocusRef.current = true;
    }, []);
    const onDayBlur = (0, import_element56.useCallback)(() => {
      hadDayFocusRef.current = false;
    }, []);
    (0, import_element56.useEffect)(() => {
      if (!hadDayFocusRef.current) {
        return;
      }
      const root = rootRef.current;
      if (!root) {
        return;
      }
      const { activeElement: activeElement2, body } = root.ownerDocument;
      if (activeElement2 !== body) {
        const grid = activeElement2?.closest('[role="grid"]');
        hadDayFocusRef.current = !!grid && root.contains(grid);
        return;
      }
      hadDayFocusRef.current = false;
      const focusTarget = root.querySelector(
        '[role="grid"] button[tabindex="0"]:not(:disabled)'
      );
      const enabledControl = root.querySelector(
        'button:not(:disabled):not([aria-disabled="true"])'
      );
      const focusableControl = root.querySelector(
        "button:not(:disabled)"
      );
      (focusTarget ?? enabledControl ?? focusableControl)?.focus();
    }, [monthIndex]);
    return { ref: mergedRef, onDayFocus, onDayBlur };
  }

  // packages/ui/build-module/calendar/calendar.mjs
  var import_jsx_runtime183 = __toESM(require_jsx_runtime(), 1);
  var Calendar = (0, import_element57.forwardRef)(
    function Calendar2({
      defaultValue: defaultValue2,
      value: valueProp,
      onValueChange,
      numberOfMonths = 1,
      locale,
      timeZone,
      month,
      render: render5,
      role = "application",
      "aria-label": ariaLabel,
      labels: customLabels,
      ...props
    }, ref) {
      const { "aria-label": defaultAriaLabel, ...localizationProps } = useLocalizationProps({
        locale,
        timeZone,
        mode: "single"
      });
      const labels = (0, import_element57.useMemo)(
        () => customLabels ? { ...localizationProps.labels, ...customLabels } : localizationProps.labels,
        [localizationProps.labels, customLabels]
      );
      const onChange = (0, import_element57.useCallback)(
        (selected2, triggerDate, modifiers, e2) => {
          onValueChange?.(
            selected2 ?? null,
            triggerDate,
            modifiers,
            e2
          );
        },
        [onValueChange]
      );
      const [selected, setSelected] = useControlledValue2({
        defaultValue: defaultValue2,
        value: valueProp,
        onChange
      });
      const dayFocusProps = usePreserveDayFocus(ref, month);
      const rootContextValue = (0, import_element57.useMemo)(
        () => ({
          render: render5,
          ref: dayFocusProps.ref,
          role,
          defaultAriaLabel
        }),
        [render5, dayFocusProps.ref, role, defaultAriaLabel]
      );
      return /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(RootContext.Provider, { value: rootContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(
        DayPicker,
        {
          ...COMMON_PROPS,
          ...localizationProps,
          ...props,
          "aria-label": ariaLabel,
          mode: "single",
          month,
          numberOfMonths: clampNumberOfMonths(numberOfMonths),
          labels,
          selected: selected ?? void 0,
          onSelect: setSelected,
          onDayFocus: dayFocusProps.onDayFocus,
          onDayBlur: dayFocusProps.onDayBlur
        }
      ) });
    }
  );

  // packages/ui/build-module/calendar/range-calendar.mjs
  var import_element58 = __toESM(require_element(), 1);
  var import_jsx_runtime184 = __toESM(require_jsx_runtime(), 1);
  function usePreviewRange({
    value,
    hoveredDate,
    excludeDisabled,
    resetOnSelect,
    min: min4,
    max: max4,
    disabled: disabled2
  }) {
    return (0, import_element58.useMemo)(() => {
      if (!hoveredDate || !value?.from) {
        return;
      }
      if (resetOnSelect && value.to) {
        return {
          from: hoveredDate,
          to: hoveredDate
        };
      }
      let previewHighlight;
      let potentialNewRange;
      if (hoveredDate < value.from) {
        previewHighlight = {
          from: hoveredDate,
          to: value.from
        };
        potentialNewRange = {
          from: hoveredDate,
          to: value.to ?? value.from
        };
      } else if (value.to && hoveredDate > value.from && hoveredDate < value.to) {
        previewHighlight = {
          from: value.from,
          to: hoveredDate
        };
        potentialNewRange = {
          from: value.from,
          to: hoveredDate
        };
      } else if (hoveredDate > value.from) {
        previewHighlight = {
          from: value.to ?? value.from,
          to: hoveredDate
        };
        potentialNewRange = {
          from: value.from,
          to: hoveredDate
        };
      }
      if (min4 !== void 0 && min4 > 0 && potentialNewRange && differenceInCalendarDays(
        potentialNewRange.to,
        potentialNewRange.from
      ) < min4) {
        previewHighlight = {
          from: hoveredDate,
          to: hoveredDate
        };
      }
      if (max4 !== void 0 && max4 > 0 && potentialNewRange && differenceInCalendarDays(
        potentialNewRange.to,
        potentialNewRange.from
      ) > max4) {
        previewHighlight = {
          from: hoveredDate,
          to: hoveredDate
        };
      }
      if (excludeDisabled && disabled2 && potentialNewRange && rangeContainsModifiers(potentialNewRange, disabled2)) {
        previewHighlight = {
          from: hoveredDate,
          to: hoveredDate
        };
      }
      return previewHighlight;
    }, [
      value,
      hoveredDate,
      excludeDisabled,
      resetOnSelect,
      min4,
      max4,
      disabled2
    ]);
  }
  var RangeCalendar = (0, import_element58.forwardRef)(
    function RangeCalendar2({
      defaultValue: defaultValue2,
      value: valueProp,
      onValueChange,
      numberOfMonths = 1,
      excludeDisabled,
      resetOnSelect = true,
      min: min4,
      max: max4,
      disabled: disabled2,
      locale,
      timeZone,
      month,
      render: render5,
      role = "application",
      "aria-label": ariaLabel,
      labels: customLabels,
      ...props
    }, ref) {
      const { "aria-label": defaultAriaLabel, ...localizationProps } = useLocalizationProps({
        locale,
        timeZone,
        mode: "range"
      });
      const labels = (0, import_element58.useMemo)(
        () => customLabels ? { ...localizationProps.labels, ...customLabels } : localizationProps.labels,
        [localizationProps.labels, customLabels]
      );
      const onChange = (0, import_element58.useCallback)(
        (selected2, triggerDate, modifiers2, e2) => {
          onValueChange?.(
            selected2 ?? null,
            triggerDate,
            modifiers2,
            e2
          );
        },
        [onValueChange]
      );
      const [selected, setSelected] = useControlledValue2({
        defaultValue: defaultValue2,
        value: valueProp,
        onChange
      });
      const dayFocusProps = usePreserveDayFocus(ref, month);
      const [hoveredDate, setHoveredDate] = (0, import_element58.useState)(
        void 0
      );
      const previewRange = usePreviewRange({
        value: selected,
        hoveredDate,
        excludeDisabled,
        resetOnSelect,
        min: min4,
        max: max4,
        disabled: disabled2
      });
      const modifiers = (0, import_element58.useMemo)(() => {
        return {
          preview: previewRange,
          preview_start: previewRange?.from,
          preview_end: previewRange?.to
        };
      }, [previewRange]);
      const rootContextValue = (0, import_element58.useMemo)(
        () => ({
          render: render5,
          ref: dayFocusProps.ref,
          role,
          defaultAriaLabel
        }),
        [render5, dayFocusProps.ref, role, defaultAriaLabel]
      );
      return /* @__PURE__ */ (0, import_jsx_runtime184.jsx)(RootContext.Provider, { value: rootContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime184.jsx)(
        DayPicker,
        {
          ...COMMON_PROPS,
          ...localizationProps,
          ...props,
          "aria-label": ariaLabel,
          mode: "range",
          month,
          numberOfMonths: clampNumberOfMonths(numberOfMonths),
          disabled: disabled2,
          excludeDisabled,
          resetOnSelect,
          min: min4,
          max: max4,
          labels,
          selected: selected ?? void 0,
          onSelect: setSelected,
          onDayFocus: dayFocusProps.onDayFocus,
          onDayBlur: dayFocusProps.onDayBlur,
          onDayMouseEnter: (date) => setHoveredDate(date),
          onDayMouseLeave: () => setHoveredDate(void 0),
          modifiers,
          modifiersClassNames: MODIFIER_CLASSNAMES
        }
      ) });
    }
  );

  // packages/ui/build-module/card/index.mjs
  var card_exports = {};
  __export(card_exports, {
    Content: () => Content,
    FullBleed: () => FullBleed,
    Header: () => Header,
    Root: () => Root5,
    Title: () => Title
  });

  // packages/ui/build-module/card/root.mjs
  var import_element59 = __toESM(require_element(), 1);
  var STYLE_HASH_ATTRIBUTE26 = "data-wp-hash";
  function getRuntime26() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument26(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash26(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE26}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE26) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle26(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime26();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash26(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE26, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument26(targetDocument) {
    const runtime = getRuntime26();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle26(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle26(hash, css) {
    const runtime = getRuntime26();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle26(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle26("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default11 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle26("cb866dcef6", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._02872bf298eadc43__root{--wp-ui-card-padding:var(--wpds-dimension-padding-2xl,24px);--wp-ui-card-header-content-gap:var(--wpds-dimension-gap-xl,24px);--wp-ui-card-header-content-margin:calc(var(--wp-ui-card-header-content-gap) - var(--wp-ui-card-padding));background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:1px solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-lg,8px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;overflow:clip}._5dffdaf2a6e669ac__content,.bbccc92e6ba5662d__header{padding:var(--wp-ui-card-padding);&:not(:first-child):not(:last-child){padding-block-end:0}}.bbccc92e6ba5662d__header+._5dffdaf2a6e669ac__content{margin-block-start:var(--wp-ui-card-header-content-margin);padding-block-start:0}.c1fa192587e1b4a6__fullbleed{margin-inline:calc(var(--wp-ui-card-padding)*-1);width:calc(100% + var(--wp-ui-card-padding)*2)}._02872bf298eadc43__root>:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):first-child>.c1fa192587e1b4a6__fullbleed:first-child{margin-block-start:calc(var(--wp-ui-card-padding)*-1)}:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):last-child>.c1fa192587e1b4a6__fullbleed:last-child{margin-block-end:calc(var(--wp-ui-card-padding)*-1)}}}");
  }
  var style_default25 = { "root": "_02872bf298eadc43__root", "header": "bbccc92e6ba5662d__header", "content": "_5dffdaf2a6e669ac__content", "fullbleed": "c1fa192587e1b4a6__fullbleed" };
  var Root5 = (0, import_element59.forwardRef)(function Card({ render: render5, ...restProps }, ref) {
    const mergedClassName = clsx_default(style_default25.root, resets_default11["box-sizing"]);
    const element = useRender({
      defaultTagName: "div",
      render: render5,
      ref,
      props: mergeProps({ className: mergedClassName }, restProps)
    });
    return element;
  });

  // packages/ui/build-module/card/header.mjs
  var import_element60 = __toESM(require_element(), 1);
  var STYLE_HASH_ATTRIBUTE27 = "data-wp-hash";
  function getRuntime27() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument27(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash27(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE27}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE27) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle27(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime27();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash27(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE27, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument27(targetDocument) {
    const runtime = getRuntime27();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle27(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle27(hash, css) {
    const runtime = getRuntime27();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle27(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle27("cb866dcef6", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._02872bf298eadc43__root{--wp-ui-card-padding:var(--wpds-dimension-padding-2xl,24px);--wp-ui-card-header-content-gap:var(--wpds-dimension-gap-xl,24px);--wp-ui-card-header-content-margin:calc(var(--wp-ui-card-header-content-gap) - var(--wp-ui-card-padding));background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:1px solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-lg,8px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;overflow:clip}._5dffdaf2a6e669ac__content,.bbccc92e6ba5662d__header{padding:var(--wp-ui-card-padding);&:not(:first-child):not(:last-child){padding-block-end:0}}.bbccc92e6ba5662d__header+._5dffdaf2a6e669ac__content{margin-block-start:var(--wp-ui-card-header-content-margin);padding-block-start:0}.c1fa192587e1b4a6__fullbleed{margin-inline:calc(var(--wp-ui-card-padding)*-1);width:calc(100% + var(--wp-ui-card-padding)*2)}._02872bf298eadc43__root>:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):first-child>.c1fa192587e1b4a6__fullbleed:first-child{margin-block-start:calc(var(--wp-ui-card-padding)*-1)}:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):last-child>.c1fa192587e1b4a6__fullbleed:last-child{margin-block-end:calc(var(--wp-ui-card-padding)*-1)}}}");
  }
  var style_default26 = { "root": "_02872bf298eadc43__root", "header": "bbccc92e6ba5662d__header", "content": "_5dffdaf2a6e669ac__content", "fullbleed": "c1fa192587e1b4a6__fullbleed" };
  var Header = (0, import_element60.forwardRef)(
    function CardHeader({ render: render5, ...props }, ref) {
      const element = useRender({
        defaultTagName: "div",
        render: render5,
        ref,
        props: mergeProps({ className: style_default26.header }, props)
      });
      return element;
    }
  );

  // packages/ui/build-module/card/content.mjs
  var import_element61 = __toESM(require_element(), 1);
  var STYLE_HASH_ATTRIBUTE28 = "data-wp-hash";
  function getRuntime28() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument28(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash28(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE28}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE28) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle28(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime28();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash28(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE28, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument28(targetDocument) {
    const runtime = getRuntime28();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle28(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle28(hash, css) {
    const runtime = getRuntime28();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle28(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle28("cb866dcef6", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._02872bf298eadc43__root{--wp-ui-card-padding:var(--wpds-dimension-padding-2xl,24px);--wp-ui-card-header-content-gap:var(--wpds-dimension-gap-xl,24px);--wp-ui-card-header-content-margin:calc(var(--wp-ui-card-header-content-gap) - var(--wp-ui-card-padding));background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:1px solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-lg,8px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;overflow:clip}._5dffdaf2a6e669ac__content,.bbccc92e6ba5662d__header{padding:var(--wp-ui-card-padding);&:not(:first-child):not(:last-child){padding-block-end:0}}.bbccc92e6ba5662d__header+._5dffdaf2a6e669ac__content{margin-block-start:var(--wp-ui-card-header-content-margin);padding-block-start:0}.c1fa192587e1b4a6__fullbleed{margin-inline:calc(var(--wp-ui-card-padding)*-1);width:calc(100% + var(--wp-ui-card-padding)*2)}._02872bf298eadc43__root>:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):first-child>.c1fa192587e1b4a6__fullbleed:first-child{margin-block-start:calc(var(--wp-ui-card-padding)*-1)}:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):last-child>.c1fa192587e1b4a6__fullbleed:last-child{margin-block-end:calc(var(--wp-ui-card-padding)*-1)}}}");
  }
  var style_default27 = { "root": "_02872bf298eadc43__root", "header": "bbccc92e6ba5662d__header", "content": "_5dffdaf2a6e669ac__content", "fullbleed": "c1fa192587e1b4a6__fullbleed" };
  var Content = (0, import_element61.forwardRef)(
    function CardContent({ render: render5, ...props }, ref) {
      const element = useRender({
        defaultTagName: "div",
        render: render5,
        ref,
        props: mergeProps({ className: style_default27.content }, props)
      });
      return element;
    }
  );

  // packages/ui/build-module/card/full-bleed.mjs
  var import_element62 = __toESM(require_element(), 1);
  var STYLE_HASH_ATTRIBUTE29 = "data-wp-hash";
  function getRuntime29() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument29(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash29(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE29}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE29) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle29(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime29();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash29(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE29, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument29(targetDocument) {
    const runtime = getRuntime29();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle29(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle29(hash, css) {
    const runtime = getRuntime29();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle29(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle29("cb866dcef6", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._02872bf298eadc43__root{--wp-ui-card-padding:var(--wpds-dimension-padding-2xl,24px);--wp-ui-card-header-content-gap:var(--wpds-dimension-gap-xl,24px);--wp-ui-card-header-content-margin:calc(var(--wp-ui-card-header-content-gap) - var(--wp-ui-card-padding));background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:1px solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-lg,8px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;overflow:clip}._5dffdaf2a6e669ac__content,.bbccc92e6ba5662d__header{padding:var(--wp-ui-card-padding);&:not(:first-child):not(:last-child){padding-block-end:0}}.bbccc92e6ba5662d__header+._5dffdaf2a6e669ac__content{margin-block-start:var(--wp-ui-card-header-content-margin);padding-block-start:0}.c1fa192587e1b4a6__fullbleed{margin-inline:calc(var(--wp-ui-card-padding)*-1);width:calc(100% + var(--wp-ui-card-padding)*2)}._02872bf298eadc43__root>:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):first-child>.c1fa192587e1b4a6__fullbleed:first-child{margin-block-start:calc(var(--wp-ui-card-padding)*-1)}:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):last-child>.c1fa192587e1b4a6__fullbleed:last-child{margin-block-end:calc(var(--wp-ui-card-padding)*-1)}}}");
  }
  var style_default28 = { "root": "_02872bf298eadc43__root", "header": "bbccc92e6ba5662d__header", "content": "_5dffdaf2a6e669ac__content", "fullbleed": "c1fa192587e1b4a6__fullbleed" };
  var FullBleed = (0, import_element62.forwardRef)(
    function CardFullBleed({ render: render5, ...props }, ref) {
      const element = useRender({
        defaultTagName: "div",
        render: render5,
        ref,
        props: mergeProps(
          { className: style_default28.fullbleed },
          props
        )
      });
      return element;
    }
  );

  // packages/ui/build-module/card/title.mjs
  var import_element63 = __toESM(require_element(), 1);
  var import_jsx_runtime185 = __toESM(require_jsx_runtime(), 1);
  var DEFAULT_TAG = /* @__PURE__ */ (0, import_jsx_runtime185.jsx)("div", {});
  var Title = (0, import_element63.forwardRef)(
    function CardTitle({ render: render5 = DEFAULT_TAG, children, ...props }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime185.jsx)(
        Text,
        {
          ref,
          variant: "heading-lg",
          render: render5,
          ...props,
          children
        }
      );
    }
  );

  // packages/ui/build-module/collapsible/panel.mjs
  var import_element64 = __toESM(require_element(), 1);
  var import_jsx_runtime186 = __toESM(require_jsx_runtime(), 1);
  var Panel = (0, import_element64.forwardRef)(
    function CollapsiblePanel3(props, forwardedRef) {
      return /* @__PURE__ */ (0, import_jsx_runtime186.jsx)(index_parts_exports.Panel, { ref: forwardedRef, ...props });
    }
  );

  // packages/ui/build-module/collapsible/root.mjs
  var import_element65 = __toESM(require_element(), 1);
  var import_jsx_runtime187 = __toESM(require_jsx_runtime(), 1);
  var Root6 = (0, import_element65.forwardRef)(
    function CollapsibleRoot3(props, forwardedRef) {
      return /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(index_parts_exports.Root, { ref: forwardedRef, ...props });
    }
  );

  // packages/ui/build-module/collapsible/trigger.mjs
  var import_element66 = __toESM(require_element(), 1);
  var import_jsx_runtime188 = __toESM(require_jsx_runtime(), 1);
  var Trigger3 = (0, import_element66.forwardRef)(
    function CollapsibleTrigger3(props, forwardedRef) {
      return /* @__PURE__ */ (0, import_jsx_runtime188.jsx)(index_parts_exports.Trigger, { ref: forwardedRef, ...props });
    }
  );

  // packages/ui/build-module/collapsible-card/index.mjs
  var collapsible_card_exports = {};
  __export(collapsible_card_exports, {
    Content: () => Content2,
    Header: () => Header2,
    HeaderDescription: () => HeaderDescription,
    Root: () => Root32
  });

  // packages/ui/build-module/collapsible-card/root.mjs
  var import_element67 = __toESM(require_element(), 1);
  var import_jsx_runtime189 = __toESM(require_jsx_runtime(), 1);
  var Root32 = (0, import_element67.forwardRef)(
    function CollapsibleCardRoot({ render: render5, ...restProps }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime189.jsx)(
        Root6,
        {
          ref,
          render: /* @__PURE__ */ (0, import_jsx_runtime189.jsx)(Root5, { render: render5 }),
          ...restProps
        }
      );
    }
  );

  // packages/ui/build-module/collapsible-card/header.mjs
  var import_compose4 = __toESM(require_compose(), 1);
  var import_element69 = __toESM(require_element(), 1);

  // packages/ui/build-module/collapsible-card/context.mjs
  var import_element68 = __toESM(require_element(), 1);
  var HeaderDescriptionIdContext = (0, import_element68.createContext)(null);

  // packages/ui/build-module/collapsible-card/header.mjs
  var import_jsx_runtime190 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE30 = "data-wp-hash";
  function getRuntime30() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument30(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash30(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE30}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE30) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle30(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime30();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash30(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE30, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument30(targetDocument) {
    const runtime = getRuntime30();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle30(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle30(hash, css) {
    const runtime = getRuntime30();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle30(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle30("64bdb4d46e", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._626190151275d6d3__heading-wrapper{--_gcd-heading-color:inherit;--_gcd-heading-font-size:inherit;--_gcd-heading-font-weight:inherit;--_gcd-heading-margin:0;font-family:inherit;line-height:inherit}.cab17c7a373cb60d__header-content{flex:1;min-width:0}._92ebbaa30c8a1d05__header-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.dd89d27c4f15912d__header-trigger-positioner{align-self:flex-start;flex-shrink:0;margin-block-start:calc(var(--wpds-typography-line-height-sm, 20px)/2);max-height:0;overflow:visible}.bcfab5f2448bafef__header-trigger-wrapper{border-radius:var(--wpds-border-radius-sm,2px);display:flex;translate:0 -50%}._3106f8d2b0330faa__header-trigger{@media not (prefers-reduced-motion){transition:rotate .15s ease-out}}._5d2dfcb4085c6d0f__header[data-panel-open] ._3106f8d2b0330faa__header-trigger{rotate:180deg}._5d2dfcb4085c6d0f__header[data-disabled] ._3106f8d2b0330faa__header-trigger{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}.e34cf37ccd0d81e0__content{height:var(--collapsible-panel-height);margin-block-start:var(--wp-ui-card-header-content-margin);overflow:hidden;&._03cfdbcd710393c9__overflow-visible{overflow:visible}&[hidden]:not([hidden=until-found]){display:none}&[data-ending-style],&[data-starting-style]{height:0}@media not (prefers-reduced-motion){transition:all .15s ease-out}}}@layer compositions{._41bfdbf7b6c087c2__content-inner{padding-block-start:0}._5d2dfcb4085c6d0f__header{align-items:stretch;display:flex;flex-direction:row;gap:var(--wpds-dimension-gap-sm,8px);outline:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}}}}");
  }
  var style_default29 = { "heading-wrapper": "_626190151275d6d3__heading-wrapper", "header-content": "cab17c7a373cb60d__header-content", "header-description": "_92ebbaa30c8a1d05__header-description", "header-trigger-positioner": "dd89d27c4f15912d__header-trigger-positioner", "header-trigger-wrapper": "bcfab5f2448bafef__header-trigger-wrapper", "header-trigger": "_3106f8d2b0330faa__header-trigger", "header": "_5d2dfcb4085c6d0f__header", "content": "e34cf37ccd0d81e0__content", "overflow-visible": "_03cfdbcd710393c9__overflow-visible", "content-inner": "_41bfdbf7b6c087c2__content-inner" };
  if (typeof process === "undefined" || true) {
    registerStyle30("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default10 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  if (typeof process === "undefined" || true) {
    registerStyle30("08122b3d53", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within,:focus-visible ._81935a08e952f267__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
  }
  var focus_module_default4 = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-parent-visible": "_81935a08e952f267__outset-ring--focus-parent-visible", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" };
  var Header2 = (0, import_element69.forwardRef)(
    function CollapsibleCardHeader({
      children,
      className,
      render: render5,
      "aria-describedby": ariaDescribedByProp,
      ...restProps
    }, ref) {
      const [descriptionIds, setDescriptionIds] = (0, import_element69.useState)(
        []
      );
      const [orderedDescriptionIds, setOrderedDescriptionIds] = (0, import_element69.useState)([]);
      const headerContentRef = (0, import_element69.useRef)(null);
      const registerDescriptionId = (0, import_element69.useCallback)((id) => {
        setDescriptionIds((currentDescriptionIds) => {
          if (currentDescriptionIds.includes(id)) {
            return currentDescriptionIds;
          }
          return [...currentDescriptionIds, id];
        });
        return () => {
          setDescriptionIds(
            (currentDescriptionIds) => currentDescriptionIds.filter(
              (descriptionId) => descriptionId !== id
            )
          );
        };
      }, []);
      const contextValue = (0, import_element69.useMemo)(
        () => ({ registerDescriptionId }),
        [registerDescriptionId]
      );
      (0, import_compose4.useIsomorphicLayoutEffect)(() => {
        const registeredDescriptionIds = new Set(descriptionIds);
        const nextDescriptionIds = Array.from(
          headerContentRef.current?.querySelectorAll("[id]") ?? []
        ).map((element) => element.id).filter((id) => registeredDescriptionIds.has(id));
        setOrderedDescriptionIds((currentDescriptionIds) => {
          if (currentDescriptionIds.length === nextDescriptionIds.length && currentDescriptionIds.every(
            (id, index3) => id === nextDescriptionIds[index3]
          )) {
            return currentDescriptionIds;
          }
          return nextDescriptionIds;
        });
      });
      const ariaDescribedBy = Array.from(
        /* @__PURE__ */ new Set([
          ...ariaDescribedByProp?.split(/\s+/).filter(Boolean) ?? [],
          ...orderedDescriptionIds
        ])
      ).join(" ") || void 0;
      return useRender({
        defaultTagName: "div",
        render: render5,
        ref,
        props: mergeProps(restProps, {
          className: clsx_default(
            global_css_defense_default10.heading,
            style_default29["heading-wrapper"],
            className
          ),
          children: /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(HeaderDescriptionIdContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime190.jsxs)(
            Trigger3,
            {
              className: style_default29.header,
              render: /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(Header, {}),
              nativeButton: false,
              "aria-describedby": ariaDescribedBy,
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(
                  "div",
                  {
                    ref: headerContentRef,
                    className: style_default29["header-content"],
                    children
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(
                  "div",
                  {
                    className: clsx_default(
                      style_default29["header-trigger-positioner"]
                    ),
                    children: /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(
                      "div",
                      {
                        className: clsx_default(
                          style_default29["header-trigger-wrapper"],
                          global_css_defense_default10.div,
                          // While the interactive trigger element is the whole header,
                          // the focus ring will be displayed only on the icon to visually
                          // emulate it being the button.
                          focus_module_default4["outset-ring--focus-parent-visible"]
                        ),
                        children: /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(
                          Icon,
                          {
                            icon: chevron_down_default,
                            className: style_default29["header-trigger"]
                          }
                        )
                      }
                    )
                  }
                )
              ]
            }
          ) })
        })
      });
    }
  );

  // packages/ui/build-module/collapsible-card/header-description.mjs
  var import_element70 = __toESM(require_element(), 1);
  var import_jsx_runtime191 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE31 = "data-wp-hash";
  function getRuntime31() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument31(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash31(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE31}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE31) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle31(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime31();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash31(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE31, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument31(targetDocument) {
    const runtime = getRuntime31();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle31(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle31(hash, css) {
    const runtime = getRuntime31();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle31(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle31("64bdb4d46e", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._626190151275d6d3__heading-wrapper{--_gcd-heading-color:inherit;--_gcd-heading-font-size:inherit;--_gcd-heading-font-weight:inherit;--_gcd-heading-margin:0;font-family:inherit;line-height:inherit}.cab17c7a373cb60d__header-content{flex:1;min-width:0}._92ebbaa30c8a1d05__header-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.dd89d27c4f15912d__header-trigger-positioner{align-self:flex-start;flex-shrink:0;margin-block-start:calc(var(--wpds-typography-line-height-sm, 20px)/2);max-height:0;overflow:visible}.bcfab5f2448bafef__header-trigger-wrapper{border-radius:var(--wpds-border-radius-sm,2px);display:flex;translate:0 -50%}._3106f8d2b0330faa__header-trigger{@media not (prefers-reduced-motion){transition:rotate .15s ease-out}}._5d2dfcb4085c6d0f__header[data-panel-open] ._3106f8d2b0330faa__header-trigger{rotate:180deg}._5d2dfcb4085c6d0f__header[data-disabled] ._3106f8d2b0330faa__header-trigger{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}.e34cf37ccd0d81e0__content{height:var(--collapsible-panel-height);margin-block-start:var(--wp-ui-card-header-content-margin);overflow:hidden;&._03cfdbcd710393c9__overflow-visible{overflow:visible}&[hidden]:not([hidden=until-found]){display:none}&[data-ending-style],&[data-starting-style]{height:0}@media not (prefers-reduced-motion){transition:all .15s ease-out}}}@layer compositions{._41bfdbf7b6c087c2__content-inner{padding-block-start:0}._5d2dfcb4085c6d0f__header{align-items:stretch;display:flex;flex-direction:row;gap:var(--wpds-dimension-gap-sm,8px);outline:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}}}}");
  }
  var style_default30 = { "heading-wrapper": "_626190151275d6d3__heading-wrapper", "header-content": "cab17c7a373cb60d__header-content", "header-description": "_92ebbaa30c8a1d05__header-description", "header-trigger-positioner": "dd89d27c4f15912d__header-trigger-positioner", "header-trigger-wrapper": "bcfab5f2448bafef__header-trigger-wrapper", "header-trigger": "_3106f8d2b0330faa__header-trigger", "header": "_5d2dfcb4085c6d0f__header", "content": "e34cf37ccd0d81e0__content", "overflow-visible": "_03cfdbcd710393c9__overflow-visible", "content-inner": "_41bfdbf7b6c087c2__content-inner" };
  var DEFAULT_TAG2 = /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("div", {});
  var HeaderDescription = (0, import_element70.forwardRef)(function CollapsibleCardHeaderDescription({ children, className, id: idProp, render: render5 = DEFAULT_TAG2, ...restProps }, ref) {
    const generatedId = (0, import_element70.useId)();
    const descriptionId = idProp ?? generatedId;
    const context = (0, import_element70.useContext)(HeaderDescriptionIdContext);
    if (!context) {
      throw new Error(
        "CollapsibleCard.HeaderDescription: Missing parent <CollapsibleCard.Header>. Render <CollapsibleCard.HeaderDescription> inside <CollapsibleCard.Header>."
      );
    }
    (0, import_element70.useEffect)(() => {
      return context?.registerDescriptionId(descriptionId);
    }, [context, descriptionId]);
    return /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(
      Text,
      {
        ref,
        variant: "body-md",
        render: render5,
        id: descriptionId,
        "aria-hidden": "true",
        className: clsx_default(style_default30["header-description"], className),
        ...restProps,
        children
      }
    );
  });

  // packages/ui/build-module/collapsible-card/content.mjs
  var import_element71 = __toESM(require_element(), 1);
  var import_jsx_runtime192 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE32 = "data-wp-hash";
  function getRuntime32() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument32(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash32(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE32}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE32) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle32(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime32();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash32(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE32, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument32(targetDocument) {
    const runtime = getRuntime32();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle32(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle32(hash, css) {
    const runtime = getRuntime32();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle32(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle32("64bdb4d46e", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._626190151275d6d3__heading-wrapper{--_gcd-heading-color:inherit;--_gcd-heading-font-size:inherit;--_gcd-heading-font-weight:inherit;--_gcd-heading-margin:0;font-family:inherit;line-height:inherit}.cab17c7a373cb60d__header-content{flex:1;min-width:0}._92ebbaa30c8a1d05__header-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.dd89d27c4f15912d__header-trigger-positioner{align-self:flex-start;flex-shrink:0;margin-block-start:calc(var(--wpds-typography-line-height-sm, 20px)/2);max-height:0;overflow:visible}.bcfab5f2448bafef__header-trigger-wrapper{border-radius:var(--wpds-border-radius-sm,2px);display:flex;translate:0 -50%}._3106f8d2b0330faa__header-trigger{@media not (prefers-reduced-motion){transition:rotate .15s ease-out}}._5d2dfcb4085c6d0f__header[data-panel-open] ._3106f8d2b0330faa__header-trigger{rotate:180deg}._5d2dfcb4085c6d0f__header[data-disabled] ._3106f8d2b0330faa__header-trigger{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}.e34cf37ccd0d81e0__content{height:var(--collapsible-panel-height);margin-block-start:var(--wp-ui-card-header-content-margin);overflow:hidden;&._03cfdbcd710393c9__overflow-visible{overflow:visible}&[hidden]:not([hidden=until-found]){display:none}&[data-ending-style],&[data-starting-style]{height:0}@media not (prefers-reduced-motion){transition:all .15s ease-out}}}@layer compositions{._41bfdbf7b6c087c2__content-inner{padding-block-start:0}._5d2dfcb4085c6d0f__header{align-items:stretch;display:flex;flex-direction:row;gap:var(--wpds-dimension-gap-sm,8px);outline:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}}}}");
  }
  var style_default31 = { "heading-wrapper": "_626190151275d6d3__heading-wrapper", "header-content": "cab17c7a373cb60d__header-content", "header-description": "_92ebbaa30c8a1d05__header-description", "header-trigger-positioner": "dd89d27c4f15912d__header-trigger-positioner", "header-trigger-wrapper": "bcfab5f2448bafef__header-trigger-wrapper", "header-trigger": "_3106f8d2b0330faa__header-trigger", "header": "_5d2dfcb4085c6d0f__header", "content": "e34cf37ccd0d81e0__content", "overflow-visible": "_03cfdbcd710393c9__overflow-visible", "content-inner": "_41bfdbf7b6c087c2__content-inner" };
  var Content2 = (0, import_element71.forwardRef)(
    function CollapsibleCardContent({ className, render: render5, children, hiddenUntilFound = true, ...restProps }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(
        Panel,
        {
          ref,
          className: (state2) => clsx_default(
            style_default31.content,
            state2.open && state2.transitionStatus === "idle" && style_default31["overflow-visible"],
            className
          ),
          hiddenUntilFound,
          ...restProps,
          children: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(
            Content,
            {
              className: style_default31["content-inner"],
              render: render5,
              children
            }
          )
        }
      );
    }
  );

  // packages/ui/build-module/stack/stack.mjs
  var import_element72 = __toESM(require_element(), 1);
  var STYLE_HASH_ATTRIBUTE33 = "data-wp-hash";
  function getRuntime33() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument33(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash33(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE33}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE33) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle33(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime33();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash33(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE33, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument33(targetDocument) {
    const runtime = getRuntime33();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle33(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle33(hash, css) {
    const runtime = getRuntime33();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle33(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle33("32aba35fe1", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._19ce0419607e1896__stack{display:flex}}}");
  }
  var style_default32 = { "stack": "_19ce0419607e1896__stack" };
  var gapTokens = {
    xs: "var(--wpds-dimension-gap-xs, 4px)",
    sm: "var(--wpds-dimension-gap-sm, 8px)",
    md: "var(--wpds-dimension-gap-md, 12px)",
    lg: "var(--wpds-dimension-gap-lg, 16px)",
    xl: "var(--wpds-dimension-gap-xl, 24px)",
    "2xl": "var(--wpds-dimension-gap-2xl, 32px)",
    "3xl": "var(--wpds-dimension-gap-3xl, 40px)"
  };
  var Stack = (0, import_element72.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render: render5, ...props }, ref) {
    const style = {
      gap: gap && gapTokens[gap],
      alignItems: align,
      justifyContent: justify,
      flexDirection: direction,
      flexWrap: wrap
    };
    const element = useRender({
      render: render5,
      ref,
      props: mergeProps(props, { style, className: style_default32.stack })
    });
    return element;
  });

  // packages/ui/build-module/utils/use-schedule-validation.mjs
  var import_compose5 = __toESM(require_compose(), 1);
  var import_element73 = __toESM(require_element(), 1);
  function useScheduleValidation(validate) {
    const validateEvent = (0, import_compose5.useEvent)(validate);
    const timerRef = (0, import_element73.useRef)(null);
    const unmountedRef = (0, import_element73.useRef)(false);
    const scheduleValidation = (0, import_element73.useCallback)(() => {
      if (unmountedRef.current) {
        return;
      }
      if (timerRef.current) {
        clearTimeout(timerRef.current);
      }
      timerRef.current = setTimeout(() => {
        validateEvent();
        timerRef.current = null;
      }, 0);
    }, [validateEvent]);
    (0, import_element73.useEffect)(() => {
      unmountedRef.current = false;
      return () => {
        unmountedRef.current = true;
        if (timerRef.current) {
          clearTimeout(timerRef.current);
        }
      };
    }, []);
    return scheduleValidation;
  }

  // packages/ui/build-module/form/primitives/input/input.mjs
  var import_element76 = __toESM(require_element(), 1);

  // packages/ui/build-module/form/primitives/input-layout/input-layout.mjs
  var import_element74 = __toESM(require_element(), 1);
  var import_jsx_runtime193 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE34 = "data-wp-hash";
  function getRuntime34() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument34(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash34(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE34}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE34) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle34(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime34();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash34(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE34, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument34(targetDocument) {
    const runtime = getRuntime34();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle34(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle34(hash, css) {
    const runtime = getRuntime34();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle34(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle34("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default11 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  if (typeof process === "undefined" || true) {
    registerStyle34("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default12 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle34("e4f4f9600b", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.cb2baafdc08746bb__input-layout{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-md,12px);background-color:var(--wpds-color-background-interactive-neutral,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:var(--wpds-border-width-xs,1px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:max(var(--wpds-typography-font-size-md,13px),16px);height:var(--wpds-dimension-size-lg,40px);line-height:1;@media (min-width:600px){font-size:var(--wpds-typography-font-size-md,13px)}&._0c807a84cbb94e0c__is-size-compact{height:var(--wpds-dimension-size-md,32px)}&._0c807a84cbb94e0c__is-size-compact,&.ed67cda122dc1e7b__is-size-small{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-sm,8px)}&.ed67cda122dc1e7b__is-size-small{height:var(--wpds-dimension-size-sm,24px)}&._6fb7104732387680__is-disabled,&:has([data-can-disable-input-layout][data-disabled]){color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}&:not(._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-disabled,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText}}}&._8097270636ca6100__is-borderless{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border-color:transparent}&:has(._0d7afad74a057888__input-layout-slot:focus-within){--_gcd-div-outline:none;outline:none}&:hover:not(._6fb7104732387680__is-disabled,:has([data-can-disable-input-layout][data-disabled]),._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-active,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e)}&:has(:invalid[data-validity-visible]){--focus-color:var(--wpds-color-stroke-interactive-error,#cc1818);border-color:var(--wpds-color-stroke-interactive-error,#cc1818);&:hover{border-color:var(--wpds-color-stroke-interactive-error-active,#9d0000)}}}.c192b41a12b4387b__slot-wrapper{display:contents}._0d7afad74a057888__input-layout-slot{align-items:center;display:flex;&._0c952682762ca288__is-padding-minimal{--wp-ui-input-layout-prefix-padding-start:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px));--wp-ui-input-layout-suffix-padding-end:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}[data-slot-type=prefix] &{padding-inline-start:var(--wp-ui-input-layout-prefix-padding-start,var(--wp-ui-input-layout-padding-inline))}[data-slot-type=suffix] &{padding-inline-end:var(--wp-ui-input-layout-suffix-padding-end,var(--wp-ui-input-layout-padding-inline))}}}}');
  }
  var style_default33 = { "input-layout": "cb2baafdc08746bb__input-layout", "is-size-compact": "_0c807a84cbb94e0c__is-size-compact", "is-size-small": "ed67cda122dc1e7b__is-size-small", "is-disabled": "_6fb7104732387680__is-disabled", "is-borderless": "_8097270636ca6100__is-borderless", "input-layout-slot": "_0d7afad74a057888__input-layout-slot", "slot-wrapper": "c192b41a12b4387b__slot-wrapper", "is-padding-minimal": "_0c952682762ca288__is-padding-minimal" };
  var InputLayout = (0, import_element74.forwardRef)(
    function InputLayout2({
      className,
      children,
      visuallyDisabled,
      size: size4 = "default",
      isBorderless,
      prefix: prefix2,
      suffix,
      ...restProps
    }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime193.jsxs)(
        "div",
        {
          ref,
          className: clsx_default(
            global_css_defense_default11.div,
            resets_default12["box-sizing"],
            style_default33["input-layout"],
            style_default33[`is-size-${size4}`],
            visuallyDisabled && style_default33["is-disabled"],
            isBorderless && style_default33["is-borderless"],
            className
          ),
          ...restProps,
          children: [
            import_element74.Children.count(prefix2) > 0 && /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(
              "div",
              {
                className: style_default33["slot-wrapper"],
                "data-slot-type": "prefix",
                children: prefix2
              }
            ),
            children,
            import_element74.Children.count(suffix) > 0 && /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(
              "div",
              {
                className: style_default33["slot-wrapper"],
                "data-slot-type": "suffix",
                children: suffix
              }
            )
          ]
        }
      );
    }
  );

  // packages/ui/build-module/form/primitives/input-layout/slot.mjs
  var import_element75 = __toESM(require_element(), 1);
  var import_jsx_runtime194 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE35 = "data-wp-hash";
  function getRuntime35() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument35(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash35(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE35}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE35) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle35(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime35();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash35(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE35, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument35(targetDocument) {
    const runtime = getRuntime35();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle35(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle35(hash, css) {
    const runtime = getRuntime35();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle35(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle35("e4f4f9600b", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.cb2baafdc08746bb__input-layout{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-md,12px);background-color:var(--wpds-color-background-interactive-neutral,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:var(--wpds-border-width-xs,1px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:max(var(--wpds-typography-font-size-md,13px),16px);height:var(--wpds-dimension-size-lg,40px);line-height:1;@media (min-width:600px){font-size:var(--wpds-typography-font-size-md,13px)}&._0c807a84cbb94e0c__is-size-compact{height:var(--wpds-dimension-size-md,32px)}&._0c807a84cbb94e0c__is-size-compact,&.ed67cda122dc1e7b__is-size-small{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-sm,8px)}&.ed67cda122dc1e7b__is-size-small{height:var(--wpds-dimension-size-sm,24px)}&._6fb7104732387680__is-disabled,&:has([data-can-disable-input-layout][data-disabled]){color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}&:not(._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-disabled,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText}}}&._8097270636ca6100__is-borderless{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border-color:transparent}&:has(._0d7afad74a057888__input-layout-slot:focus-within){--_gcd-div-outline:none;outline:none}&:hover:not(._6fb7104732387680__is-disabled,:has([data-can-disable-input-layout][data-disabled]),._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-active,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e)}&:has(:invalid[data-validity-visible]){--focus-color:var(--wpds-color-stroke-interactive-error,#cc1818);border-color:var(--wpds-color-stroke-interactive-error,#cc1818);&:hover{border-color:var(--wpds-color-stroke-interactive-error-active,#9d0000)}}}.c192b41a12b4387b__slot-wrapper{display:contents}._0d7afad74a057888__input-layout-slot{align-items:center;display:flex;&._0c952682762ca288__is-padding-minimal{--wp-ui-input-layout-prefix-padding-start:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px));--wp-ui-input-layout-suffix-padding-end:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}[data-slot-type=prefix] &{padding-inline-start:var(--wp-ui-input-layout-prefix-padding-start,var(--wp-ui-input-layout-padding-inline))}[data-slot-type=suffix] &{padding-inline-end:var(--wp-ui-input-layout-suffix-padding-end,var(--wp-ui-input-layout-padding-inline))}}}}');
  }
  var style_default34 = { "input-layout": "cb2baafdc08746bb__input-layout", "is-size-compact": "_0c807a84cbb94e0c__is-size-compact", "is-size-small": "ed67cda122dc1e7b__is-size-small", "is-disabled": "_6fb7104732387680__is-disabled", "is-borderless": "_8097270636ca6100__is-borderless", "input-layout-slot": "_0d7afad74a057888__input-layout-slot", "slot-wrapper": "c192b41a12b4387b__slot-wrapper", "is-padding-minimal": "_0c952682762ca288__is-padding-minimal" };
  var InputLayoutSlot = (0, import_element75.forwardRef)(function InputLayoutSlot2({ padding = "default", className, ...restProps }, ref) {
    return /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(
      "div",
      {
        ref,
        className: clsx_default(
          style_default34["input-layout-slot"],
          style_default34[`is-padding-${padding}`],
          className
        ),
        ...restProps
      }
    );
  });
  InputLayoutSlot.displayName = "InputLayout.Slot";

  // packages/ui/build-module/form/primitives/input-layout/index.mjs
  var InputLayout3 = Object.assign(InputLayout, {
    Slot: InputLayoutSlot
  });

  // packages/ui/build-module/form/primitives/input/input.mjs
  var import_jsx_runtime195 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE36 = "data-wp-hash";
  function getRuntime36() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument36(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash36(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE36}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE36) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle36(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime36();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash36(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE36, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument36(targetDocument) {
    const runtime = getRuntime36();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle36(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle36(hash, css) {
    const runtime = getRuntime36();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle36(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle36("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default12 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  if (typeof process === "undefined" || true) {
    registerStyle36("08122b3d53", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within,:focus-visible ._81935a08e952f267__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
  }
  var focus_module_default5 = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-parent-visible": "_81935a08e952f267__outset-ring--focus-parent-visible", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" };
  if (typeof process === "undefined" || true) {
    registerStyle36("1a25f6a232", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._2ae7be2fc1bb17a3__input{--_gcd-input-padding:var(--wp-ui-input-padding-block,0px) var(--wp-ui-input-layout-padding-inline,0px);background:transparent;border:none;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:inherit;font-size:inherit;line-height:inherit;outline:none;padding-block:var(--wp-ui-input-padding-block,0);padding-inline:var(--wp-ui-input-layout-padding-inline,0);width:100%;&::placeholder{color:var(--wpds-color-foreground-interactive-neutral-weak,#707070)}&:disabled,&[aria-disabled=true]{--_gcd-input-placeholder-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&::placeholder{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}@media (forced-colors:active){color:GrayText}}&[type=email],&[type=url]{direction:ltr}&[type=number]{appearance:textfield;&::-webkit-inner-spin-button,&::-webkit-outer-spin-button{appearance:none;margin:0}}}}}");
  }
  var style_default35 = { "input": "_2ae7be2fc1bb17a3__input" };
  var Input3 = (0, import_element76.forwardRef)(function Input22({ className, size: size4 = "default", prefix: prefix2, suffix, style, ...restProps }, ref) {
    return /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(
      InputLayout3,
      {
        className: clsx_default(
          focus_module_default5["outset-ring--focus-within"],
          className
        ),
        style,
        size: size4,
        visuallyDisabled: restProps.disabled,
        prefix: prefix2,
        suffix,
        children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(
          Input,
          {
            ref,
            className: clsx_default(global_css_defense_default12.input, style_default35.input),
            ...restProps
          }
        )
      }
    );
  });

  // packages/ui/build-module/utils/css/item-popup.mjs
  var STYLE_HASH_ATTRIBUTE37 = "data-wp-hash";
  function getRuntime37() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument37(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash37(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE37}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE37) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle37(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime37();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash37(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE37, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument37(targetDocument) {
    const runtime = getRuntime37();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle37(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle37(hash, css) {
    const runtime = getRuntime37();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle37(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle37("ff021bf4fe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px)}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-md,32px);padding-inline:var(--wpds-dimension-padding-md,12px)}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline-end:var(--wp-ui-popup-item-padding-inline);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px));user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{flex-shrink:0}._41f0dd875c005a48__item-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}');
  }
  var item_popup_default = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-icon": "a3adcfd0b73ffd40__item-icon", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" };
  function getItemPopupWidthClassName(width = "anchor") {
    switch (width) {
      case "available":
        return item_popup_default["is-width-available"];
      case "content":
        return item_popup_default["is-width-content"];
      case "lg":
        return item_popup_default["is-width-lg"];
      case "md":
        return item_popup_default["is-width-md"];
      case "sm":
        return item_popup_default["is-width-sm"];
      case "anchor":
        return item_popup_default["is-width-anchor"];
      default:
        return false;
    }
  }

  // packages/ui/build-module/form/primitives/control-with-error/control-with-error.mjs
  var import_i18n15 = __toESM(require_i18n(), 1);
  var import_element78 = __toESM(require_element(), 1);

  // packages/ui/build-module/spinner/spinner.mjs
  var import_element77 = __toESM(require_element(), 1);
  var import_jsx_runtime196 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE38 = "data-wp-hash";
  function getRuntime38() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument38(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash38(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE38}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE38) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle38(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime38();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash38(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE38, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument38(targetDocument) {
    const runtime = getRuntime38();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle38(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle38(hash, css) {
    const runtime = getRuntime38();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle38(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle38("bbbecfe373", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.ab4d64c07c0ba587__spinner{background-color:transparent;display:inline-block;height:var(--wpds-dimension-size-2xs,16px);opacity:1;overflow:visible;position:relative;width:var(--wpds-dimension-size-2xs,16px)}.a7654e10245bb7d2__indicator,.dc51f80c84b35fe2__track{fill:transparent;stroke-width:1.5px}.dc51f80c84b35fe2__track{stroke:var(--wpds-color-background-track-neutral,#dbdbdb)}.a7654e10245bb7d2__indicator{stroke:var(--wpds-color-background-thumb-brand,var(--wp-admin-theme-color,#3858e9));stroke-linecap:round;animation:_02322d973909703c__spinner-spin 1.4s linear infinite both;transform-origin:50% 50%}@keyframes _02322d973909703c__spinner-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}}}");
  }
  var style_default36 = { "spinner": "ab4d64c07c0ba587__spinner", "track": "dc51f80c84b35fe2__track", "indicator": "a7654e10245bb7d2__indicator", "spinner-spin": "_02322d973909703c__spinner-spin" };
  var Spinner = (0, import_element77.forwardRef)(
    function Spinner2({ className, ...props }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime196.jsxs)(
        "svg",
        {
          className: clsx_default(style_default36.spinner, className),
          viewBox: "0 0 100 100",
          xmlns: "http://www.w3.org/2000/svg",
          role: "presentation",
          focusable: "false",
          ...props,
          ref,
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(
              "circle",
              {
                className: style_default36.track,
                cx: "50",
                cy: "50",
                r: "50",
                vectorEffect: "non-scaling-stroke"
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(
              "path",
              {
                className: style_default36.indicator,
                d: "m 50 0 a 50 50 0 0 1 50 50",
                vectorEffect: "non-scaling-stroke"
              }
            )
          ]
        }
      );
    }
  );

  // packages/ui/build-module/form/primitives/validity-indicator/validity-indicator.mjs
  var import_jsx_runtime197 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE39 = "data-wp-hash";
  function getRuntime39() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument39(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash39(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE39}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE39) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle39(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime39();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash39(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE39, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument39(targetDocument) {
    const runtime = getRuntime39();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle39(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle39(hash, css) {
    const runtime = getRuntime39();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle39(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle39("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default13 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  if (typeof process === "undefined" || true) {
    registerStyle39("d11816833c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._7a7ac88e306348e7__indicator{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);align-items:flex-start;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);gap:var(--wpds-dimension-gap-xs,4px);line-height:var(--wpds-typography-line-height-xs,16px);@media not (prefers-reduced-motion){animation:_48722cc5dd090ce4__indicator-jump var(--wpds-motion-duration-md,.2s) cubic-bezier(.68,-.55,.27,1.55)}}._57a3bbbfbe38a5c6__is-invalid{color:var(--wpds-color-foreground-content-error-weak,#cc1818)}._9e944dc198aac10b__is-valid{color:var(--wpds-color-foreground-content-success-weak,#008030)}.e482806667437c6a__indicator-icon{flex-shrink:0}._6e46434cc23019d2__indicator-spinner{height:var(--wpds-dimension-size-3xs,12px);margin:2px;width:var(--wpds-dimension-size-3xs,12px)}@keyframes _48722cc5dd090ce4__indicator-jump{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}}}');
  }
  var style_default37 = { "indicator": "_7a7ac88e306348e7__indicator", "indicator-jump": "_48722cc5dd090ce4__indicator-jump", "is-invalid": "_57a3bbbfbe38a5c6__is-invalid", "is-valid": "_9e944dc198aac10b__is-valid", "indicator-icon": "e482806667437c6a__indicator-icon", "indicator-spinner": "_6e46434cc23019d2__indicator-spinner" };
  var ICON = {
    valid: published_default,
    invalid: error_default
  };
  function ValidityIndicator({
    id,
    type,
    message: message2
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime197.jsxs)(
      "p",
      {
        id,
        className: clsx_default(
          global_css_defense_default13.p,
          style_default37.indicator,
          style_default37[`is-${type}`]
        ),
        children: [
          type === "validating" ? /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(Spinner, { className: style_default37["indicator-spinner"] }) : /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(
            Icon,
            {
              className: style_default37["indicator-icon"],
              icon: ICON[type],
              size: 16,
              fill: "currentColor"
            }
          ),
          message2
        ]
      }
    );
  }

  // packages/ui/build-module/form/primitives/control-with-error/control-with-error.mjs
  var import_jsx_runtime198 = __toESM(require_jsx_runtime(), 1);
  var DEFAULT_RENDER = (props) => /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(Stack, { ...props, direction: "column", gap: "sm" });
  function appendRequiredIndicator(label, required, markWhenOptional) {
    let suffix;
    if (required && !markWhenOptional) {
      suffix = `(${(0, import_i18n15.__)("Required")})`;
    } else if (!required && markWhenOptional) {
      suffix = `(${(0, import_i18n15.__)("Optional")})`;
    }
    if (!suffix) {
      return label;
    }
    if (typeof label === "string") {
      return `${label} ${suffix}`;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime198.jsxs)(import_jsx_runtime198.Fragment, { children: [
      label,
      " ",
      suffix
    ] });
  }
  var VALIDITY_VISIBLE_ATTRIBUTE = "data-validity-visible";
  var ControlWithError = (0, import_element78.forwardRef)(function ControlWithError2({
    required,
    markWhenOptional,
    customValidity,
    getValidityTarget,
    children,
    render: render5 = DEFAULT_RENDER,
    ...restProps
  }, forwardedRef) {
    const [errorMessage, setErrorMessage] = (0, import_element78.useState)();
    const [statusMessage, setStatusMessage] = (0, import_element78.useState)();
    const [showMessage, setShowMessage] = (0, import_element78.useState)(false);
    const [isTouched, setIsTouched] = (0, import_element78.useState)(false);
    const wrapperRef = (0, import_element78.useRef)(null);
    (0, import_element78.useEffect)(() => {
      const validityTarget = getValidityTarget();
      const handler = () => {
        if (customValidity?.type !== "validating") {
          setErrorMessage(validityTarget?.validationMessage);
        }
        setShowMessage(true);
        validityTarget?.setAttribute(VALIDITY_VISIBLE_ATTRIBUTE, "");
      };
      validityTarget?.addEventListener("invalid", handler);
      return () => validityTarget?.removeEventListener("invalid", handler);
    }, [customValidity?.type, getValidityTarget]);
    (0, import_element78.useEffect)(() => {
      const validityTarget = getValidityTarget();
      const suppressNativePopover = (event) => {
        event.preventDefault();
        if (!event.isTrusted) {
          return;
        }
        const target = event.target;
        const firstErrorInForm = Array.from(
          target.form?.elements ?? []
        ).find((el) => !el.validity.valid);
        if (!target.form || firstErrorInForm === target) {
          target.focus();
        }
      };
      const radioSiblings = validityTarget?.type === "radio" && validityTarget?.name ? Array.from(
        wrapperRef.current?.querySelectorAll(
          `input[type="radio"][name="${validityTarget?.name}"]`
        ) ?? []
      ).filter((sibling) => sibling !== validityTarget) : [];
      validityTarget?.addEventListener("invalid", suppressNativePopover);
      radioSiblings.forEach(
        (sibling) => sibling.addEventListener("invalid", suppressNativePopover)
      );
      return () => {
        validityTarget?.removeEventListener(
          "invalid",
          suppressNativePopover
        );
        radioSiblings.forEach(
          (sibling) => sibling.removeEventListener("invalid", suppressNativePopover)
        );
      };
    }, [getValidityTarget]);
    (0, import_element78.useEffect)(() => {
      const validityTarget = getValidityTarget();
      if (!customValidity?.type) {
        validityTarget?.setCustomValidity("");
        setErrorMessage(validityTarget?.validationMessage);
        setStatusMessage(void 0);
        return;
      }
      switch (customValidity.type) {
        case "validating": {
          validityTarget?.setCustomValidity("");
          setErrorMessage(void 0);
          setStatusMessage({
            type: "validating",
            message: customValidity.message
          });
          break;
        }
        case "valid": {
          validityTarget?.setCustomValidity("");
          setErrorMessage(validityTarget?.validationMessage);
          setStatusMessage({
            type: "valid",
            message: customValidity.message
          });
          break;
        }
        case "invalid": {
          validityTarget?.setCustomValidity(
            customValidity.message ?? ""
          );
          setErrorMessage(validityTarget?.validationMessage);
          setStatusMessage(void 0);
          break;
        }
      }
    }, [customValidity, getValidityTarget]);
    (0, import_element78.useEffect)(() => {
      if (!isTouched || showMessage) {
        return;
      }
      if (customValidity?.type === "validating") {
        const timer = setTimeout(() => {
          setShowMessage(true);
        }, 1e3);
        return () => clearTimeout(timer);
      }
      setShowMessage(true);
    }, [isTouched, customValidity?.type, showMessage]);
    const onBlur = (event) => {
      if (event.relatedTarget && event.currentTarget.contains(event.relatedTarget)) {
        return;
      }
      if (!isTouched) {
        setIsTouched(true);
        getValidityTarget()?.setAttribute(VALIDITY_VISIBLE_ATTRIBUTE, "");
      }
      const validityTarget = getValidityTarget();
      const isValidating = customValidity?.type === "validating";
      window.queueMicrotask(() => {
        if (!isValidating) {
          setErrorMessage(validityTarget?.validationMessage);
        }
      });
    };
    const messageId = (0, import_element78.useId)();
    const message2 = (() => {
      if (errorMessage) {
        return /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(
          ValidityIndicator,
          {
            id: messageId,
            type: "invalid",
            message: errorMessage
          }
        );
      }
      if (statusMessage?.type) {
        return /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(
          ValidityIndicator,
          {
            id: messageId,
            type: statusMessage.type,
            message: statusMessage.message
          }
        );
      }
      return null;
    })();
    const visibleMessage = showMessage ? message2 : null;
    (0, import_element78.useEffect)(() => {
      const target = getValidityTarget();
      if (!target) {
        return;
      }
      function setDescribedBy(el, shouldAdd) {
        const ids = (el.getAttribute("aria-describedby") ?? "").split(" ").filter((id) => id && id !== messageId);
        if (shouldAdd) {
          ids.push(messageId);
        }
        if (ids.length) {
          el.setAttribute("aria-describedby", ids.join(" "));
        } else {
          el.removeAttribute("aria-describedby");
        }
      }
      setDescribedBy(target, !!visibleMessage);
      return () => setDescribedBy(target, false);
    }, [visibleMessage, messageId, getValidityTarget]);
    return useRender({
      render: render5,
      ref: [forwardedRef, wrapperRef],
      props: mergeProps(restProps, {
        onBlur,
        children: /* @__PURE__ */ (0, import_jsx_runtime198.jsxs)(import_jsx_runtime198.Fragment, { children: [
          (0, import_element78.cloneElement)(children, {
            label: appendRequiredIndicator(
              children.props.label,
              required,
              markWhenOptional
            ),
            required
          }),
          visibleMessage
        ] })
      })
    });
  });

  // packages/ui/build-module/form/primitives/combobox/chips.mjs
  var import_element79 = __toESM(require_element(), 1);
  var import_jsx_runtime199 = __toESM(require_jsx_runtime(), 1);
  var Chips = (0, import_element79.forwardRef)(
    function Chips2(props, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime199.jsx)(index_parts_exports2.Chips, { ref, ...props });
    }
  );

  // packages/ui/build-module/form/primitives/combobox/chip-with-remove.mjs
  var import_element80 = __toESM(require_element(), 1);
  var import_i18n16 = __toESM(require_i18n(), 1);
  var import_jsx_runtime200 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE40 = "data-wp-hash";
  function getRuntime40() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument40(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash40(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE40}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE40) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle40(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime40();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash40(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE40, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument40(targetDocument) {
    const runtime = getRuntime40();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle40(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle40(hash, css) {
    const runtime = getRuntime40();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle40(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle40("fb14a04e1a", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.f3acce91cfa4ddb0__positioner{z-index:var(--wp-ui-combobox-z-index,initial)}._215088f110703fb9__chip{--wp-ui-combobox-chip-content-padding-inline-start:var(--wpds-dimension-padding-sm,8px);align-items:center;background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border:1px solid var(--wpds-color-stroke-interactive-neutral,#8d8d8d);border-radius:12px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);cursor:default;display:flex;font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-xs,16px);max-width:100%;min-height:var(--wpds-dimension-size-sm,24px);overflow:hidden;&:not([data-disabled]):focus,&:not([data-disabled]):has(button:not(:disabled,[aria-disabled=true]):hover){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);border-color:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);outline:none;@media (forced-colors:active){background-color:SelectedItem}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);border-color:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:has(.a07649e544b312b5__chip-prefix){--wp-ui-combobox-chip-content-padding-inline-start:var(--wpds-dimension-padding-xs,4px)}}.a07649e544b312b5__chip-prefix{align-items:center;border-radius:50%;display:flex;flex-shrink:0;height:var(--wpds-dimension-size-xs,20px);justify-content:center;margin-inline-start:1px;overflow:hidden;width:var(--wpds-dimension-size-xs,20px)}.d10525babc99f435__chip-content{min-width:0;overflow-wrap:anywhere;padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline-start:var(--wp-ui-combobox-chip-content-padding-inline-start)}.edd3e6dc8e42005f__chip-remove{border:none}}}");
  }
  var style_default38 = { "positioner": "f3acce91cfa4ddb0__positioner", "chip": "_215088f110703fb9__chip", "chip-prefix": "a07649e544b312b5__chip-prefix", "chip-content": "d10525babc99f435__chip-content", "chip-remove": "edd3e6dc8e42005f__chip-remove" };
  var ChipWithRemove = (0, import_element80.forwardRef)(function ChipWithRemove2({ className, children, prefix: prefix2, removeLabel = (0, import_i18n16.__)("Remove"), ...restProps }, ref) {
    return /* @__PURE__ */ (0, import_jsx_runtime200.jsxs)(
      index_parts_exports2.Chip,
      {
        ref,
        className: clsx_default(style_default38.chip, className),
        ...restProps,
        children: [
          prefix2 && /* @__PURE__ */ (0, import_jsx_runtime200.jsx)("span", { className: style_default38["chip-prefix"], children: prefix2 }),
          /* @__PURE__ */ (0, import_jsx_runtime200.jsx)("span", { className: style_default38["chip-content"], children }),
          /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(
            index_parts_exports2.ChipRemove,
            {
              className: style_default38["chip-remove"],
              render: (props, { disabled: disabled2 }) => /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(
                IconButton,
                {
                  icon: close_small_default,
                  label: removeLabel,
                  size: "small",
                  variant: "minimal",
                  tone: "neutral",
                  focusableWhenDisabled: false,
                  disabled: disabled2,
                  "aria-hidden": disabled2 || void 0,
                  ...props
                }
              )
            }
          )
        ]
      }
    );
  });

  // packages/ui/build-module/form/primitives/combobox/clear.mjs
  var import_element81 = __toESM(require_element(), 1);
  var import_i18n17 = __toESM(require_i18n(), 1);
  var import_jsx_runtime201 = __toESM(require_jsx_runtime(), 1);
  var DEFAULT_RENDER2 = ({ "aria-label": ariaLabel = (0, import_i18n17.__)("Clear"), ...props }, { disabled: disabled2 }) => /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(
    IconButton,
    {
      icon: close_small_default,
      focusableWhenDisabled: false,
      disabled: disabled2,
      "aria-hidden": disabled2 || void 0,
      size: "small",
      variant: "minimal",
      tone: "neutral",
      label: ariaLabel,
      ...props
    }
  );
  var Clear = (0, import_element81.forwardRef)(
    function Clear2({ render: render5 = DEFAULT_RENDER2, ...restProps }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(index_parts_exports2.Clear, { ref, render: render5, ...restProps });
    }
  );

  // packages/ui/build-module/form/primitives/combobox/collection.mjs
  var import_jsx_runtime202 = __toESM(require_jsx_runtime(), 1);
  function Collection({
    children,
    ...restProps
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(index_parts_exports2.Collection, { ...restProps, children });
  }

  // packages/ui/build-module/form/primitives/combobox/empty.mjs
  var import_element82 = __toESM(require_element(), 1);
  var import_jsx_runtime203 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE41 = "data-wp-hash";
  function getRuntime41() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument41(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash41(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE41}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE41) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle41(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime41();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash41(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE41, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument41(targetDocument) {
    const runtime = getRuntime41();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle41(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle41(hash, css) {
    const runtime = getRuntime41();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle41(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle41("ff021bf4fe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px)}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-md,32px);padding-inline:var(--wpds-dimension-padding-md,12px)}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline-end:var(--wp-ui-popup-item-padding-inline);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px));user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{flex-shrink:0}._41f0dd875c005a48__item-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}');
  }
  var item_popup_default2 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-icon": "a3adcfd0b73ffd40__item-icon", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" };
  var Empty = (0, import_element82.forwardRef)(
    function Empty2({ className, ...restProps }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(
        index_parts_exports2.Empty,
        {
          className: clsx_default(item_popup_default2.empty, className),
          ref,
          ...restProps
        }
      );
    }
  );

  // packages/ui/build-module/form/primitives/combobox/group.mjs
  var import_element83 = __toESM(require_element(), 1);
  var import_jsx_runtime204 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE42 = "data-wp-hash";
  function getRuntime42() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument42(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash42(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE42}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE42) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle42(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime42();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash42(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE42, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument42(targetDocument) {
    const runtime = getRuntime42();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle42(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle42(hash, css) {
    const runtime = getRuntime42();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle42(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle42("ff021bf4fe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px)}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-md,32px);padding-inline:var(--wpds-dimension-padding-md,12px)}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline-end:var(--wp-ui-popup-item-padding-inline);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px));user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{flex-shrink:0}._41f0dd875c005a48__item-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}');
  }
  var item_popup_default3 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-icon": "a3adcfd0b73ffd40__item-icon", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" };
  var Group2 = (0, import_element83.forwardRef)(
    function Group22({ className, children, ...restProps }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(
        index_parts_exports2.Group,
        {
          className: clsx_default(item_popup_default3.group, className),
          ref,
          ...restProps,
          children
        }
      );
    }
  );

  // packages/ui/build-module/form/primitives/combobox/group-label.mjs
  var import_element84 = __toESM(require_element(), 1);
  var import_jsx_runtime205 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE43 = "data-wp-hash";
  function getRuntime43() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument43(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash43(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE43}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE43) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle43(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime43();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash43(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE43, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument43(targetDocument) {
    const runtime = getRuntime43();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle43(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle43(hash, css) {
    const runtime = getRuntime43();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle43(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle43("ff021bf4fe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px)}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-md,32px);padding-inline:var(--wpds-dimension-padding-md,12px)}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline-end:var(--wp-ui-popup-item-padding-inline);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px));user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{flex-shrink:0}._41f0dd875c005a48__item-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}');
  }
  var item_popup_default4 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-icon": "a3adcfd0b73ffd40__item-icon", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" };
  var GroupLabel2 = (0, import_element84.forwardRef)(
    function GroupLabel22({ className, children, ...restProps }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime205.jsx)(
        Text,
        {
          variant: "heading-sm",
          className: clsx_default(
            item_popup_default4["group-label"],
            className
          ),
          render: /* @__PURE__ */ (0, import_jsx_runtime205.jsx)(index_parts_exports2.GroupLabel, { ref, ...restProps }),
          children
        }
      );
    }
  );

  // packages/ui/build-module/form/primitives/combobox/input-group.mjs
  var import_element85 = __toESM(require_element(), 1);
  var import_jsx_runtime206 = __toESM(require_jsx_runtime(), 1);
  var InputGroup = (0, import_element85.forwardRef)(
    function InputGroup2(props, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(index_parts_exports2.InputGroup, { ref, ...props });
    }
  );

  // packages/ui/build-module/form/primitives/combobox/input.mjs
  var import_element86 = __toESM(require_element(), 1);
  var import_jsx_runtime207 = __toESM(require_jsx_runtime(), 1);
  var DEFAULT_RENDER3 = (props) => /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(
    Input3,
    {
      prefix: /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(InputLayout3.Slot, { padding: "minimal", children: /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(Icon, { icon: search_default }) }),
      ...props
    }
  );
  var Input4 = (0, import_element86.forwardRef)(
    function Input23({ render: render5 = DEFAULT_RENDER3, ...restProps }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(index_parts_exports2.Input, { ref, render: render5, ...restProps });
    }
  );

  // packages/ui/build-module/form/primitives/combobox/item.mjs
  var import_element87 = __toESM(require_element(), 1);
  var import_jsx_runtime208 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE44 = "data-wp-hash";
  function getRuntime44() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument44(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash44(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE44}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE44) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle44(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime44();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash44(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE44, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument44(targetDocument) {
    const runtime = getRuntime44();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle44(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle44(hash, css) {
    const runtime = getRuntime44();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle44(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle44("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default14 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  if (typeof process === "undefined" || true) {
    registerStyle44("ff021bf4fe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px)}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-md,32px);padding-inline:var(--wpds-dimension-padding-md,12px)}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline-end:var(--wp-ui-popup-item-padding-inline);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px));user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{flex-shrink:0}._41f0dd875c005a48__item-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}');
  }
  var item_popup_default5 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-icon": "a3adcfd0b73ffd40__item-icon", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" };
  if (typeof process === "undefined" || true) {
    registerStyle44("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default13 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  var Item2 = (0, import_element87.forwardRef)(
    function Item22({ className, children, variant = "default", ...restProps }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime208.jsxs)(
        index_parts_exports2.Item,
        {
          className: clsx_default(
            global_css_defense_default14.div,
            resets_default13["box-sizing"],
            item_popup_default5.item,
            className
          ),
          ref,
          ...restProps,
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime208.jsx)(
              Icon,
              {
                icon: variant === "creatable" ? plus_default : check_default,
                className: clsx_default(
                  item_popup_default5["item-icon"],
                  variant !== "creatable" && item_popup_default5["item-indicator-icon"]
                ),
                size: 24
              }
            ),
            children
          ]
        }
      );
    }
  );

  // packages/ui/build-module/form/primitives/combobox/list.mjs
  var import_element88 = __toESM(require_element(), 1);
  var import_jsx_runtime209 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE45 = "data-wp-hash";
  function getRuntime45() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument45(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash45(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE45}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE45) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle45(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime45();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash45(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE45, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument45(targetDocument) {
    const runtime = getRuntime45();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle45(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle45(hash, css) {
    const runtime = getRuntime45();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle45(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle45("ff021bf4fe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px)}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-md,32px);padding-inline:var(--wpds-dimension-padding-md,12px)}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline-end:var(--wp-ui-popup-item-padding-inline);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px));user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{flex-shrink:0}._41f0dd875c005a48__item-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}');
  }
  var item_popup_default6 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-icon": "a3adcfd0b73ffd40__item-icon", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" };
  var List = (0, import_element88.forwardRef)(
    function List2({ className, ...restProps }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime209.jsx)(
        index_parts_exports2.List,
        {
          className: clsx_default(item_popup_default6.list, className),
          ref,
          ...restProps
        }
      );
    }
  );

  // packages/ui/build-module/form/primitives/combobox/list-body.mjs
  var import_element89 = __toESM(require_element(), 1);
  var STYLE_HASH_ATTRIBUTE46 = "data-wp-hash";
  function getRuntime46() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument46(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash46(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE46}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE46) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle46(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime46();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash46(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE46, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument46(targetDocument) {
    const runtime = getRuntime46();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle46(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle46(hash, css) {
    const runtime = getRuntime46();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle46(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle46("ff021bf4fe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px)}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-md,32px);padding-inline:var(--wpds-dimension-padding-md,12px)}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline-end:var(--wp-ui-popup-item-padding-inline);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px));user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{flex-shrink:0}._41f0dd875c005a48__item-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}');
  }
  var item_popup_default7 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-icon": "a3adcfd0b73ffd40__item-icon", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" };
  var ListBody = (0, import_element89.forwardRef)(
    function ListBody2({ render: render5, ...props }, ref) {
      const element = useRender({
        defaultTagName: "div",
        render: render5,
        ref,
        props: mergeProps(
          { className: item_popup_default7["list-scrollable-container"] },
          props
        )
      });
      return element;
    }
  );

  // packages/ui/build-module/form/primitives/combobox/list-footer.mjs
  var import_element90 = __toESM(require_element(), 1);
  var STYLE_HASH_ATTRIBUTE47 = "data-wp-hash";
  function getRuntime47() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument47(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash47(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE47}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE47) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle47(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime47();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash47(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE47, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument47(targetDocument) {
    const runtime = getRuntime47();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle47(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle47(hash, css) {
    const runtime = getRuntime47();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle47(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle47("ff021bf4fe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px)}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-md,32px);padding-inline:var(--wpds-dimension-padding-md,12px)}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline-end:var(--wp-ui-popup-item-padding-inline);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px));user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{flex-shrink:0}._41f0dd875c005a48__item-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}');
  }
  var item_popup_default8 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-icon": "a3adcfd0b73ffd40__item-icon", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" };
  var ListFooter = (0, import_element90.forwardRef)(
    function ListFooter2({ render: render5, ...props }, ref) {
      const element = useRender({
        defaultTagName: "div",
        render: render5,
        ref,
        props: mergeProps(
          { className: item_popup_default8["list-footer"] },
          props
        )
      });
      return element;
    }
  );

  // packages/ui/build-module/form/primitives/combobox/portal.mjs
  var import_element91 = __toESM(require_element(), 1);
  var import_jsx_runtime210 = __toESM(require_jsx_runtime(), 1);
  var Portal3 = (0, import_element91.forwardRef)(
    function ComboboxPortal3({ container, ...restProps }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime210.jsx)(
        index_parts_exports2.Portal,
        {
          container: container ?? getWpCompatOverlaySlot(),
          ...restProps,
          ref
        }
      );
    }
  );

  // packages/ui/build-module/form/primitives/combobox/positioner.mjs
  var import_element92 = __toESM(require_element(), 1);
  var import_jsx_runtime211 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE48 = "data-wp-hash";
  function getRuntime48() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument48(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash48(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE48}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE48) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle48(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime48();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash48(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE48, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument48(targetDocument) {
    const runtime = getRuntime48();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle48(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle48(hash, css) {
    const runtime = getRuntime48();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle48(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle48("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default14 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle48("fb14a04e1a", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.f3acce91cfa4ddb0__positioner{z-index:var(--wp-ui-combobox-z-index,initial)}._215088f110703fb9__chip{--wp-ui-combobox-chip-content-padding-inline-start:var(--wpds-dimension-padding-sm,8px);align-items:center;background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border:1px solid var(--wpds-color-stroke-interactive-neutral,#8d8d8d);border-radius:12px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);cursor:default;display:flex;font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-xs,16px);max-width:100%;min-height:var(--wpds-dimension-size-sm,24px);overflow:hidden;&:not([data-disabled]):focus,&:not([data-disabled]):has(button:not(:disabled,[aria-disabled=true]):hover){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);border-color:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);outline:none;@media (forced-colors:active){background-color:SelectedItem}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);border-color:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:has(.a07649e544b312b5__chip-prefix){--wp-ui-combobox-chip-content-padding-inline-start:var(--wpds-dimension-padding-xs,4px)}}.a07649e544b312b5__chip-prefix{align-items:center;border-radius:50%;display:flex;flex-shrink:0;height:var(--wpds-dimension-size-xs,20px);justify-content:center;margin-inline-start:1px;overflow:hidden;width:var(--wpds-dimension-size-xs,20px)}.d10525babc99f435__chip-content{min-width:0;overflow-wrap:anywhere;padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline-start:var(--wp-ui-combobox-chip-content-padding-inline-start)}.edd3e6dc8e42005f__chip-remove{border:none}}}");
  }
  var style_default39 = { "positioner": "f3acce91cfa4ddb0__positioner", "chip": "_215088f110703fb9__chip", "chip-prefix": "a07649e544b312b5__chip-prefix", "chip-content": "d10525babc99f435__chip-content", "chip-remove": "edd3e6dc8e42005f__chip-remove" };
  var Positioner3 = (0, import_element92.forwardRef)(
    function ComboboxPositioner3({ className, ...props }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime211.jsx)(
        index_parts_exports2.Positioner,
        {
          ...ITEM_POPUP_POSITIONER_PROPS,
          ...props,
          ref,
          className: clsx_default(
            resets_default14["box-sizing"],
            style_default39.positioner,
            className
          )
        }
      );
    }
  );

  // packages/ui/build-module/form/primitives/combobox/popup.mjs
  var import_element93 = __toESM(require_element(), 1);
  var import_jsx_runtime212 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE49 = "data-wp-hash";
  function getRuntime49() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument49(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash49(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE49}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE49) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle49(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime49();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash49(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE49, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument49(targetDocument) {
    const runtime = getRuntime49();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle49(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle49(hash, css) {
    const runtime = getRuntime49();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle49(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle49("ff021bf4fe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px)}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-md,32px);padding-inline:var(--wpds-dimension-padding-md,12px)}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline-end:var(--wp-ui-popup-item-padding-inline);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px));user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{flex-shrink:0}._41f0dd875c005a48__item-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}');
  }
  var item_popup_default9 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-icon": "a3adcfd0b73ffd40__item-icon", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" };
  var Popup3 = (0, import_element93.forwardRef)(
    function Popup22({ className, portal, positioner, width, ...restProps }, ref) {
      const popupContent = /* @__PURE__ */ (0, import_jsx_runtime212.jsx)(
        index_parts_exports2.Popup,
        {
          ref,
          className: clsx_default(
            item_popup_default9.popup,
            getItemPopupWidthClassName(width),
            className
          ),
          ...restProps
        }
      );
      const positionedPopup = renderSlotWithChildren(
        positioner,
        /* @__PURE__ */ (0, import_jsx_runtime212.jsx)(Positioner3, {}),
        popupContent
      );
      return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime212.jsx)(Portal3, {}), positionedPopup);
    }
  );

  // packages/ui/build-module/form/primitives/combobox/root.mjs
  var import_jsx_runtime213 = __toESM(require_jsx_runtime(), 1);
  function Root7(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime213.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime213.jsx)(index_parts_exports2.Root, { ...props }) });
  }

  // packages/ui/build-module/form/primitives/combobox/status.mjs
  var import_element94 = __toESM(require_element(), 1);
  var import_jsx_runtime214 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE50 = "data-wp-hash";
  function getRuntime50() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument50(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash50(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE50}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE50) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle50(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime50();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash50(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE50, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument50(targetDocument) {
    const runtime = getRuntime50();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle50(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle50(hash, css) {
    const runtime = getRuntime50();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle50(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle50("ff021bf4fe", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px)}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-md,32px);padding-inline:var(--wpds-dimension-padding-md,12px)}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline-end:var(--wp-ui-popup-item-padding-inline);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px));user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{flex-shrink:0}._41f0dd875c005a48__item-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}');
  }
  var item_popup_default10 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-icon": "a3adcfd0b73ffd40__item-icon", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" };
  var Status = (0, import_element94.forwardRef)(
    function Status2({ className, ...restProps }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime214.jsx)(
        index_parts_exports2.Status,
        {
          className: clsx_default(item_popup_default10.status, className),
          ref,
          ...restProps
        }
      );
    }
  );

  // packages/ui/build-module/form/primitives/combobox/use-filtered-items.mjs
  function useFilteredItems2() {
    return index_parts_exports2.useFilteredItems();
  }

  // packages/ui/build-module/form/primitives/combobox/value.mjs
  var import_jsx_runtime215 = __toESM(require_jsx_runtime(), 1);
  function Value(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime215.jsx)(index_parts_exports2.Value, { ...props });
  }

  // packages/ui/build-module/form/primitives/field/index.mjs
  var field_exports = {};
  __export(field_exports, {
    Control: () => Control,
    Description: () => Description,
    Details: () => Details,
    Item: () => Item3,
    Label: () => Label,
    Root: () => Root8,
    VisualLabel: () => VisualLabel
  });

  // packages/ui/build-module/form/primitives/field/root.mjs
  var import_element95 = __toESM(require_element(), 1);
  var import_jsx_runtime216 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE51 = "data-wp-hash";
  function getRuntime51() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument51(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash51(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE51}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE51) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle51(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime51();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash51(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE51, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument51(targetDocument) {
    const runtime = getRuntime51();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle51(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle51(hash, css) {
    const runtime = getRuntime51();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle51(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle51("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default15 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  var DEFAULT_RENDER4 = (props) => /* @__PURE__ */ (0, import_jsx_runtime216.jsx)(Stack, { ...props, direction: "column", gap: "sm" });
  var Root8 = (0, import_element95.forwardRef)(function Root22({ className, render: render5 = DEFAULT_RENDER4, ...restProps }, ref) {
    return /* @__PURE__ */ (0, import_jsx_runtime216.jsx)(
      index_parts_exports4.Root,
      {
        ref,
        className: clsx_default(resets_default15["box-sizing"], className),
        render: render5,
        ...restProps
      }
    );
  });

  // packages/ui/build-module/form/primitives/field/item.mjs
  var import_element96 = __toESM(require_element(), 1);
  var import_jsx_runtime217 = __toESM(require_jsx_runtime(), 1);
  var Item3 = (0, import_element96.forwardRef)(function Item23(props, ref) {
    return /* @__PURE__ */ (0, import_jsx_runtime217.jsx)(index_parts_exports4.Item, { ref, ...props });
  });

  // packages/ui/build-module/form/primitives/field/label.mjs
  var import_element97 = __toESM(require_element(), 1);
  var import_jsx_runtime218 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE52 = "data-wp-hash";
  function getRuntime52() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument52(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash52(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE52}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE52) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle52(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime52();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash52(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE52, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument52(targetDocument) {
    const runtime = getRuntime52();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle52(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle52(hash, css) {
    const runtime = getRuntime52();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle52(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle52("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}');
  }
  var field_default = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" };
  var Label = (0, import_element97.forwardRef)(
    function Label2({ className, hideFromVision, variant, ...restProps }, ref) {
      const label = /* @__PURE__ */ (0, import_jsx_runtime218.jsx)(
        index_parts_exports4.Label,
        {
          ref,
          className: clsx_default(
            field_default.label,
            variant && field_default[`is-${variant}`],
            className
          ),
          ...restProps
        }
      );
      if (hideFromVision) {
        return /* @__PURE__ */ (0, import_jsx_runtime218.jsx)(VisuallyHidden, { render: label });
      }
      return label;
    }
  );

  // packages/ui/build-module/form/primitives/field/description.mjs
  var import_element98 = __toESM(require_element(), 1);
  var import_jsx_runtime219 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE53 = "data-wp-hash";
  function getRuntime53() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument53(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash53(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE53}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE53) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle53(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime53();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash53(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE53, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument53(targetDocument) {
    const runtime = getRuntime53();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle53(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle53(hash, css) {
    const runtime = getRuntime53();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle53(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle53("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default15 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  if (typeof process === "undefined" || true) {
    registerStyle53("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}');
  }
  var field_default2 = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" };
  var Description = (0, import_element98.forwardRef)(function Description2({ className, ...restProps }, ref) {
    return /* @__PURE__ */ (0, import_jsx_runtime219.jsx)(
      index_parts_exports4.Description,
      {
        ref,
        className: clsx_default(
          global_css_defense_default15.p,
          field_default2.description,
          className
        ),
        ...restProps
      }
    );
  });

  // packages/ui/build-module/form/primitives/field/details.mjs
  var import_element99 = __toESM(require_element(), 1);
  var import_i18n18 = __toESM(require_i18n(), 1);
  var import_jsx_runtime220 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE54 = "data-wp-hash";
  function getRuntime54() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument54(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash54(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE54}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE54) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle54(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime54();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash54(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE54, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument54(targetDocument) {
    const runtime = getRuntime54();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle54(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle54(hash, css) {
    const runtime = getRuntime54();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle54(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle54("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}');
  }
  var field_default3 = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" };
  var Details = (0, import_element99.forwardRef)(
    function Details2({ className, ...restProps }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime220.jsxs)(import_jsx_runtime220.Fragment, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime220.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime220.jsx)(index_parts_exports4.Description, {}), children: (0, import_i18n18.__)("More details follow the field.") }),
        /* @__PURE__ */ (0, import_jsx_runtime220.jsx)(
          "div",
          {
            ref,
            className: clsx_default(field_default3.description, className),
            ...restProps
          }
        )
      ] });
    }
  );

  // packages/ui/build-module/form/primitives/field/control.mjs
  var import_element100 = __toESM(require_element(), 1);
  var import_jsx_runtime221 = __toESM(require_jsx_runtime(), 1);
  var Control = (0, import_element100.forwardRef)(
    function Control2(props, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime221.jsx)(index_parts_exports4.Control, { ref, ...props });
    }
  );

  // packages/ui/build-module/form/primitives/field/visual-label.mjs
  var import_element101 = __toESM(require_element(), 1);
  var STYLE_HASH_ATTRIBUTE55 = "data-wp-hash";
  function getRuntime55() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument55(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash55(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE55}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE55) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle55(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime55();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash55(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE55, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument55(targetDocument) {
    const runtime = getRuntime55();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle55(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle55(hash, css) {
    const runtime = getRuntime55();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle55(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle55("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}');
  }
  var field_default4 = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" };
  var VisualLabel = (0, import_element101.forwardRef)(
    function VisualLabel2({ className, render: render5, variant, ...restProps }, ref) {
      return useRender({
        defaultTagName: "span",
        render: render5,
        ref,
        props: mergeProps(restProps, {
          className: clsx_default(
            field_default4.label,
            variant && field_default4[`is-${variant}`],
            className
          )
        })
      });
    }
  );
  VisualLabel.displayName = "Field.VisualLabel";

  // packages/ui/build-module/form/primitives/searchable-chip-select/searchable-chip-select.mjs
  var import_element102 = __toESM(require_element(), 1);
  var import_i18n19 = __toESM(require_i18n(), 1);

  // packages/ui/build-module/form/primitives/searchable-results.mjs
  var import_jsx_runtime222 = __toESM(require_jsx_runtime(), 1);
  function isItemGroup(entry) {
    return "items" in entry && Array.isArray(entry.items);
  }
  function isCreatableItem(item) {
    return item.creatable === true;
  }
  function findCreatableItem(items) {
    if (!items) {
      return void 0;
    }
    for (const entry of items) {
      if (isItemGroup(entry)) {
        const creatable = entry.items.find(isCreatableItem);
        if (creatable) {
          return creatable;
        }
        continue;
      }
      if (isCreatableItem(entry)) {
        return entry;
      }
    }
    return void 0;
  }
  function shouldSkipCollectionEntry(entry) {
    if (isItemGroup(entry)) {
      return entry.items.length > 0 && entry.items.every(isCreatableItem);
    }
    return isCreatableItem(entry);
  }
  function SearchableResults({
    emptyContent,
    statusContent,
    children
  }) {
    const filteredItems = useFilteredItems2();
    const creatableItem = findCreatableItem(filteredItems);
    return /* @__PURE__ */ (0, import_jsx_runtime222.jsxs)(import_jsx_runtime222.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime222.jsx)(Status, { children: statusContent }),
      /* @__PURE__ */ (0, import_jsx_runtime222.jsx)(Empty, { children: emptyContent }),
      /* @__PURE__ */ (0, import_jsx_runtime222.jsxs)(List, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime222.jsx)(ListBody, { children: /* @__PURE__ */ (0, import_jsx_runtime222.jsx)(Collection, { children: (entry, ...args) => {
          if (shouldSkipCollectionEntry(entry)) {
            return null;
          }
          if (children) {
            return children(entry, ...args);
          }
          if (isItemGroup(entry)) {
            return null;
          }
          return /* @__PURE__ */ (0, import_jsx_runtime222.jsx)(
            Item2,
            {
              value: entry,
              disabled: entry.disabled,
              children: entry.label
            },
            entry.value
          );
        } }) }),
        creatableItem && /* @__PURE__ */ (0, import_jsx_runtime222.jsx)(ListFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime222.jsx)(
          Item2,
          {
            variant: "creatable",
            value: creatableItem,
            disabled: creatableItem.disabled,
            children: creatableItem.label
          }
        ) })
      ] })
    ] });
  }

  // packages/ui/build-module/form/primitives/searchable-chip-select/dev-warnings.mjs
  var import_warning = __toESM(require_warning(), 1);

  // packages/ui/build-module/form/primitives/searchable-chip-select/types.mjs
  function isItemGroup2(item) {
    return "items" in item && Array.isArray(item.items);
  }
  function isCreatableItem2(item) {
    return item.creatable === true;
  }
  function findCreatableItems(items) {
    if (!items) {
      return [];
    }
    const creatableItems = [];
    for (const entry of items) {
      if (isItemGroup2(entry)) {
        creatableItems.push(...entry.items.filter(isCreatableItem2));
        continue;
      }
      if (isCreatableItem2(entry)) {
        creatableItems.push(entry);
      }
    }
    return creatableItems;
  }
  function hasGroupedItems(items) {
    return (items ?? []).some(isItemGroup2);
  }

  // packages/ui/build-module/form/primitives/searchable-chip-select/dev-warnings.mjs
  function warnSearchableChipSelectProps(items, children) {
    if (!items?.length) {
      return;
    }
    const creatableItems = findCreatableItems(items);
    if (creatableItems.length > 1) {
      (0, import_warning.default)(
        "SearchableChipSelect: expected at most one item with `creatable: true` in `items`."
      );
    }
    if (hasGroupedItems(items) && !children) {
      (0, import_warning.default)(
        "SearchableChipSelect: grouped `items` require a `children` renderer. See the `Grouped` story for an example."
      );
    }
    let hasMixedCreatableGroup = false;
    for (const entry of items) {
      if (isItemGroup2(entry) && entry.items.some(isCreatableItem2) && entry.items.some((item) => !isCreatableItem2(item))) {
        hasMixedCreatableGroup = true;
        break;
      }
    }
    if (hasMixedCreatableGroup) {
      (0, import_warning.default)(
        "SearchableChipSelect: do not mix `creatable: true` items with regular items in the same group. Put the creatable item in its own group."
      );
    }
  }

  // packages/ui/build-module/form/primitives/searchable-chip-select/searchable-chip-select.mjs
  var import_jsx_runtime223 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE56 = "data-wp-hash";
  function getRuntime56() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument56(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash56(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE56}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE56) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle56(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime56();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash56(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE56, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument56(targetDocument) {
    const runtime = getRuntime56();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle56(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle56(hash, css) {
    const runtime = getRuntime56();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle56(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle56("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default16 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  if (typeof process === "undefined" || true) {
    registerStyle56("08122b3d53", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within,:focus-visible ._81935a08e952f267__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
  }
  var focus_module_default6 = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-parent-visible": "_81935a08e952f267__outset-ring--focus-parent-visible", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" };
  if (typeof process === "undefined" || true) {
    registerStyle56("90495f88e8", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d3d19f845e1c0aee__chips-edit-area{padding:var(--wpds-dimension-padding-sm,8px) var(--wpds-dimension-padding-md,12px) 0}._461441519be582c7__chips-list{flex-grow:1;min-width:0}._196058edad3167fa__input{--_gcd-input-padding:var(--wpds-dimension-padding-md,12px);--_gcd-input-min-height:var(--wpds-dimension-size-lg,40px);background-color:transparent;border:none;font-family:inherit;font-size:inherit;line-height:inherit;min-height:var(--wpds-dimension-size-lg,40px);outline:none;padding:var(--wpds-dimension-padding-md,12px);&:disabled,&[aria-disabled=true]{--_gcd-input-placeholder-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&::placeholder{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}}}}@layer compositions{._87e236f6a08fba82__input-layout{display:flex;flex-direction:column;height:auto;width:100%}}}");
  }
  var style_default40 = { "chips-edit-area": "d3d19f845e1c0aee__chips-edit-area", "chips-list": "_461441519be582c7__chips-list", "input": "_196058edad3167fa__input", "input-layout": "_87e236f6a08fba82__input-layout" };
  var SearchableChipSelect = (0, import_element102.forwardRef)(function SearchableChipSelect2({
    children,
    disabled: disabled2,
    emptyContent = (0, import_i18n19.__)("No results found."),
    statusContent,
    items,
    chipsContent,
    searchPlaceholder = (0, import_i18n19.__)("Search"),
    popupWidth: popupWidth2,
    showClearButton = true,
    clearButtonLabel = (0, import_i18n19.__)("Clear all"),
    "aria-label": ariaLabel,
    "aria-labelledby": ariaLabelledby,
    "aria-describedby": ariaDescribedby,
    ...restProps
  }, ref) {
    warnSearchableChipSelectProps(items, children);
    return /* @__PURE__ */ (0, import_jsx_runtime223.jsxs)(
      Root7,
      {
        items,
        multiple: true,
        disabled: disabled2,
        ...restProps,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(InputGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime223.jsxs)(
            Chips,
            {
              render: /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(
                InputLayout3,
                {
                  className: clsx_default(
                    focus_module_default6["outset-ring--focus-within"],
                    style_default40["input-layout"]
                  ),
                  visuallyDisabled: disabled2
                }
              ),
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(Value, { children: (value) => /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(import_jsx_runtime223.Fragment, { children: value.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime223.jsxs)(
                  Stack,
                  {
                    align: "start",
                    className: style_default40["chips-edit-area"],
                    children: [
                      /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(
                        Stack,
                        {
                          gap: "xs",
                          wrap: "wrap",
                          className: style_default40["chips-list"],
                          children: chipsContent ? chipsContent(value) : value.map((item) => /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(
                            ChipWithRemove,
                            {
                              children: item.label
                            },
                            item.value
                          ))
                        }
                      ),
                      showClearButton && /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(
                        Clear,
                        {
                          "aria-label": clearButtonLabel
                        }
                      )
                    ]
                  }
                ) }) }),
                /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(
                  Input4,
                  {
                    ref,
                    render: /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(
                      "input",
                      {
                        type: "text",
                        className: clsx_default(
                          global_css_defense_default16.input,
                          style_default40.input
                        )
                      }
                    ),
                    placeholder: searchPlaceholder,
                    "aria-label": ariaLabel,
                    "aria-labelledby": ariaLabelledby,
                    "aria-describedby": ariaDescribedby
                  }
                )
              ]
            }
          ) }),
          /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(Popup3, { width: popupWidth2, children: /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(
            SearchableResults,
            {
              emptyContent,
              statusContent,
              children
            }
          ) })
        ]
      }
    );
  });

  // packages/ui/build-module/form/primitives/searchable-chip-select/index.mjs
  Item2.displayName = "SearchableChipSelect.Item";
  ChipWithRemove.displayName = "SearchableChipSelect.ChipWithRemove";
  Group2.displayName = "SearchableChipSelect.Group";
  GroupLabel2.displayName = "SearchableChipSelect.GroupLabel";
  var SearchableChipSelect3 = Object.assign(SearchableChipSelect, {
    Item: Item2,
    ChipWithRemove,
    Group: Group2,
    GroupLabel: GroupLabel2,
    Collection,
    useFilteredItems: useFilteredItems2
  });

  // packages/ui/build-module/form/primitives/textarea/textarea.mjs
  var import_element103 = __toESM(require_element(), 1);
  var import_jsx_runtime224 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE57 = "data-wp-hash";
  function getRuntime57() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument57(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash57(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE57}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE57) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle57(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime57();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash57(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE57, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument57(targetDocument) {
    const runtime = getRuntime57();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle57(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle57(hash, css) {
    const runtime = getRuntime57();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle57(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle57("1540cbc709", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._1e441c22c9dc5d28__wrapper{--wp-ui-textarea-min-height:var(--wpds-dimension-size-lg,40px)}._414844876c32ecee__textarea{min-height:calc(var(--wp-ui-textarea-min-height) - 2px);resize:block}}@layer compositions{._1e441c22c9dc5d28__wrapper{--wp-ui-input-padding-block:9.9px;height:auto;line-height:1.4}}}");
  }
  var style_default41 = { "wrapper": "_1e441c22c9dc5d28__wrapper", "textarea": "_414844876c32ecee__textarea" };
  if (typeof process === "undefined" || true) {
    registerStyle57("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default17 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  var wrappedRender = (render5, restProps) => {
    return function textareaRender(props) {
      return typeof render5 === "function" ? render5(mergeProps(props, restProps)) : (0, import_element103.cloneElement)(render5, mergeProps(props, restProps));
    };
  };
  var Textarea = (0, import_element103.forwardRef)(
    function Textarea2({
      className,
      defaultValue: defaultValue2,
      disabled: disabled2,
      onValueChange,
      render: render5,
      rows = 4,
      style,
      value,
      ...restProps
    }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime224.jsx)(
        Input3,
        {
          className: clsx_default(style_default41.wrapper, className),
          style,
          render: wrappedRender(
            render5 || ((props) => /* @__PURE__ */ (0, import_jsx_runtime224.jsx)("textarea", { ...props })),
            {
              className: clsx_default(
                global_css_defense_default17.textarea,
                style_default41.textarea
              ),
              ref,
              rows,
              ...restProps
            }
          ),
          value,
          defaultValue: defaultValue2,
          onValueChange,
          disabled: disabled2
        }
      );
    }
  );

  // packages/ui/build-module/form/input-control/input-control.mjs
  var import_element104 = __toESM(require_element(), 1);
  var import_jsx_runtime225 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE58 = "data-wp-hash";
  function getRuntime58() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument58(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash58(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE58}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE58) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle58(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime58();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash58(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE58, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument58(targetDocument) {
    const runtime = getRuntime58();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle58(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle58(hash, css) {
    const runtime = getRuntime58();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle58(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle58("0c752c3d08", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer compositions{@supports (-webkit-hyphens:none) and (not (-moz-appearance:none)){.a9211a7e6af24bed__root input[type=date]:not([data-filled]):not(:focus),.a9211a7e6af24bed__root input[type=datetime-local]:not([data-filled]):not(:focus),.a9211a7e6af24bed__root input[type=time]:not([data-filled]):not(:focus){--_gcd-input-color:transparent;--_gcd-input-color-disabled:transparent;color:transparent;&:disabled::-webkit-datetime-edit-text{color:transparent}}}}}");
  }
  var style_default42 = { "root": "a9211a7e6af24bed__root" };
  var InputControl = (0, import_element104.forwardRef)(
    function InputControl2({
      className,
      label,
      description,
      details,
      hideLabelFromVision,
      ...restProps
    }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime225.jsxs)(field_exports.Root, { className: clsx_default(style_default42.root, className), children: [
        /* @__PURE__ */ (0, import_jsx_runtime225.jsx)(field_exports.Label, { hideFromVision: hideLabelFromVision, children: label }),
        /* @__PURE__ */ (0, import_jsx_runtime225.jsx)(Input3, { ref, ...restProps }),
        description && /* @__PURE__ */ (0, import_jsx_runtime225.jsx)(field_exports.Description, { children: description }),
        details && /* @__PURE__ */ (0, import_jsx_runtime225.jsx)(field_exports.Details, { children: details })
      ] });
    }
  );

  // packages/ui/build-module/form/searchable-chip-select-control/searchable-chip-select-control.mjs
  var import_element105 = __toESM(require_element(), 1);
  var import_jsx_runtime226 = __toESM(require_jsx_runtime(), 1);
  var SearchableChipSelectControl = (0, import_element105.forwardRef)(function SearchableChipSelectControl2({
    className,
    label,
    description,
    details,
    hideLabelFromVision,
    ...restProps
  }, ref) {
    return /* @__PURE__ */ (0, import_jsx_runtime226.jsxs)(field_exports.Root, { className, children: [
      /* @__PURE__ */ (0, import_jsx_runtime226.jsx)(field_exports.Label, { hideFromVision: hideLabelFromVision, children: label }),
      /* @__PURE__ */ (0, import_jsx_runtime226.jsx)(SearchableChipSelect3, { ref, ...restProps }),
      description && /* @__PURE__ */ (0, import_jsx_runtime226.jsx)(field_exports.Description, { children: description }),
      details && /* @__PURE__ */ (0, import_jsx_runtime226.jsx)(field_exports.Details, { children: details })
    ] });
  });

  // packages/ui/build-module/form/searchable-chip-select-control/index.mjs
  var SearchableChipSelectControl3 = Object.assign(
    SearchableChipSelectControl,
    {
      Group: Group2,
      GroupLabel: GroupLabel2,
      Item: Item2,
      ChipWithRemove,
      Collection,
      useFilteredItems: useFilteredItems2
    }
  );

  // packages/ui/build-module/form/textarea-control/textarea-control.mjs
  var import_element106 = __toESM(require_element(), 1);
  var import_jsx_runtime227 = __toESM(require_jsx_runtime(), 1);
  var TextareaControl = (0, import_element106.forwardRef)(function TextareaControl2({
    className,
    label,
    description,
    details,
    hideLabelFromVision,
    ...restProps
  }, ref) {
    return /* @__PURE__ */ (0, import_jsx_runtime227.jsxs)(field_exports.Root, { className, children: [
      /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(field_exports.Label, { hideFromVision: hideLabelFromVision, children: label }),
      /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(Textarea, { ref, ...restProps }),
      description && /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(field_exports.Description, { children: description }),
      details && /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(field_exports.Details, { children: details })
    ] });
  });

  // packages/ui/build-module/form/with-validation/validated-input-control/validated-input-control.mjs
  var import_element107 = __toESM(require_element(), 1);
  var import_compose6 = __toESM(require_compose(), 1);
  var import_jsx_runtime228 = __toESM(require_jsx_runtime(), 1);
  var ValidatedInputControl = (0, import_element107.forwardRef)(function ValidatedInputControl2({ required, markWhenOptional, customValidity, ...restProps }, forwardedRef) {
    const validityTargetRef = (0, import_element107.useRef)(null);
    const mergedRefs = (0, import_compose6.useMergeRefs)([forwardedRef, validityTargetRef]);
    return /* @__PURE__ */ (0, import_jsx_runtime228.jsx)(
      ControlWithError,
      {
        required,
        markWhenOptional,
        customValidity,
        getValidityTarget: () => validityTargetRef.current,
        children: /* @__PURE__ */ (0, import_jsx_runtime228.jsx)(InputControl, { ref: mergedRefs, ...restProps })
      }
    );
  });

  // packages/ui/build-module/form/with-validation/validated-textarea-control/validated-textarea-control.mjs
  var import_element108 = __toESM(require_element(), 1);
  var import_compose7 = __toESM(require_compose(), 1);
  var import_jsx_runtime229 = __toESM(require_jsx_runtime(), 1);
  var ValidatedTextareaControl = (0, import_element108.forwardRef)(function ValidatedTextareaControl2({ required, markWhenOptional, customValidity, ...restProps }, forwardedRef) {
    const validityTargetRef = (0, import_element108.useRef)(null);
    const mergedRefs = (0, import_compose7.useMergeRefs)([forwardedRef, validityTargetRef]);
    return /* @__PURE__ */ (0, import_jsx_runtime229.jsx)(
      ControlWithError,
      {
        required,
        markWhenOptional,
        customValidity,
        getValidityTarget: () => validityTargetRef.current,
        children: /* @__PURE__ */ (0, import_jsx_runtime229.jsx)(TextareaControl, { ref: mergedRefs, ...restProps })
      }
    );
  });

  // packages/ui/build-module/notice/index.mjs
  var notice_exports = {};
  __export(notice_exports, {
    ActionButton: () => ActionButton,
    ActionLink: () => ActionLink,
    Actions: () => Actions,
    CloseIcon: () => CloseIcon,
    Description: () => Description3,
    Root: () => Root9,
    Title: () => Title2
  });

  // packages/ui/build-module/notice/root.mjs
  var import_a11y2 = __toESM(require_a11y(), 1);
  var import_element109 = __toESM(require_element(), 1);
  var import_jsx_runtime230 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE59 = "data-wp-hash";
  function getRuntime59() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument59(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash59(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE59}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE59) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle59(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime59();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash59(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE59, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument59(targetDocument) {
    const runtime = getRuntime59();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle59(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle59(hash, css) {
    const runtime = getRuntime59();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle59(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle59("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default16 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle59("2e53930a41", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-background-interactive-neutral-weak-active,#ededed))}}}");
  }
  var style_default43 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" };
  var icons = {
    neutral: null,
    info: info_default,
    warning: caution_default,
    success: published_default,
    error: error_default
  };
  function getDefaultPoliteness(intent) {
    return intent === "error" ? "assertive" : "polite";
  }
  function safeRenderToString(message2) {
    if (!message2) {
      return void 0;
    }
    if (typeof message2 === "string") {
      return message2;
    }
    try {
      return (0, import_element109.renderToString)(message2);
    } catch {
      return void 0;
    }
  }
  function useSpokenMessage(message2, politeness) {
    const spokenMessage = safeRenderToString(message2);
    (0, import_element109.useEffect)(() => {
      if (spokenMessage) {
        (0, import_a11y2.speak)(spokenMessage, politeness);
      }
    }, [spokenMessage, politeness]);
  }
  var Root9 = (0, import_element109.forwardRef)(function Notice({
    intent = "neutral",
    children,
    icon,
    spokenMessage = children,
    politeness = getDefaultPoliteness(intent),
    render: render5,
    ...restProps
  }, ref) {
    useSpokenMessage(spokenMessage, politeness);
    const iconElement = icon === null ? null : icon ?? icons[intent];
    const mergedClassName = clsx_default(
      style_default43.notice,
      style_default43[`is-${intent}`],
      resets_default16["box-sizing"]
    );
    const element = useRender({
      defaultTagName: "div",
      render: render5,
      ref,
      props: mergeProps(
        {
          className: mergedClassName,
          children: /* @__PURE__ */ (0, import_jsx_runtime230.jsxs)(import_jsx_runtime230.Fragment, { children: [
            children,
            iconElement && /* @__PURE__ */ (0, import_jsx_runtime230.jsx)(
              Icon,
              {
                className: style_default43.icon,
                icon: iconElement
              }
            )
          ] })
        },
        restProps
      )
    });
    return element;
  });

  // packages/ui/build-module/notice/title.mjs
  var import_element110 = __toESM(require_element(), 1);
  var import_jsx_runtime231 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE60 = "data-wp-hash";
  function getRuntime60() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument60(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash60(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE60}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE60) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle60(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime60();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash60(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE60, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument60(targetDocument) {
    const runtime = getRuntime60();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle60(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle60(hash, css) {
    const runtime = getRuntime60();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle60(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle60("2e53930a41", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-background-interactive-neutral-weak-active,#ededed))}}}");
  }
  var style_default44 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" };
  var Title2 = (0, import_element110.forwardRef)(
    function NoticeTitle({ className, ...props }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime231.jsx)(
        Text,
        {
          ref,
          variant: "heading-md",
          className: clsx_default(style_default44.title, className),
          ...props
        }
      );
    }
  );

  // packages/ui/build-module/notice/description.mjs
  var import_element111 = __toESM(require_element(), 1);
  var import_jsx_runtime232 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE61 = "data-wp-hash";
  function getRuntime61() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument61(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash61(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE61}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE61) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle61(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime61();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash61(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE61, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument61(targetDocument) {
    const runtime = getRuntime61();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle61(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle61(hash, css) {
    const runtime = getRuntime61();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle61(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle61("2e53930a41", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-background-interactive-neutral-weak-active,#ededed))}}}");
  }
  var style_default45 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" };
  var Description3 = (0, import_element111.forwardRef)(
    function NoticeDescription({ className, ...props }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime232.jsx)(
        Text,
        {
          ref,
          variant: "body-md",
          className: clsx_default(style_default45.description, className),
          ...props
        }
      );
    }
  );

  // packages/ui/build-module/notice/actions.mjs
  var import_element112 = __toESM(require_element(), 1);
  var STYLE_HASH_ATTRIBUTE62 = "data-wp-hash";
  function getRuntime62() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument62(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash62(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE62}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE62) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle62(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime62();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash62(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE62, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument62(targetDocument) {
    const runtime = getRuntime62();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle62(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle62(hash, css) {
    const runtime = getRuntime62();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle62(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle62("2e53930a41", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-background-interactive-neutral-weak-active,#ededed))}}}");
  }
  var style_default46 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" };
  var Actions = (0, import_element112.forwardRef)(
    function NoticeActions({ render: render5, ...props }, ref) {
      const element = useRender({
        defaultTagName: "div",
        render: render5,
        ref,
        props: mergeProps(
          {
            className: style_default46.actions
          },
          props
        )
      });
      return element;
    }
  );

  // packages/ui/build-module/notice/close-icon.mjs
  var import_element113 = __toESM(require_element(), 1);
  var import_i18n20 = __toESM(require_i18n(), 1);
  var import_jsx_runtime233 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE63 = "data-wp-hash";
  function getRuntime63() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument63(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash63(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE63}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE63) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle63(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime63();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash63(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE63, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument63(targetDocument) {
    const runtime = getRuntime63();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle63(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle63(hash, css) {
    const runtime = getRuntime63();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle63(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle63("2e53930a41", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-background-interactive-neutral-weak-active,#ededed))}}}");
  }
  var style_default47 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" };
  var CloseIcon = (0, import_element113.forwardRef)(
    function NoticeCloseIcon({ className, icon = close_small_default, label = (0, import_i18n20.__)("Dismiss"), ...props }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime233.jsx)(
        IconButton,
        {
          ...props,
          ref,
          className: clsx_default(style_default47["close-icon"], className),
          variant: "minimal",
          size: "small",
          tone: "neutral",
          icon,
          label
        }
      );
    }
  );

  // packages/ui/build-module/notice/action-button.mjs
  var import_element114 = __toESM(require_element(), 1);
  var import_jsx_runtime234 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE64 = "data-wp-hash";
  function getRuntime64() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument64(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash64(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE64}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE64) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle64(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime64();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash64(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE64, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument64(targetDocument) {
    const runtime = getRuntime64();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle64(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle64(hash, css) {
    const runtime = getRuntime64();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle64(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle64("2e53930a41", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-background-interactive-neutral-weak-active,#ededed))}}}");
  }
  var style_default48 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" };
  var ActionButton = (0, import_element114.forwardRef)(
    function NoticeActionButton({ className, loading, loadingAnnouncement, variant, ...props }, ref) {
      const loadingProps = loading !== void 0 ? { loading, loadingAnnouncement: loadingAnnouncement ?? "" } : {};
      return /* @__PURE__ */ (0, import_jsx_runtime234.jsx)(
        Button5,
        {
          ...props,
          ...loadingProps,
          ref,
          size: "compact",
          tone: "neutral",
          variant,
          className: clsx_default(
            style_default48["action-button"],
            style_default48[`is-action-button-${variant}`],
            className
          )
        }
      );
    }
  );

  // packages/ui/build-module/notice/action-link.mjs
  var import_element115 = __toESM(require_element(), 1);
  var import_jsx_runtime235 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE65 = "data-wp-hash";
  function getRuntime65() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument65(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash65(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE65}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE65) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle65(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime65();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash65(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE65, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument65(targetDocument) {
    const runtime = getRuntime65();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle65(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle65(hash, css) {
    const runtime = getRuntime65();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle65(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle65("2e53930a41", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;padding:var(--wpds-dimension-padding-md,12px)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description,.b5397fb9d05389e3__title{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}.ae2e1004697cce95__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}._2e614a76af494837__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}.af00331ae17a0065__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button:is(._8ddb8fb33fbf3d38__is-action-button-outline,._77bbde495a8a0af3__is-action-button-minimal){--wp-ui-button-background-color-active:color-mix(in srgb,transparent 50%,var(--wpds-color-background-interactive-neutral-weak-active,#ededed))}}}");
  }
  var style_default49 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "title": "b5397fb9d05389e3__title", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error", "is-action-button-outline": "_8ddb8fb33fbf3d38__is-action-button-outline", "is-action-button-minimal": "_77bbde495a8a0af3__is-action-button-minimal" };
  var ActionLink = (0, import_element115.forwardRef)(
    function NoticeActionLink({ className, render: render5, ...props }, ref) {
      return /* @__PURE__ */ (0, import_jsx_runtime235.jsx)(
        Text,
        {
          ref,
          className: clsx_default(style_default49["action-link"], className),
          ...props,
          variant: "body-md",
          render: /* @__PURE__ */ (0, import_jsx_runtime235.jsx)(Link, { tone: "neutral", variant: "default", render: render5 })
        }
      );
    }
  );

  // packages/ui/build-module/skeleton/skeleton.mjs
  var import_element116 = __toESM(require_element(), 1);
  var STYLE_HASH_ATTRIBUTE66 = "data-wp-hash";
  function getRuntime66() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument66(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash66(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE66}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE66) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle66(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime66();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash66(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE66, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument66(targetDocument) {
    const runtime = getRuntime66();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle66(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle66(hash, css) {
    const runtime = getRuntime66();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle66(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle66("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
  }
  var resets_default17 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
  if (typeof process === "undefined" || true) {
    registerStyle66("ed2c39ec90", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.b20cc1690085c2f0__skeleton{background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);display:block;@media (forced-colors:active){border:var(--wpds-border-width-xs,1px) solid CanvasText}}._9b143194fdb45f93__pulse{@media not (prefers-reduced-motion){animation:e2b9fe0690281bc8__skeleton-pulse 1.5s ease-in-out infinite}}@keyframes e2b9fe0690281bc8__skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}}}");
  }
  var style_default50 = { "skeleton": "b20cc1690085c2f0__skeleton", "pulse": "_9b143194fdb45f93__pulse", "skeleton-pulse": "e2b9fe0690281bc8__skeleton-pulse" };
  var Skeleton = (0, import_element116.forwardRef)(
    function Skeleton2({ render: render5, ...props }, ref) {
      return useRender({
        render: render5,
        ref,
        props: mergeProps(
          {
            className: clsx_default(
              style_default50.skeleton,
              style_default50.pulse,
              resets_default17["box-sizing"]
            ),
            // Decorative by default; consumers mark the loading
            // region with aria-busy / role="status".
            "aria-hidden": true
          },
          props
        )
      });
    }
  );

  // packages/ui/build-module/tabs/index.mjs
  var tabs_exports = {};
  __export(tabs_exports, {
    List: () => List3,
    Panel: () => Panel2,
    Root: () => Root10,
    Tab: () => Tab
  });

  // packages/ui/build-module/tabs/list.mjs
  var import_element117 = __toESM(require_element(), 1);
  var import_compose8 = __toESM(require_compose(), 1);
  var import_jsx_runtime236 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE67 = "data-wp-hash";
  function getRuntime67() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument67(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash67(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE67}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE67) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle67(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime67();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash67(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE67, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument67(targetDocument) {
    const runtime = getRuntime67();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle67(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle67(hash, css) {
    const runtime = getRuntime67();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle67(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle67("54ae3f4680", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._7313adbc8a112e90__tablist{--direction-start:left;--direction-end:right;align-items:stretch;display:flex;overflow-inline:auto;overscroll-behavior-inline:none;position:relative;&:dir(rtl){--direction-start:right;--direction-end:left}&[data-orientation=horizontal]{--fade-width:4rem;--fade-gradient-base:transparent 0%,#000 var(--fade-width);--fade-gradient-composed:var(--fade-gradient-base),#000 60%,transparent 50%;width:fit-content;&._9f2ac729c68a735a__is-overflowing-first{mask-image:linear-gradient(to var(--direction-end),var(--fade-gradient-base))}&._81c799c1f3cdd261__is-overflowing-last{mask-image:linear-gradient(to var(--direction-start),var(--fade-gradient-base))}&._9f2ac729c68a735a__is-overflowing-first._81c799c1f3cdd261__is-overflowing-last{mask-image:linear-gradient(to right,var(--fade-gradient-composed)),linear-gradient(to left,var(--fade-gradient-composed))}&._59228b5227f38a99__is-minimal-variant{gap:1rem}}&[data-orientation=vertical]{flex-direction:column}}._1c37dcfaa1ad8cda__indicator{@media not (prefers-reduced-motion){transition-duration:.2s;transition-property:translate,width,height,border-radius,border-block;transition-timing-function:ease-out}outline:2px solid transparent;outline-offset:-1px;pointer-events:none;position:absolute;&[data-orientation=horizontal]{background-color:var(--wpds-color-stroke-interactive-neutral-strong,#6e6e6e);bottom:0;height:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px));left:0;translate:var(--active-tab-left) 0;width:var(--active-tab-width);z-index:1}&[data-orientation=vertical]{background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);border-radius:var(--wpds-border-radius-sm,2px);height:var(--active-tab-height);left:50%;top:0;translate:-50% var(--active-tab-top);width:100%;z-index:0}._7313adbc8a112e90__tablist[data-select-on-move=true]:has(:focus-visible)\n			&[data-orientation=vertical]{border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9));box-sizing:border-box}}.a5fd8814f195aa5e__tab{align-items:center;background:transparent;border:none;border-radius:0;box-shadow:none;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);cursor:var(--wpds-cursor-control,pointer);display:flex;flex:1 0 auto;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);font-weight:400;line-height:1.2;outline:none;padding:0;position:relative;white-space:nowrap;z-index:1;&[data-disabled]{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);cursor:default;@media (forced-colors:active){color:GrayText}}&:not([data-disabled]):is(:hover,:focus-visible){color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e)}&:after{border-radius:var(--wpds-border-radius-sm,2px);opacity:0;outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9));pointer-events:none;position:absolute;z-index:-1;@media not (prefers-reduced-motion){transition:opacity .1s linear}}&:focus-visible:after{opacity:1}[data-orientation=horizontal] &{height:48px;padding-inline:var(--wpds-dimension-padding-lg,16px);scroll-margin:24px;&:after{content:"";inset:var(--wpds-dimension-padding-md,12px)}}._59228b5227f38a99__is-minimal-variant[data-orientation=horizontal] &{padding-inline:0;&:after{inset-inline:round(up,var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)),1px)}}[data-orientation=vertical] &{min-height:var(--wpds-dimension-size-lg,40px);padding:var(--wpds-dimension-padding-sm,8px) var(--wpds-dimension-padding-md,12px)}[data-orientation=vertical][data-select-on-move=false] &:after{content:"";inset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}._5dfc77e6edd345d4__tab-children{align-items:center;display:flex;flex-grow:1;[data-orientation=horizontal] &{justify-content:center}[data-orientation=vertical] &{justify-content:start}}._4a20e969d15e5ac1__tab-chevron{flex-shrink:0;margin-inline-end:calc(var(--wpds-dimension-gap-xs, 4px)*-1);opacity:0;[data-orientation=horizontal] &{display:none}[role=tab]:is([aria-selected=true],:focus-visible,:hover) &{opacity:1}@media not (prefers-reduced-motion){[data-select-on-move=true]\n				[role=tab]:is([aria-selected=true])\n				&{transition:opacity .15s linear .15s}}&:dir(rtl){rotate:180deg}}}}');
  }
  var style_default51 = { "tablist": "_7313adbc8a112e90__tablist", "is-overflowing-first": "_9f2ac729c68a735a__is-overflowing-first", "is-overflowing-last": "_81c799c1f3cdd261__is-overflowing-last", "is-minimal-variant": "_59228b5227f38a99__is-minimal-variant", "indicator": "_1c37dcfaa1ad8cda__indicator", "tab": "a5fd8814f195aa5e__tab", "tab-children": "_5dfc77e6edd345d4__tab-children", "tab-chevron": "_4a20e969d15e5ac1__tab-chevron" };
  var SCROLL_EPSILON = 1;
  var List3 = (0, import_element117.forwardRef)(
    function TabList({
      children,
      variant = "default",
      className,
      activateOnFocus,
      ...otherProps
    }, forwardedRef) {
      const [listEl, setListEl] = (0, import_element117.useState)(null);
      const [overflow, setOverflow] = (0, import_element117.useState)({
        first: false,
        last: false,
        isScrolling: false
      });
      (0, import_element117.useEffect)(() => {
        if (!listEl) {
          return;
        }
        const measureOverflow = () => {
          const { scrollWidth, clientWidth, scrollLeft } = listEl;
          const maxScroll = Math.max(scrollWidth - clientWidth, 0);
          const direction = listEl.dir || (typeof window !== "undefined" ? window.getComputedStyle(listEl).direction : "ltr");
          const scrollFromStart = direction === "rtl" && scrollLeft < 0 ? (
            // In RTL layouts, scrollLeft is typically 0 at the visual "start"
            // (right edge) and becomes negative toward the "end" (left edge).
            // Normalize value for correct first/last detection logic.
            -scrollLeft
          ) : scrollLeft;
          const next = {
            first: scrollFromStart > SCROLL_EPSILON,
            last: scrollFromStart < maxScroll - SCROLL_EPSILON,
            isScrolling: scrollWidth > clientWidth
          };
          setOverflow(
            (prev) => prev.first === next.first && prev.last === next.last && prev.isScrolling === next.isScrolling ? prev : next
          );
        };
        const resizeObserver = new ResizeObserver(measureOverflow);
        const observeTabs = () => {
          resizeObserver.disconnect();
          resizeObserver.observe(listEl);
          listEl.querySelectorAll('[role="tab"]').forEach((tab) => resizeObserver.observe(tab));
        };
        const mutationObserver = new MutationObserver(observeTabs);
        mutationObserver.observe(listEl, {
          childList: true,
          subtree: true
        });
        let scrollTick = false;
        const throttleMeasureOverflowOnScroll = () => {
          if (!scrollTick) {
            requestAnimationFrame(() => {
              measureOverflow();
              scrollTick = false;
            });
            scrollTick = true;
          }
        };
        listEl.addEventListener(
          "scroll",
          throttleMeasureOverflowOnScroll,
          { passive: true }
        );
        observeTabs();
        measureOverflow();
        return () => {
          listEl.removeEventListener(
            "scroll",
            throttleMeasureOverflowOnScroll
          );
          resizeObserver.disconnect();
          mutationObserver.disconnect();
        };
      }, [listEl]);
      const mergedListRef = (0, import_compose8.useMergeRefs)([
        forwardedRef,
        (el) => setListEl(el)
      ]);
      return /* @__PURE__ */ (0, import_jsx_runtime236.jsxs)(
        index_parts_exports5.List,
        {
          ref: mergedListRef,
          activateOnFocus,
          "data-select-on-move": activateOnFocus ? "true" : "false",
          className: clsx_default(
            style_default51.tablist,
            overflow.first && style_default51["is-overflowing-first"],
            overflow.last && style_default51["is-overflowing-last"],
            style_default51[`is-${variant}-variant`],
            className
          ),
          ...otherProps,
          tabIndex: otherProps.tabIndex ?? (overflow.isScrolling ? -1 : void 0),
          children: [
            children,
            /* @__PURE__ */ (0, import_jsx_runtime236.jsx)(index_parts_exports5.Indicator, { className: style_default51.indicator })
          ]
        }
      );
    }
  );

  // packages/ui/build-module/tabs/panel.mjs
  var import_element119 = __toESM(require_element(), 1);

  // packages/ui/build-module/tabs/context.mjs
  var import_element118 = __toESM(require_element(), 1);
  var import_jsx_runtime237 = __toESM(require_jsx_runtime(), 1);
  var VALIDATION_ENABLED2 = true;
  var TabsValidationContext = VALIDATION_ENABLED2 ? (0, import_element118.createContext)(null) : null;
  function useRegisterTabDev() {
    const context = (0, import_element118.useContext)(TabsValidationContext);
    (0, import_element118.useEffect)(() => {
      if (context) {
        return context.registerTab();
      }
      return void 0;
    }, [context]);
  }
  function useRegisterTabProd() {
  }
  var useRegisterTab = VALIDATION_ENABLED2 ? useRegisterTabDev : useRegisterTabProd;
  function useRegisterPanelDev() {
    const context = (0, import_element118.useContext)(TabsValidationContext);
    (0, import_element118.useEffect)(() => {
      if (context) {
        return context.registerPanel();
      }
      return void 0;
    }, [context]);
  }
  function useRegisterPanelProd() {
  }
  var useRegisterPanel = VALIDATION_ENABLED2 ? useRegisterPanelDev : useRegisterPanelProd;
  function TabsValidationProviderDev({
    children
  }) {
    const tabCountRef = (0, import_element118.useRef)(0);
    const panelCountRef = (0, import_element118.useRef)(0);
    const scheduleValidation = useScheduleValidation(() => {
      const tabCount = tabCountRef.current;
      const panelCount = panelCountRef.current;
      if (tabCount !== panelCount) {
        throw new Error(
          `Tabs: Tab/Panel count mismatch (${tabCount} Tabs, ${panelCount} Panels). Each Tab must be associated with exactly one Panel. Mismatched or missing associations can break screen reader navigation and violate WAI-ARIA Tabs pattern requirements.`
        );
      }
    });
    const registerTab = (0, import_element118.useCallback)(() => {
      tabCountRef.current += 1;
      scheduleValidation();
      return () => {
        tabCountRef.current -= 1;
        scheduleValidation();
      };
    }, [scheduleValidation]);
    const registerPanel = (0, import_element118.useCallback)(() => {
      panelCountRef.current += 1;
      scheduleValidation();
      return () => {
        panelCountRef.current -= 1;
        scheduleValidation();
      };
    }, [scheduleValidation]);
    const contextValue = (0, import_element118.useMemo)(
      () => ({
        registerTab,
        registerPanel
      }),
      [registerTab, registerPanel]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime237.jsx)(TabsValidationContext.Provider, { value: contextValue, children });
  }
  function TabsValidationProviderProd({
    children
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime237.jsx)(import_jsx_runtime237.Fragment, { children });
  }
  var TabsValidationProvider = VALIDATION_ENABLED2 ? TabsValidationProviderDev : TabsValidationProviderProd;

  // packages/ui/build-module/tabs/panel.mjs
  var import_jsx_runtime238 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE68 = "data-wp-hash";
  function getRuntime68() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument68(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash68(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE68}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE68) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle68(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime68();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash68(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE68, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument68(targetDocument) {
    const runtime = getRuntime68();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle68(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle68(hash, css) {
    const runtime = getRuntime68();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle68(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle68("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
  }
  var global_css_defense_default18 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
  if (typeof process === "undefined" || true) {
    registerStyle68("08122b3d53", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within,:focus-visible ._81935a08e952f267__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
  }
  var focus_module_default7 = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-parent-visible": "_81935a08e952f267__outset-ring--focus-parent-visible", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" };
  var Panel2 = (0, import_element119.forwardRef)(
    function TabPanel({ className, ...otherProps }, forwardedRef) {
      useRegisterPanel();
      return /* @__PURE__ */ (0, import_jsx_runtime238.jsx)(
        index_parts_exports5.Panel,
        {
          ref: forwardedRef,
          className: clsx_default(
            global_css_defense_default18.div,
            focus_module_default7["outset-ring--focus-visible"],
            className
          ),
          ...otherProps
        }
      );
    }
  );

  // packages/ui/build-module/tabs/root.mjs
  var import_element120 = __toESM(require_element(), 1);
  var import_jsx_runtime239 = __toESM(require_jsx_runtime(), 1);
  var Root10 = (0, import_element120.forwardRef)(
    function TabsRoot3({ ...otherProps }, forwardedRef) {
      return /* @__PURE__ */ (0, import_jsx_runtime239.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime239.jsx)(TabsValidationProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime239.jsx)(index_parts_exports5.Root, { ref: forwardedRef, ...otherProps }) }) });
    }
  );

  // packages/ui/build-module/tabs/tab.mjs
  var import_element121 = __toESM(require_element(), 1);
  var import_jsx_runtime240 = __toESM(require_jsx_runtime(), 1);
  var STYLE_HASH_ATTRIBUTE69 = "data-wp-hash";
  function getRuntime69() {
    const globalScope = globalThis;
    if (globalScope.__wpStyleRuntime) {
      return globalScope.__wpStyleRuntime;
    }
    globalScope.__wpStyleRuntime = {
      documents: /* @__PURE__ */ new Map(),
      styles: /* @__PURE__ */ new Map(),
      injectedStyles: /* @__PURE__ */ new WeakMap()
    };
    if (typeof document !== "undefined") {
      registerDocument69(document);
    }
    return globalScope.__wpStyleRuntime;
  }
  function documentContainsStyleHash69(targetDocument, hash) {
    if (!targetDocument.head) {
      return false;
    }
    for (const style of targetDocument.head.querySelectorAll(
      `style[${STYLE_HASH_ATTRIBUTE69}]`
    )) {
      if (style.getAttribute(STYLE_HASH_ATTRIBUTE69) === hash) {
        return true;
      }
    }
    return false;
  }
  function injectStyle69(targetDocument, hash, css) {
    if (!targetDocument.head) {
      return;
    }
    const runtime = getRuntime69();
    let injectedStyles = runtime.injectedStyles.get(targetDocument);
    if (!injectedStyles) {
      injectedStyles = /* @__PURE__ */ new Set();
      runtime.injectedStyles.set(targetDocument, injectedStyles);
    }
    if (injectedStyles.has(hash)) {
      return;
    }
    if (documentContainsStyleHash69(targetDocument, hash)) {
      injectedStyles.add(hash);
      return;
    }
    const style = targetDocument.createElement("style");
    style.setAttribute(STYLE_HASH_ATTRIBUTE69, hash);
    style.appendChild(targetDocument.createTextNode(css));
    targetDocument.head.appendChild(style);
    injectedStyles.add(hash);
  }
  function registerDocument69(targetDocument) {
    const runtime = getRuntime69();
    runtime.documents.set(
      targetDocument,
      (runtime.documents.get(targetDocument) ?? 0) + 1
    );
    for (const [hash, css] of runtime.styles) {
      injectStyle69(targetDocument, hash, css);
    }
    return () => {
      const count = runtime.documents.get(targetDocument);
      if (count === void 0) {
        return;
      }
      if (count <= 1) {
        runtime.documents.delete(targetDocument);
        return;
      }
      runtime.documents.set(targetDocument, count - 1);
    };
  }
  function registerStyle69(hash, css) {
    const runtime = getRuntime69();
    runtime.styles.set(hash, css);
    for (const targetDocument of runtime.documents.keys()) {
      injectStyle69(targetDocument, hash, css);
    }
  }
  if (typeof process === "undefined" || true) {
    registerStyle69("54ae3f4680", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._7313adbc8a112e90__tablist{--direction-start:left;--direction-end:right;align-items:stretch;display:flex;overflow-inline:auto;overscroll-behavior-inline:none;position:relative;&:dir(rtl){--direction-start:right;--direction-end:left}&[data-orientation=horizontal]{--fade-width:4rem;--fade-gradient-base:transparent 0%,#000 var(--fade-width);--fade-gradient-composed:var(--fade-gradient-base),#000 60%,transparent 50%;width:fit-content;&._9f2ac729c68a735a__is-overflowing-first{mask-image:linear-gradient(to var(--direction-end),var(--fade-gradient-base))}&._81c799c1f3cdd261__is-overflowing-last{mask-image:linear-gradient(to var(--direction-start),var(--fade-gradient-base))}&._9f2ac729c68a735a__is-overflowing-first._81c799c1f3cdd261__is-overflowing-last{mask-image:linear-gradient(to right,var(--fade-gradient-composed)),linear-gradient(to left,var(--fade-gradient-composed))}&._59228b5227f38a99__is-minimal-variant{gap:1rem}}&[data-orientation=vertical]{flex-direction:column}}._1c37dcfaa1ad8cda__indicator{@media not (prefers-reduced-motion){transition-duration:.2s;transition-property:translate,width,height,border-radius,border-block;transition-timing-function:ease-out}outline:2px solid transparent;outline-offset:-1px;pointer-events:none;position:absolute;&[data-orientation=horizontal]{background-color:var(--wpds-color-stroke-interactive-neutral-strong,#6e6e6e);bottom:0;height:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px));left:0;translate:var(--active-tab-left) 0;width:var(--active-tab-width);z-index:1}&[data-orientation=vertical]{background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);border-radius:var(--wpds-border-radius-sm,2px);height:var(--active-tab-height);left:50%;top:0;translate:-50% var(--active-tab-top);width:100%;z-index:0}._7313adbc8a112e90__tablist[data-select-on-move=true]:has(:focus-visible)\n			&[data-orientation=vertical]{border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9));box-sizing:border-box}}.a5fd8814f195aa5e__tab{align-items:center;background:transparent;border:none;border-radius:0;box-shadow:none;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);cursor:var(--wpds-cursor-control,pointer);display:flex;flex:1 0 auto;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);font-weight:400;line-height:1.2;outline:none;padding:0;position:relative;white-space:nowrap;z-index:1;&[data-disabled]{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);cursor:default;@media (forced-colors:active){color:GrayText}}&:not([data-disabled]):is(:hover,:focus-visible){color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e)}&:after{border-radius:var(--wpds-border-radius-sm,2px);opacity:0;outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9));pointer-events:none;position:absolute;z-index:-1;@media not (prefers-reduced-motion){transition:opacity .1s linear}}&:focus-visible:after{opacity:1}[data-orientation=horizontal] &{height:48px;padding-inline:var(--wpds-dimension-padding-lg,16px);scroll-margin:24px;&:after{content:"";inset:var(--wpds-dimension-padding-md,12px)}}._59228b5227f38a99__is-minimal-variant[data-orientation=horizontal] &{padding-inline:0;&:after{inset-inline:round(up,var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)),1px)}}[data-orientation=vertical] &{min-height:var(--wpds-dimension-size-lg,40px);padding:var(--wpds-dimension-padding-sm,8px) var(--wpds-dimension-padding-md,12px)}[data-orientation=vertical][data-select-on-move=false] &:after{content:"";inset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}._5dfc77e6edd345d4__tab-children{align-items:center;display:flex;flex-grow:1;[data-orientation=horizontal] &{justify-content:center}[data-orientation=vertical] &{justify-content:start}}._4a20e969d15e5ac1__tab-chevron{flex-shrink:0;margin-inline-end:calc(var(--wpds-dimension-gap-xs, 4px)*-1);opacity:0;[data-orientation=horizontal] &{display:none}[role=tab]:is([aria-selected=true],:focus-visible,:hover) &{opacity:1}@media not (prefers-reduced-motion){[data-select-on-move=true]\n				[role=tab]:is([aria-selected=true])\n				&{transition:opacity .15s linear .15s}}&:dir(rtl){rotate:180deg}}}}');
  }
  var style_default52 = { "tablist": "_7313adbc8a112e90__tablist", "is-overflowing-first": "_9f2ac729c68a735a__is-overflowing-first", "is-overflowing-last": "_81c799c1f3cdd261__is-overflowing-last", "is-minimal-variant": "_59228b5227f38a99__is-minimal-variant", "indicator": "_1c37dcfaa1ad8cda__indicator", "tab": "a5fd8814f195aa5e__tab", "tab-children": "_5dfc77e6edd345d4__tab-children", "tab-chevron": "_4a20e969d15e5ac1__tab-chevron" };
  var Tab = (0, import_element121.forwardRef)(function Tab2({ className, children, ...otherProps }, forwardedRef) {
    useRegisterTab();
    return /* @__PURE__ */ (0, import_jsx_runtime240.jsxs)(
      index_parts_exports5.Tab,
      {
        ref: forwardedRef,
        className: clsx_default(style_default52.tab, className),
        ...otherProps,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime240.jsx)("span", { className: style_default52["tab-children"], children }),
          /* @__PURE__ */ (0, import_jsx_runtime240.jsx)(Icon, { icon: chevron_right_default, className: style_default52["tab-chevron"] })
        ]
      }
    );
  });

  // packages/fields/build-module/fields/page-title/view.mjs
  var import_jsx_runtime241 = __toESM(require_jsx_runtime(), 1);
  function PageTitleView({ item }) {
    const { frontPageId, postsPageId, privacyPolicyPageId } = (0, import_data7.useSelect)(
      (select9) => {
        const { getEntityRecord } = select9(import_core_data6.store);
        const siteSettings = getEntityRecord(
          "root",
          "site"
        );
        return {
          frontPageId: siteSettings?.page_on_front,
          postsPageId: siteSettings?.page_for_posts,
          privacyPolicyPageId: siteSettings?.page_for_privacy_policy
        };
      },
      []
    );
    let badge;
    if (item.id === frontPageId) {
      badge = (0, import_i18n21.__)("Homepage");
    } else if (item.id === postsPageId) {
      badge = (0, import_i18n21.__)("Posts Page");
    } else if (item.id === privacyPolicyPageId) {
      badge = (0, import_i18n21.__)("Privacy Policy Page");
    }
    return /* @__PURE__ */ (0, import_jsx_runtime241.jsx)(BaseTitleView, { item, className: "fields-field__page-title", children: badge && /* @__PURE__ */ (0, import_jsx_runtime241.jsx)(Badge, { children: badge }) });
  }

  // packages/fields/build-module/fields/page-title/index.mjs
  var pageTitleField = {
    type: "text",
    id: "title",
    label: (0, import_i18n22.__)("Title"),
    placeholder: (0, import_i18n22.__)("No title"),
    getValue: ({ item }) => getItemTitle(item),
    render: PageTitleView,
    enableHiding: false,
    enableGlobalSearch: true,
    filterBy: false
  };
  var page_title_default = pageTitleField;

  // packages/fields/build-module/fields/template-title/index.mjs
  var import_i18n23 = __toESM(require_i18n(), 1);
  var templateTitleField = {
    id: "title",
    type: "text",
    label: (0, import_i18n23.__)("Template"),
    placeholder: (0, import_i18n23.__)("No title"),
    getValue: ({ item }) => getItemTitle(item),
    render: TitleView,
    enableHiding: false,
    enableGlobalSearch: true,
    filterBy: false
  };
  var template_title_default = templateTitleField;

  // packages/fields/build-module/fields/pattern-title/index.mjs
  var import_i18n25 = __toESM(require_i18n(), 1);

  // packages/fields/build-module/fields/pattern-title/view.mjs
  var import_i18n24 = __toESM(require_i18n(), 1);
  var import_patterns = __toESM(require_patterns(), 1);

  // packages/fields/build-module/lock-unlock.mjs
  var import_private_apis5 = __toESM(require_private_apis(), 1);
  var { lock: lock4, unlock: unlock4 } = (0, import_private_apis5.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
    "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
    "@wordpress/fields"
  );

  // packages/fields/build-module/fields/pattern-title/view.mjs
  var import_jsx_runtime242 = __toESM(require_jsx_runtime(), 1);
  var { PATTERN_TYPES } = unlock4(import_patterns.privateApis);
  function PatternTitleView({ item }) {
    const lockMessage = (0, import_i18n24.__)("This pattern cannot be edited.");
    return /* @__PURE__ */ (0, import_jsx_runtime242.jsx)(BaseTitleView, { item, className: "fields-field__pattern-title", children: item.type === PATTERN_TYPES.theme && /* @__PURE__ */ (0, import_jsx_runtime242.jsxs)(import_jsx_runtime242.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime242.jsx)(VisuallyHidden, { children: lockMessage }),
      /* @__PURE__ */ (0, import_jsx_runtime242.jsxs)(tooltip_exports.Root, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime242.jsx)(
          tooltip_exports.Trigger,
          {
            render: /* @__PURE__ */ (0, import_jsx_runtime242.jsx)(icon_default, { icon: lock_small_default, size: 24 })
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime242.jsx)(tooltip_exports.Popup, { children: lockMessage })
      ] })
    ] }) });
  }

  // packages/fields/build-module/fields/pattern-title/index.mjs
  var patternTitleField = {
    type: "text",
    id: "title",
    label: (0, import_i18n25.__)("Title"),
    placeholder: (0, import_i18n25.__)("No title"),
    getValue: ({ item }) => getItemTitle(item),
    render: PatternTitleView,
    enableHiding: false,
    enableGlobalSearch: true,
    filterBy: false
  };
  var pattern_title_default = patternTitleField;

  // packages/fields/build-module/fields/pattern-description/index.mjs
  var import_html_entities2 = __toESM(require_html_entities(), 1);
  var import_i18n26 = __toESM(require_i18n(), 1);
  var import_jsx_runtime243 = __toESM(require_jsx_runtime(), 1);
  function getPatternDescription(item) {
    if (typeof item.excerpt === "string") {
      return (0, import_html_entities2.decodeEntities)(item.excerpt);
    }
    return (0, import_html_entities2.decodeEntities)(item.excerpt?.raw || "");
  }
  var patternDescriptionField = {
    id: "excerpt",
    type: "text",
    label: (0, import_i18n26.__)("Description"),
    placeholder: (0, import_i18n26.__)("Add a description"),
    getValue: ({ item }) => getPatternDescription(item),
    render: ({ item }) => {
      const description = getPatternDescription(item);
      return description ? /* @__PURE__ */ (0, import_jsx_runtime243.jsx)(Text, { children: description }) : null;
    },
    Edit: {
      control: "textarea",
      rows: 4
    },
    enableSorting: false,
    enableHiding: false,
    filterBy: false,
    enableGlobalSearch: true
  };
  var pattern_description_default = patternDescriptionField;

  // packages/fields/build-module/fields/pattern-sync-status/index.mjs
  var import_i18n27 = __toESM(require_i18n(), 1);
  var import_patterns2 = __toESM(require_patterns(), 1);
  var import_jsx_runtime244 = __toESM(require_jsx_runtime(), 1);
  var { PATTERN_SYNC_TYPES, PATTERN_TYPES: PATTERN_TYPES2 } = unlock4(import_patterns2.privateApis);
  var SYNC_STATUS_FILTERS = [
    {
      value: PATTERN_SYNC_TYPES.full,
      label: (0, import_i18n27._x)("Synced", "pattern (singular)"),
      description: (0, import_i18n27.__)("Patterns that are kept in sync across the site.")
    },
    {
      value: PATTERN_SYNC_TYPES.unsynced,
      label: (0, import_i18n27._x)("Not synced", "pattern (singular)"),
      description: (0, import_i18n27.__)(
        "Patterns that can be changed freely without affecting the site."
      )
    }
  ];
  function getPatternSyncStatus(item) {
    if (item.type && item.type !== PATTERN_TYPES2.user) {
      return PATTERN_SYNC_TYPES.unsynced;
    }
    if (item.meta?.wp_pattern_sync_status === PATTERN_SYNC_TYPES.unsynced) {
      return PATTERN_SYNC_TYPES.unsynced;
    }
    return item.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full;
  }
  var patternSyncStatusField = {
    id: "sync-status",
    type: "text",
    label: (0, import_i18n27.__)("Sync status"),
    readOnly: true,
    enableSorting: false,
    enableHiding: true,
    elements: SYNC_STATUS_FILTERS,
    filterBy: {
      operators: ["is"],
      isPrimary: true
    },
    render: ({ item }) => {
      const syncStatus = getPatternSyncStatus(item);
      return /* @__PURE__ */ (0, import_jsx_runtime244.jsx)(
        "span",
        {
          className: `fields-field__pattern-sync-status fields-field__pattern-sync-status-${syncStatus}`,
          children: SYNC_STATUS_FILTERS.find(
            ({ value }) => value === syncStatus
          )?.label
        }
      );
    }
  };
  var pattern_sync_status_default = patternSyncStatusField;

  // packages/fields/build-module/fields/featured-image/index.mjs
  var import_i18n29 = __toESM(require_i18n(), 1);

  // packages/fields/build-module/fields/featured-image/edit.mjs
  var import_components5 = __toESM(require_components(), 1);
  var import_core_data8 = __toESM(require_core_data(), 1);
  var import_data9 = __toESM(require_data(), 1);
  var import_element124 = __toESM(require_element(), 1);

  // packages/fields/build-module/components/media-edit/index.mjs
  var import_components4 = __toESM(require_components(), 1);
  var import_blob = __toESM(require_blob(), 1);
  var import_core_data7 = __toESM(require_core_data(), 1);
  var import_data8 = __toESM(require_data(), 1);
  var import_element123 = __toESM(require_element(), 1);
  var import_i18n28 = __toESM(require_i18n(), 1);
  var import_html_entities3 = __toESM(require_html_entities(), 1);
  var import_a11y3 = __toESM(require_a11y(), 1);
  var import_media_utils = __toESM(require_media_utils(), 1);
  var import_notices2 = __toESM(require_notices(), 1);

  // node_modules/@react-spring/rafz/dist/react-spring-rafz.esm.js
  var updateQueue = makeQueue();
  var raf = (fn) => schedule(fn, updateQueue);
  var writeQueue = makeQueue();
  raf.write = (fn) => schedule(fn, writeQueue);
  var onStartQueue = makeQueue();
  raf.onStart = (fn) => schedule(fn, onStartQueue);
  var onFrameQueue = makeQueue();
  raf.onFrame = (fn) => schedule(fn, onFrameQueue);
  var onFinishQueue = makeQueue();
  raf.onFinish = (fn) => schedule(fn, onFinishQueue);
  var timeouts = [];
  raf.setTimeout = (handler, ms) => {
    let time = raf.now() + ms;
    let cancel = () => {
      let i2 = timeouts.findIndex((t3) => t3.cancel == cancel);
      if (~i2) timeouts.splice(i2, 1);
      pendingCount -= ~i2 ? 1 : 0;
    };
    let timeout = {
      time,
      handler,
      cancel
    };
    timeouts.splice(findTimeout(time), 0, timeout);
    pendingCount += 1;
    start();
    return timeout;
  };
  var findTimeout = (time) => ~(~timeouts.findIndex((t3) => t3.time > time) || ~timeouts.length);
  raf.cancel = (fn) => {
    onStartQueue.delete(fn);
    onFrameQueue.delete(fn);
    onFinishQueue.delete(fn);
    updateQueue.delete(fn);
    writeQueue.delete(fn);
  };
  raf.sync = (fn) => {
    sync = true;
    raf.batchedUpdates(fn);
    sync = false;
  };
  raf.throttle = (fn) => {
    let lastArgs;
    function queuedFn() {
      try {
        fn(...lastArgs);
      } finally {
        lastArgs = null;
      }
    }
    function throttled(...args) {
      lastArgs = args;
      raf.onStart(queuedFn);
    }
    throttled.handler = fn;
    throttled.cancel = () => {
      onStartQueue.delete(queuedFn);
      lastArgs = null;
    };
    return throttled;
  };
  var nativeRaf = typeof window != "undefined" ? window.requestAnimationFrame : () => {
  };
  raf.use = (impl) => nativeRaf = impl;
  raf.now = typeof performance != "undefined" ? () => performance.now() : Date.now;
  raf.batchedUpdates = (fn) => fn();
  raf.catch = console.error;
  raf.frameLoop = "always";
  raf.advance = () => {
    if (raf.frameLoop !== "demand") {
      console.warn("Cannot call the manual advancement of rafz whilst frameLoop is not set as demand");
    } else {
      update2();
    }
  };
  var ts = -1;
  var pendingCount = 0;
  var sync = false;
  function schedule(fn, queue) {
    if (sync) {
      queue.delete(fn);
      fn(0);
    } else {
      queue.add(fn);
      start();
    }
  }
  function start() {
    if (ts < 0) {
      ts = 0;
      if (raf.frameLoop !== "demand") {
        nativeRaf(loop);
      }
    }
  }
  function stop() {
    ts = -1;
  }
  function loop() {
    if (~ts) {
      nativeRaf(loop);
      raf.batchedUpdates(update2);
    }
  }
  function update2() {
    let prevTs = ts;
    ts = raf.now();
    let count = findTimeout(ts);
    if (count) {
      eachSafely(timeouts.splice(0, count), (t3) => t3.handler());
      pendingCount -= count;
    }
    if (!pendingCount) {
      stop();
      return;
    }
    onStartQueue.flush();
    updateQueue.flush(prevTs ? Math.min(64, ts - prevTs) : 16.667);
    onFrameQueue.flush();
    writeQueue.flush();
    onFinishQueue.flush();
  }
  function makeQueue() {
    let next = /* @__PURE__ */ new Set();
    let current = next;
    return {
      add(fn) {
        pendingCount += current == next && !next.has(fn) ? 1 : 0;
        next.add(fn);
      },
      delete(fn) {
        pendingCount -= current == next && next.has(fn) ? 1 : 0;
        return next.delete(fn);
      },
      flush(arg) {
        if (current.size) {
          next = /* @__PURE__ */ new Set();
          pendingCount -= current.size;
          eachSafely(current, (fn) => fn(arg) && next.add(fn));
          pendingCount += next.size;
          current = next;
        }
      }
    };
  }
  function eachSafely(values, each2) {
    values.forEach((value) => {
      try {
        each2(value);
      } catch (e2) {
        raf.catch(e2);
      }
    });
  }

  // node_modules/@react-spring/shared/dist/react-spring-shared.esm.js
  var import_react55 = __toESM(require_react());
  function noop4() {
  }
  var defineHidden = (obj, key, value) => Object.defineProperty(obj, key, {
    value,
    writable: true,
    configurable: true
  });
  var is = {
    arr: Array.isArray,
    obj: (a2) => !!a2 && a2.constructor.name === "Object",
    fun: (a2) => typeof a2 === "function",
    str: (a2) => typeof a2 === "string",
    num: (a2) => typeof a2 === "number",
    und: (a2) => a2 === void 0
  };
  function isEqual(a2, b2) {
    if (is.arr(a2)) {
      if (!is.arr(b2) || a2.length !== b2.length) return false;
      for (let i2 = 0; i2 < a2.length; i2++) {
        if (a2[i2] !== b2[i2]) return false;
      }
      return true;
    }
    return a2 === b2;
  }
  var each = (obj, fn) => obj.forEach(fn);
  function eachProp(obj, fn, ctx9) {
    if (is.arr(obj)) {
      for (let i2 = 0; i2 < obj.length; i2++) {
        fn.call(ctx9, obj[i2], `${i2}`);
      }
      return;
    }
    for (const key in obj) {
      if (obj.hasOwnProperty(key)) {
        fn.call(ctx9, obj[key], key);
      }
    }
  }
  var toArray = (a2) => is.und(a2) ? [] : is.arr(a2) ? a2 : [a2];
  function flush(queue, iterator) {
    if (queue.size) {
      const items = Array.from(queue);
      queue.clear();
      each(items, iterator);
    }
  }
  var flushCalls = (queue, ...args) => flush(queue, (fn) => fn(...args));
  var isSSR = () => typeof window === "undefined" || !window.navigator || /ServerSideRendering|^Deno\//.test(window.navigator.userAgent);
  var createStringInterpolator$1;
  var to;
  var colors$1 = null;
  var skipAnimation = false;
  var willAdvance = noop4;
  var assign = (globals2) => {
    if (globals2.to) to = globals2.to;
    if (globals2.now) raf.now = globals2.now;
    if (globals2.colors !== void 0) colors$1 = globals2.colors;
    if (globals2.skipAnimation != null) skipAnimation = globals2.skipAnimation;
    if (globals2.createStringInterpolator) createStringInterpolator$1 = globals2.createStringInterpolator;
    if (globals2.requestAnimationFrame) raf.use(globals2.requestAnimationFrame);
    if (globals2.batchedUpdates) raf.batchedUpdates = globals2.batchedUpdates;
    if (globals2.willAdvance) willAdvance = globals2.willAdvance;
    if (globals2.frameLoop) raf.frameLoop = globals2.frameLoop;
  };
  var globals = /* @__PURE__ */ Object.freeze({
    __proto__: null,
    get createStringInterpolator() {
      return createStringInterpolator$1;
    },
    get to() {
      return to;
    },
    get colors() {
      return colors$1;
    },
    get skipAnimation() {
      return skipAnimation;
    },
    get willAdvance() {
      return willAdvance;
    },
    assign
  });
  var startQueue = /* @__PURE__ */ new Set();
  var currentFrame = [];
  var prevFrame = [];
  var priority = 0;
  var frameLoop = {
    get idle() {
      return !startQueue.size && !currentFrame.length;
    },
    start(animation) {
      if (priority > animation.priority) {
        startQueue.add(animation);
        raf.onStart(flushStartQueue);
      } else {
        startSafely(animation);
        raf(advance);
      }
    },
    advance,
    sort(animation) {
      if (priority) {
        raf.onFrame(() => frameLoop.sort(animation));
      } else {
        const prevIndex = currentFrame.indexOf(animation);
        if (~prevIndex) {
          currentFrame.splice(prevIndex, 1);
          startUnsafely(animation);
        }
      }
    },
    clear() {
      currentFrame = [];
      startQueue.clear();
    }
  };
  function flushStartQueue() {
    startQueue.forEach(startSafely);
    startQueue.clear();
    raf(advance);
  }
  function startSafely(animation) {
    if (!currentFrame.includes(animation)) startUnsafely(animation);
  }
  function startUnsafely(animation) {
    currentFrame.splice(findIndex2(currentFrame, (other) => other.priority > animation.priority), 0, animation);
  }
  function advance(dt) {
    const nextFrame = prevFrame;
    for (let i2 = 0; i2 < currentFrame.length; i2++) {
      const animation = currentFrame[i2];
      priority = animation.priority;
      if (!animation.idle) {
        willAdvance(animation);
        animation.advance(dt);
        if (!animation.idle) {
          nextFrame.push(animation);
        }
      }
    }
    priority = 0;
    prevFrame = currentFrame;
    prevFrame.length = 0;
    currentFrame = nextFrame;
    return currentFrame.length > 0;
  }
  function findIndex2(arr, test) {
    const index3 = arr.findIndex(test);
    return index3 < 0 ? arr.length : index3;
  }
  var colors = {
    transparent: 0,
    aliceblue: 4042850303,
    antiquewhite: 4209760255,
    aqua: 16777215,
    aquamarine: 2147472639,
    azure: 4043309055,
    beige: 4126530815,
    bisque: 4293182719,
    black: 255,
    blanchedalmond: 4293643775,
    blue: 65535,
    blueviolet: 2318131967,
    brown: 2771004159,
    burlywood: 3736635391,
    burntsienna: 3934150143,
    cadetblue: 1604231423,
    chartreuse: 2147418367,
    chocolate: 3530104575,
    coral: 4286533887,
    cornflowerblue: 1687547391,
    cornsilk: 4294499583,
    crimson: 3692313855,
    cyan: 16777215,
    darkblue: 35839,
    darkcyan: 9145343,
    darkgoldenrod: 3095792639,
    darkgray: 2846468607,
    darkgreen: 6553855,
    darkgrey: 2846468607,
    darkkhaki: 3182914559,
    darkmagenta: 2332068863,
    darkolivegreen: 1433087999,
    darkorange: 4287365375,
    darkorchid: 2570243327,
    darkred: 2332033279,
    darksalmon: 3918953215,
    darkseagreen: 2411499519,
    darkslateblue: 1211993087,
    darkslategray: 793726975,
    darkslategrey: 793726975,
    darkturquoise: 13554175,
    darkviolet: 2483082239,
    deeppink: 4279538687,
    deepskyblue: 12582911,
    dimgray: 1768516095,
    dimgrey: 1768516095,
    dodgerblue: 512819199,
    firebrick: 2988581631,
    floralwhite: 4294635775,
    forestgreen: 579543807,
    fuchsia: 4278255615,
    gainsboro: 3705462015,
    ghostwhite: 4177068031,
    gold: 4292280575,
    goldenrod: 3668254975,
    gray: 2155905279,
    green: 8388863,
    greenyellow: 2919182335,
    grey: 2155905279,
    honeydew: 4043305215,
    hotpink: 4285117695,
    indianred: 3445382399,
    indigo: 1258324735,
    ivory: 4294963455,
    khaki: 4041641215,
    lavender: 3873897215,
    lavenderblush: 4293981695,
    lawngreen: 2096890111,
    lemonchiffon: 4294626815,
    lightblue: 2916673279,
    lightcoral: 4034953471,
    lightcyan: 3774873599,
    lightgoldenrodyellow: 4210742015,
    lightgray: 3553874943,
    lightgreen: 2431553791,
    lightgrey: 3553874943,
    lightpink: 4290167295,
    lightsalmon: 4288707327,
    lightseagreen: 548580095,
    lightskyblue: 2278488831,
    lightslategray: 2005441023,
    lightslategrey: 2005441023,
    lightsteelblue: 2965692159,
    lightyellow: 4294959359,
    lime: 16711935,
    limegreen: 852308735,
    linen: 4210091775,
    magenta: 4278255615,
    maroon: 2147483903,
    mediumaquamarine: 1724754687,
    mediumblue: 52735,
    mediumorchid: 3126187007,
    mediumpurple: 2473647103,
    mediumseagreen: 1018393087,
    mediumslateblue: 2070474495,
    mediumspringgreen: 16423679,
    mediumturquoise: 1221709055,
    mediumvioletred: 3340076543,
    midnightblue: 421097727,
    mintcream: 4127193855,
    mistyrose: 4293190143,
    moccasin: 4293178879,
    navajowhite: 4292783615,
    navy: 33023,
    oldlace: 4260751103,
    olive: 2155872511,
    olivedrab: 1804477439,
    orange: 4289003775,
    orangered: 4282712319,
    orchid: 3664828159,
    palegoldenrod: 4008225535,
    palegreen: 2566625535,
    paleturquoise: 2951671551,
    palevioletred: 3681588223,
    papayawhip: 4293907967,
    peachpuff: 4292524543,
    peru: 3448061951,
    pink: 4290825215,
    plum: 3718307327,
    powderblue: 2967529215,
    purple: 2147516671,
    rebeccapurple: 1714657791,
    red: 4278190335,
    rosybrown: 3163525119,
    royalblue: 1097458175,
    saddlebrown: 2336560127,
    salmon: 4202722047,
    sandybrown: 4104413439,
    seagreen: 780883967,
    seashell: 4294307583,
    sienna: 2689740287,
    silver: 3233857791,
    skyblue: 2278484991,
    slateblue: 1784335871,
    slategray: 1887473919,
    slategrey: 1887473919,
    snow: 4294638335,
    springgreen: 16744447,
    steelblue: 1182971135,
    tan: 3535047935,
    teal: 8421631,
    thistle: 3636451583,
    tomato: 4284696575,
    turquoise: 1088475391,
    violet: 4001558271,
    wheat: 4125012991,
    white: 4294967295,
    whitesmoke: 4126537215,
    yellow: 4294902015,
    yellowgreen: 2597139199
  };
  var NUMBER = "[-+]?\\d*\\.?\\d+";
  var PERCENTAGE = NUMBER + "%";
  function call(...parts) {
    return "\\(\\s*(" + parts.join(")\\s*,\\s*(") + ")\\s*\\)";
  }
  var rgb = new RegExp("rgb" + call(NUMBER, NUMBER, NUMBER));
  var rgba = new RegExp("rgba" + call(NUMBER, NUMBER, NUMBER, NUMBER));
  var hsl = new RegExp("hsl" + call(NUMBER, PERCENTAGE, PERCENTAGE));
  var hsla = new RegExp("hsla" + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));
  var hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;
  var hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;
  var hex6 = /^#([0-9a-fA-F]{6})$/;
  var hex8 = /^#([0-9a-fA-F]{8})$/;
  function normalizeColor(color) {
    let match3;
    if (typeof color === "number") {
      return color >>> 0 === color && color >= 0 && color <= 4294967295 ? color : null;
    }
    if (match3 = hex6.exec(color)) return parseInt(match3[1] + "ff", 16) >>> 0;
    if (colors$1 && colors$1[color] !== void 0) {
      return colors$1[color];
    }
    if (match3 = rgb.exec(color)) {
      return (parse255(match3[1]) << 24 | parse255(match3[2]) << 16 | parse255(match3[3]) << 8 | 255) >>> 0;
    }
    if (match3 = rgba.exec(color)) {
      return (parse255(match3[1]) << 24 | parse255(match3[2]) << 16 | parse255(match3[3]) << 8 | parse1(match3[4])) >>> 0;
    }
    if (match3 = hex3.exec(color)) {
      return parseInt(match3[1] + match3[1] + match3[2] + match3[2] + match3[3] + match3[3] + "ff", 16) >>> 0;
    }
    if (match3 = hex8.exec(color)) return parseInt(match3[1], 16) >>> 0;
    if (match3 = hex4.exec(color)) {
      return parseInt(match3[1] + match3[1] + match3[2] + match3[2] + match3[3] + match3[3] + match3[4] + match3[4], 16) >>> 0;
    }
    if (match3 = hsl.exec(color)) {
      return (hslToRgb(parse360(match3[1]), parsePercentage(match3[2]), parsePercentage(match3[3])) | 255) >>> 0;
    }
    if (match3 = hsla.exec(color)) {
      return (hslToRgb(parse360(match3[1]), parsePercentage(match3[2]), parsePercentage(match3[3])) | parse1(match3[4])) >>> 0;
    }
    return null;
  }
  function hue2rgb(p4, q2, t3) {
    if (t3 < 0) t3 += 1;
    if (t3 > 1) t3 -= 1;
    if (t3 < 1 / 6) return p4 + (q2 - p4) * 6 * t3;
    if (t3 < 1 / 2) return q2;
    if (t3 < 2 / 3) return p4 + (q2 - p4) * (2 / 3 - t3) * 6;
    return p4;
  }
  function hslToRgb(h2, s2, l3) {
    const q2 = l3 < 0.5 ? l3 * (1 + s2) : l3 + s2 - l3 * s2;
    const p4 = 2 * l3 - q2;
    const r4 = hue2rgb(p4, q2, h2 + 1 / 3);
    const g3 = hue2rgb(p4, q2, h2);
    const b2 = hue2rgb(p4, q2, h2 - 1 / 3);
    return Math.round(r4 * 255) << 24 | Math.round(g3 * 255) << 16 | Math.round(b2 * 255) << 8;
  }
  function parse255(str3) {
    const int = parseInt(str3, 10);
    if (int < 0) return 0;
    if (int > 255) return 255;
    return int;
  }
  function parse360(str3) {
    const int = parseFloat(str3);
    return (int % 360 + 360) % 360 / 360;
  }
  function parse1(str3) {
    const num = parseFloat(str3);
    if (num < 0) return 0;
    if (num > 1) return 255;
    return Math.round(num * 255);
  }
  function parsePercentage(str3) {
    const int = parseFloat(str3);
    if (int < 0) return 0;
    if (int > 100) return 1;
    return int / 100;
  }
  function colorToRgba(input) {
    let int32Color = normalizeColor(input);
    if (int32Color === null) return input;
    int32Color = int32Color || 0;
    let r4 = (int32Color & 4278190080) >>> 24;
    let g3 = (int32Color & 16711680) >>> 16;
    let b2 = (int32Color & 65280) >>> 8;
    let a2 = (int32Color & 255) / 255;
    return `rgba(${r4}, ${g3}, ${b2}, ${a2})`;
  }
  var createInterpolator = (range, output, extrapolate) => {
    if (is.fun(range)) {
      return range;
    }
    if (is.arr(range)) {
      return createInterpolator({
        range,
        output,
        extrapolate
      });
    }
    if (is.str(range.output[0])) {
      return createStringInterpolator$1(range);
    }
    const config2 = range;
    const outputRange = config2.output;
    const inputRange = config2.range || [0, 1];
    const extrapolateLeft = config2.extrapolateLeft || config2.extrapolate || "extend";
    const extrapolateRight = config2.extrapolateRight || config2.extrapolate || "extend";
    const easing = config2.easing || ((t3) => t3);
    return (input) => {
      const range2 = findRange(input, inputRange);
      return interpolate(input, inputRange[range2], inputRange[range2 + 1], outputRange[range2], outputRange[range2 + 1], easing, extrapolateLeft, extrapolateRight, config2.map);
    };
  };
  function interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {
    let result = map ? map(input) : input;
    if (result < inputMin) {
      if (extrapolateLeft === "identity") return result;
      else if (extrapolateLeft === "clamp") result = inputMin;
    }
    if (result > inputMax) {
      if (extrapolateRight === "identity") return result;
      else if (extrapolateRight === "clamp") result = inputMax;
    }
    if (outputMin === outputMax) return outputMin;
    if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax;
    if (inputMin === -Infinity) result = -result;
    else if (inputMax === Infinity) result = result - inputMin;
    else result = (result - inputMin) / (inputMax - inputMin);
    result = easing(result);
    if (outputMin === -Infinity) result = -result;
    else if (outputMax === Infinity) result = result + outputMin;
    else result = result * (outputMax - outputMin) + outputMin;
    return result;
  }
  function findRange(input, inputRange) {
    for (var i2 = 1; i2 < inputRange.length - 1; ++i2) if (inputRange[i2] >= input) break;
    return i2 - 1;
  }
  function _extends() {
    _extends = Object.assign ? Object.assign.bind() : function(target) {
      for (var i2 = 1; i2 < arguments.length; i2++) {
        var source = arguments[i2];
        for (var key in source) {
          if (Object.prototype.hasOwnProperty.call(source, key)) {
            target[key] = source[key];
          }
        }
      }
      return target;
    };
    return _extends.apply(this, arguments);
  }
  var $get = /* @__PURE__ */ Symbol.for("FluidValue.get");
  var $observers = /* @__PURE__ */ Symbol.for("FluidValue.observers");
  var hasFluidValue = (arg) => Boolean(arg && arg[$get]);
  var getFluidValue = (arg) => arg && arg[$get] ? arg[$get]() : arg;
  var getFluidObservers = (target) => target[$observers] || null;
  function callFluidObserver(observer, event) {
    if (observer.eventObserved) {
      observer.eventObserved(event);
    } else {
      observer(event);
    }
  }
  function callFluidObservers(target, event) {
    let observers = target[$observers];
    if (observers) {
      observers.forEach((observer) => {
        callFluidObserver(observer, event);
      });
    }
  }
  var FluidValue = class {
    constructor(get) {
      this[$get] = void 0;
      this[$observers] = void 0;
      if (!get && !(get = this.get)) {
        throw Error("Unknown getter");
      }
      setFluidGetter(this, get);
    }
  };
  var setFluidGetter = (target, get) => setHidden(target, $get, get);
  function addFluidObserver(target, observer) {
    if (target[$get]) {
      let observers = target[$observers];
      if (!observers) {
        setHidden(target, $observers, observers = /* @__PURE__ */ new Set());
      }
      if (!observers.has(observer)) {
        observers.add(observer);
        if (target.observerAdded) {
          target.observerAdded(observers.size, observer);
        }
      }
    }
    return observer;
  }
  function removeFluidObserver(target, observer) {
    let observers = target[$observers];
    if (observers && observers.has(observer)) {
      const count = observers.size - 1;
      if (count) {
        observers.delete(observer);
      } else {
        target[$observers] = null;
      }
      if (target.observerRemoved) {
        target.observerRemoved(count, observer);
      }
    }
  }
  var setHidden = (target, key, value) => Object.defineProperty(target, key, {
    value,
    writable: true,
    configurable: true
  });
  var numberRegex = /[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;
  var colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi;
  var unitRegex = new RegExp(`(${numberRegex.source})(%|[a-z]+)`, "i");
  var rgbaRegex = /rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi;
  var cssVariableRegex = /var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;
  var variableToRgba = (input) => {
    const [token, fallback] = parseCSSVariable(input);
    if (!token || isSSR()) {
      return input;
    }
    const value = window.getComputedStyle(document.documentElement).getPropertyValue(token);
    if (value) {
      return value.trim();
    } else if (fallback && fallback.startsWith("--")) {
      const _value = window.getComputedStyle(document.documentElement).getPropertyValue(fallback);
      if (_value) {
        return _value;
      } else {
        return input;
      }
    } else if (fallback && cssVariableRegex.test(fallback)) {
      return variableToRgba(fallback);
    } else if (fallback) {
      return fallback;
    }
    return input;
  };
  var parseCSSVariable = (current) => {
    const match3 = cssVariableRegex.exec(current);
    if (!match3) return [,];
    const [, token, fallback] = match3;
    return [token, fallback];
  };
  var namedColorRegex;
  var rgbaRound = (_, p1, p22, p32, p4) => `rgba(${Math.round(p1)}, ${Math.round(p22)}, ${Math.round(p32)}, ${p4})`;
  var createStringInterpolator = (config2) => {
    if (!namedColorRegex) namedColorRegex = colors$1 ? new RegExp(`(${Object.keys(colors$1).join("|")})(?!\\w)`, "g") : /^\b$/;
    const output = config2.output.map((value) => {
      return getFluidValue(value).replace(cssVariableRegex, variableToRgba).replace(colorRegex, colorToRgba).replace(namedColorRegex, colorToRgba);
    });
    const keyframes = output.map((value) => value.match(numberRegex).map(Number));
    const outputRanges = keyframes[0].map((_, i2) => keyframes.map((values) => {
      if (!(i2 in values)) {
        throw Error('The arity of each "output" value must be equal');
      }
      return values[i2];
    }));
    const interpolators = outputRanges.map((output2) => createInterpolator(_extends({}, config2, {
      output: output2
    })));
    return (input) => {
      var _output$find;
      const missingUnit = !unitRegex.test(output[0]) && ((_output$find = output.find((value) => unitRegex.test(value))) == null ? void 0 : _output$find.replace(numberRegex, ""));
      let i2 = 0;
      return output[0].replace(numberRegex, () => `${interpolators[i2++](input)}${missingUnit || ""}`).replace(rgbaRegex, rgbaRound);
    };
  };
  var prefix = "react-spring: ";
  var once = (fn) => {
    const func = fn;
    let called = false;
    if (typeof func != "function") {
      throw new TypeError(`${prefix}once requires a function parameter`);
    }
    return (...args) => {
      if (!called) {
        func(...args);
        called = true;
      }
    };
  };
  var warnInterpolate = once(console.warn);
  function deprecateInterpolate() {
    warnInterpolate(`${prefix}The "interpolate" function is deprecated in v9 (use "to" instead)`);
  }
  var warnDirectCall = once(console.warn);
  function isAnimatedString(value) {
    return is.str(value) && (value[0] == "#" || /\d/.test(value) || !isSSR() && cssVariableRegex.test(value) || value in (colors$1 || {}));
  }
  var useIsomorphicLayoutEffect2 = isSSR() ? import_react55.useEffect : import_react55.useLayoutEffect;
  var useIsMounted = () => {
    const isMounted = (0, import_react55.useRef)(false);
    useIsomorphicLayoutEffect2(() => {
      isMounted.current = true;
      return () => {
        isMounted.current = false;
      };
    }, []);
    return isMounted;
  };
  function useForceUpdate() {
    const update4 = (0, import_react55.useState)()[1];
    const isMounted = useIsMounted();
    return () => {
      if (isMounted.current) {
        update4(Math.random());
      }
    };
  }
  function useMemoOne(getResult, inputs) {
    const [initial2] = (0, import_react55.useState)(() => ({
      inputs,
      result: getResult()
    }));
    const committed = (0, import_react55.useRef)();
    const prevCache = committed.current;
    let cache = prevCache;
    if (cache) {
      const useCache = Boolean(inputs && cache.inputs && areInputsEqual(inputs, cache.inputs));
      if (!useCache) {
        cache = {
          inputs,
          result: getResult()
        };
      }
    } else {
      cache = initial2;
    }
    (0, import_react55.useEffect)(() => {
      committed.current = cache;
      if (prevCache == initial2) {
        initial2.inputs = initial2.result = void 0;
      }
    }, [cache]);
    return cache.result;
  }
  function areInputsEqual(next, prev) {
    if (next.length !== prev.length) {
      return false;
    }
    for (let i2 = 0; i2 < next.length; i2++) {
      if (next[i2] !== prev[i2]) {
        return false;
      }
    }
    return true;
  }
  var useOnce = (effect) => (0, import_react55.useEffect)(effect, emptyDeps);
  var emptyDeps = [];

  // node_modules/@react-spring/core/dist/react-spring-core.esm.js
  var React205 = __toESM(require_react());
  var import_react57 = __toESM(require_react());

  // node_modules/@react-spring/animated/dist/react-spring-animated.esm.js
  var React204 = __toESM(require_react());
  var import_react56 = __toESM(require_react());
  var $node = /* @__PURE__ */ Symbol.for("Animated:node");
  var isAnimated = (value) => !!value && value[$node] === value;
  var getAnimated = (owner) => owner && owner[$node];
  var setAnimated = (owner, node) => defineHidden(owner, $node, node);
  var getPayload = (owner) => owner && owner[$node] && owner[$node].getPayload();
  var Animated = class {
    constructor() {
      this.payload = void 0;
      setAnimated(this, this);
    }
    getPayload() {
      return this.payload || [];
    }
  };
  var AnimatedValue = class _AnimatedValue extends Animated {
    constructor(_value) {
      super();
      this.done = true;
      this.elapsedTime = void 0;
      this.lastPosition = void 0;
      this.lastVelocity = void 0;
      this.v0 = void 0;
      this.durationProgress = 0;
      this._value = _value;
      if (is.num(this._value)) {
        this.lastPosition = this._value;
      }
    }
    static create(value) {
      return new _AnimatedValue(value);
    }
    getPayload() {
      return [this];
    }
    getValue() {
      return this._value;
    }
    setValue(value, step) {
      if (is.num(value)) {
        this.lastPosition = value;
        if (step) {
          value = Math.round(value / step) * step;
          if (this.done) {
            this.lastPosition = value;
          }
        }
      }
      if (this._value === value) {
        return false;
      }
      this._value = value;
      return true;
    }
    reset() {
      const {
        done
      } = this;
      this.done = false;
      if (is.num(this._value)) {
        this.elapsedTime = 0;
        this.durationProgress = 0;
        this.lastPosition = this._value;
        if (done) this.lastVelocity = null;
        this.v0 = null;
      }
    }
  };
  var AnimatedString = class _AnimatedString extends AnimatedValue {
    constructor(value) {
      super(0);
      this._string = null;
      this._toString = void 0;
      this._toString = createInterpolator({
        output: [value, value]
      });
    }
    static create(value) {
      return new _AnimatedString(value);
    }
    getValue() {
      let value = this._string;
      return value == null ? this._string = this._toString(this._value) : value;
    }
    setValue(value) {
      if (is.str(value)) {
        if (value == this._string) {
          return false;
        }
        this._string = value;
        this._value = 1;
      } else if (super.setValue(value)) {
        this._string = null;
      } else {
        return false;
      }
      return true;
    }
    reset(goal) {
      if (goal) {
        this._toString = createInterpolator({
          output: [this.getValue(), goal]
        });
      }
      this._value = 0;
      super.reset();
    }
  };
  var TreeContext = {
    dependencies: null
  };
  var AnimatedObject = class extends Animated {
    constructor(source) {
      super();
      this.source = source;
      this.setValue(source);
    }
    getValue(animated2) {
      const values = {};
      eachProp(this.source, (source, key) => {
        if (isAnimated(source)) {
          values[key] = source.getValue(animated2);
        } else if (hasFluidValue(source)) {
          values[key] = getFluidValue(source);
        } else if (!animated2) {
          values[key] = source;
        }
      });
      return values;
    }
    setValue(source) {
      this.source = source;
      this.payload = this._makePayload(source);
    }
    reset() {
      if (this.payload) {
        each(this.payload, (node) => node.reset());
      }
    }
    _makePayload(source) {
      if (source) {
        const payload = /* @__PURE__ */ new Set();
        eachProp(source, this._addToPayload, payload);
        return Array.from(payload);
      }
    }
    _addToPayload(source) {
      if (TreeContext.dependencies && hasFluidValue(source)) {
        TreeContext.dependencies.add(source);
      }
      const payload = getPayload(source);
      if (payload) {
        each(payload, (node) => this.add(node));
      }
    }
  };
  var AnimatedArray = class _AnimatedArray extends AnimatedObject {
    constructor(source) {
      super(source);
    }
    static create(source) {
      return new _AnimatedArray(source);
    }
    getValue() {
      return this.source.map((node) => node.getValue());
    }
    setValue(source) {
      const payload = this.getPayload();
      if (source.length == payload.length) {
        return payload.map((node, i2) => node.setValue(source[i2])).some(Boolean);
      }
      super.setValue(source.map(makeAnimated));
      return true;
    }
  };
  function makeAnimated(value) {
    const nodeType = isAnimatedString(value) ? AnimatedString : AnimatedValue;
    return nodeType.create(value);
  }
  function getAnimatedType(value) {
    const parentNode = getAnimated(value);
    return parentNode ? parentNode.constructor : is.arr(value) ? AnimatedArray : isAnimatedString(value) ? AnimatedString : AnimatedValue;
  }
  function _extends2() {
    _extends2 = Object.assign ? Object.assign.bind() : function(target) {
      for (var i2 = 1; i2 < arguments.length; i2++) {
        var source = arguments[i2];
        for (var key in source) {
          if (Object.prototype.hasOwnProperty.call(source, key)) {
            target[key] = source[key];
          }
        }
      }
      return target;
    };
    return _extends2.apply(this, arguments);
  }
  var withAnimated = (Component3, host2) => {
    const hasInstance = !is.fun(Component3) || Component3.prototype && Component3.prototype.isReactComponent;
    return (0, import_react56.forwardRef)((givenProps, givenRef) => {
      const instanceRef = (0, import_react56.useRef)(null);
      const ref = hasInstance && (0, import_react56.useCallback)((value) => {
        instanceRef.current = updateRef(givenRef, value);
      }, [givenRef]);
      const [props, deps] = getAnimatedState(givenProps, host2);
      const forceUpdate = useForceUpdate();
      const callback = () => {
        const instance = instanceRef.current;
        if (hasInstance && !instance) {
          return;
        }
        const didUpdate = instance ? host2.applyAnimatedValues(instance, props.getValue(true)) : false;
        if (didUpdate === false) {
          forceUpdate();
        }
      };
      const observer = new PropsObserver(callback, deps);
      const observerRef = (0, import_react56.useRef)();
      useIsomorphicLayoutEffect2(() => {
        observerRef.current = observer;
        each(deps, (dep) => addFluidObserver(dep, observer));
        return () => {
          if (observerRef.current) {
            each(observerRef.current.deps, (dep) => removeFluidObserver(dep, observerRef.current));
            raf.cancel(observerRef.current.update);
          }
        };
      });
      (0, import_react56.useEffect)(callback, []);
      useOnce(() => () => {
        const observer2 = observerRef.current;
        each(observer2.deps, (dep) => removeFluidObserver(dep, observer2));
      });
      const usedProps = host2.getComponentProps(props.getValue());
      return React204.createElement(Component3, _extends2({}, usedProps, {
        ref
      }));
    });
  };
  var PropsObserver = class {
    constructor(update4, deps) {
      this.update = update4;
      this.deps = deps;
    }
    eventObserved(event) {
      if (event.type == "change") {
        raf.write(this.update);
      }
    }
  };
  function getAnimatedState(props, host2) {
    const dependencies = /* @__PURE__ */ new Set();
    TreeContext.dependencies = dependencies;
    if (props.style) props = _extends2({}, props, {
      style: host2.createAnimatedStyle(props.style)
    });
    props = new AnimatedObject(props);
    TreeContext.dependencies = null;
    return [props, dependencies];
  }
  function updateRef(ref, value) {
    if (ref) {
      if (is.fun(ref)) ref(value);
      else ref.current = value;
    }
    return value;
  }
  var cacheKey = /* @__PURE__ */ Symbol.for("AnimatedComponent");
  var createHost = (components, {
    applyAnimatedValues: _applyAnimatedValues = () => false,
    createAnimatedStyle: _createAnimatedStyle = (style) => new AnimatedObject(style),
    getComponentProps: _getComponentProps = (props) => props
  } = {}) => {
    const hostConfig = {
      applyAnimatedValues: _applyAnimatedValues,
      createAnimatedStyle: _createAnimatedStyle,
      getComponentProps: _getComponentProps
    };
    const animated2 = (Component3) => {
      const displayName = getDisplayName(Component3) || "Anonymous";
      if (is.str(Component3)) {
        Component3 = animated2[Component3] || (animated2[Component3] = withAnimated(Component3, hostConfig));
      } else {
        Component3 = Component3[cacheKey] || (Component3[cacheKey] = withAnimated(Component3, hostConfig));
      }
      Component3.displayName = `Animated(${displayName})`;
      return Component3;
    };
    eachProp(components, (Component3, key) => {
      if (is.arr(components)) {
        key = getDisplayName(Component3);
      }
      animated2[key] = animated2(Component3);
    });
    return {
      animated: animated2
    };
  };
  var getDisplayName = (arg) => is.str(arg) ? arg : arg && is.str(arg.displayName) ? arg.displayName : is.fun(arg) && arg.name || null;

  // node_modules/@react-spring/core/dist/react-spring-core.esm.js
  function _extends3() {
    _extends3 = Object.assign ? Object.assign.bind() : function(target) {
      for (var i2 = 1; i2 < arguments.length; i2++) {
        var source = arguments[i2];
        for (var key in source) {
          if (Object.prototype.hasOwnProperty.call(source, key)) {
            target[key] = source[key];
          }
        }
      }
      return target;
    };
    return _extends3.apply(this, arguments);
  }
  function callProp(value, ...args) {
    return is.fun(value) ? value(...args) : value;
  }
  var matchProp = (value, key) => value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)));
  var resolveProp = (prop, key) => is.obj(prop) ? key && prop[key] : prop;
  var getDefaultProp = (props, key) => props.default === true ? props[key] : props.default ? props.default[key] : void 0;
  var noopTransform = (value) => value;
  var getDefaultProps = (props, transform = noopTransform) => {
    let keys = DEFAULT_PROPS;
    if (props.default && props.default !== true) {
      props = props.default;
      keys = Object.keys(props);
    }
    const defaults2 = {};
    for (const key of keys) {
      const value = transform(props[key], key);
      if (!is.und(value)) {
        defaults2[key] = value;
      }
    }
    return defaults2;
  };
  var DEFAULT_PROPS = ["config", "onProps", "onStart", "onChange", "onPause", "onResume", "onRest"];
  var RESERVED_PROPS = {
    config: 1,
    from: 1,
    to: 1,
    ref: 1,
    loop: 1,
    reset: 1,
    pause: 1,
    cancel: 1,
    reverse: 1,
    immediate: 1,
    default: 1,
    delay: 1,
    onProps: 1,
    onStart: 1,
    onChange: 1,
    onPause: 1,
    onResume: 1,
    onRest: 1,
    onResolve: 1,
    items: 1,
    trail: 1,
    sort: 1,
    expires: 1,
    initial: 1,
    enter: 1,
    update: 1,
    leave: 1,
    children: 1,
    onDestroyed: 1,
    keys: 1,
    callId: 1,
    parentId: 1
  };
  function getForwardProps(props) {
    const forward = {};
    let count = 0;
    eachProp(props, (value, prop) => {
      if (!RESERVED_PROPS[prop]) {
        forward[prop] = value;
        count++;
      }
    });
    if (count) {
      return forward;
    }
  }
  function inferTo(props) {
    const to2 = getForwardProps(props);
    if (to2) {
      const out = {
        to: to2
      };
      eachProp(props, (val, key) => key in to2 || (out[key] = val));
      return out;
    }
    return _extends3({}, props);
  }
  function computeGoal(value) {
    value = getFluidValue(value);
    return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? globals.createStringInterpolator({
      range: [0, 1],
      output: [value, value]
    })(1) : value;
  }
  function isAsyncTo(to2) {
    return is.fun(to2) || is.arr(to2) && is.obj(to2[0]);
  }
  var config = {
    default: {
      tension: 170,
      friction: 26
    },
    gentle: {
      tension: 120,
      friction: 14
    },
    wobbly: {
      tension: 180,
      friction: 12
    },
    stiff: {
      tension: 210,
      friction: 20
    },
    slow: {
      tension: 280,
      friction: 60
    },
    molasses: {
      tension: 280,
      friction: 120
    }
  };
  var c1 = 1.70158;
  var c2 = c1 * 1.525;
  var c3 = c1 + 1;
  var c4 = 2 * Math.PI / 3;
  var c5 = 2 * Math.PI / 4.5;
  var bounceOut = (x2) => {
    const n1 = 7.5625;
    const d1 = 2.75;
    if (x2 < 1 / d1) {
      return n1 * x2 * x2;
    } else if (x2 < 2 / d1) {
      return n1 * (x2 -= 1.5 / d1) * x2 + 0.75;
    } else if (x2 < 2.5 / d1) {
      return n1 * (x2 -= 2.25 / d1) * x2 + 0.9375;
    } else {
      return n1 * (x2 -= 2.625 / d1) * x2 + 0.984375;
    }
  };
  var easings = {
    linear: (x2) => x2,
    easeInQuad: (x2) => x2 * x2,
    easeOutQuad: (x2) => 1 - (1 - x2) * (1 - x2),
    easeInOutQuad: (x2) => x2 < 0.5 ? 2 * x2 * x2 : 1 - Math.pow(-2 * x2 + 2, 2) / 2,
    easeInCubic: (x2) => x2 * x2 * x2,
    easeOutCubic: (x2) => 1 - Math.pow(1 - x2, 3),
    easeInOutCubic: (x2) => x2 < 0.5 ? 4 * x2 * x2 * x2 : 1 - Math.pow(-2 * x2 + 2, 3) / 2,
    easeInQuart: (x2) => x2 * x2 * x2 * x2,
    easeOutQuart: (x2) => 1 - Math.pow(1 - x2, 4),
    easeInOutQuart: (x2) => x2 < 0.5 ? 8 * x2 * x2 * x2 * x2 : 1 - Math.pow(-2 * x2 + 2, 4) / 2,
    easeInQuint: (x2) => x2 * x2 * x2 * x2 * x2,
    easeOutQuint: (x2) => 1 - Math.pow(1 - x2, 5),
    easeInOutQuint: (x2) => x2 < 0.5 ? 16 * x2 * x2 * x2 * x2 * x2 : 1 - Math.pow(-2 * x2 + 2, 5) / 2,
    easeInSine: (x2) => 1 - Math.cos(x2 * Math.PI / 2),
    easeOutSine: (x2) => Math.sin(x2 * Math.PI / 2),
    easeInOutSine: (x2) => -(Math.cos(Math.PI * x2) - 1) / 2,
    easeInExpo: (x2) => x2 === 0 ? 0 : Math.pow(2, 10 * x2 - 10),
    easeOutExpo: (x2) => x2 === 1 ? 1 : 1 - Math.pow(2, -10 * x2),
    easeInOutExpo: (x2) => x2 === 0 ? 0 : x2 === 1 ? 1 : x2 < 0.5 ? Math.pow(2, 20 * x2 - 10) / 2 : (2 - Math.pow(2, -20 * x2 + 10)) / 2,
    easeInCirc: (x2) => 1 - Math.sqrt(1 - Math.pow(x2, 2)),
    easeOutCirc: (x2) => Math.sqrt(1 - Math.pow(x2 - 1, 2)),
    easeInOutCirc: (x2) => x2 < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x2, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x2 + 2, 2)) + 1) / 2,
    easeInBack: (x2) => c3 * x2 * x2 * x2 - c1 * x2 * x2,
    easeOutBack: (x2) => 1 + c3 * Math.pow(x2 - 1, 3) + c1 * Math.pow(x2 - 1, 2),
    easeInOutBack: (x2) => x2 < 0.5 ? Math.pow(2 * x2, 2) * ((c2 + 1) * 2 * x2 - c2) / 2 : (Math.pow(2 * x2 - 2, 2) * ((c2 + 1) * (x2 * 2 - 2) + c2) + 2) / 2,
    easeInElastic: (x2) => x2 === 0 ? 0 : x2 === 1 ? 1 : -Math.pow(2, 10 * x2 - 10) * Math.sin((x2 * 10 - 10.75) * c4),
    easeOutElastic: (x2) => x2 === 0 ? 0 : x2 === 1 ? 1 : Math.pow(2, -10 * x2) * Math.sin((x2 * 10 - 0.75) * c4) + 1,
    easeInOutElastic: (x2) => x2 === 0 ? 0 : x2 === 1 ? 1 : x2 < 0.5 ? -(Math.pow(2, 20 * x2 - 10) * Math.sin((20 * x2 - 11.125) * c5)) / 2 : Math.pow(2, -20 * x2 + 10) * Math.sin((20 * x2 - 11.125) * c5) / 2 + 1,
    easeInBounce: (x2) => 1 - bounceOut(1 - x2),
    easeOutBounce: bounceOut,
    easeInOutBounce: (x2) => x2 < 0.5 ? (1 - bounceOut(1 - 2 * x2)) / 2 : (1 + bounceOut(2 * x2 - 1)) / 2
  };
  var defaults = _extends3({}, config.default, {
    mass: 1,
    damping: 1,
    easing: easings.linear,
    clamp: false
  });
  var AnimationConfig = class {
    constructor() {
      this.tension = void 0;
      this.friction = void 0;
      this.frequency = void 0;
      this.damping = void 0;
      this.mass = void 0;
      this.velocity = 0;
      this.restVelocity = void 0;
      this.precision = void 0;
      this.progress = void 0;
      this.duration = void 0;
      this.easing = void 0;
      this.clamp = void 0;
      this.bounce = void 0;
      this.decay = void 0;
      this.round = void 0;
      Object.assign(this, defaults);
    }
  };
  function mergeConfig(config2, newConfig, defaultConfig) {
    if (defaultConfig) {
      defaultConfig = _extends3({}, defaultConfig);
      sanitizeConfig(defaultConfig, newConfig);
      newConfig = _extends3({}, defaultConfig, newConfig);
    }
    sanitizeConfig(config2, newConfig);
    Object.assign(config2, newConfig);
    for (const key in defaults) {
      if (config2[key] == null) {
        config2[key] = defaults[key];
      }
    }
    let {
      mass,
      frequency,
      damping
    } = config2;
    if (!is.und(frequency)) {
      if (frequency < 0.01) frequency = 0.01;
      if (damping < 0) damping = 0;
      config2.tension = Math.pow(2 * Math.PI / frequency, 2) * mass;
      config2.friction = 4 * Math.PI * damping * mass / frequency;
    }
    return config2;
  }
  function sanitizeConfig(config2, props) {
    if (!is.und(props.decay)) {
      config2.duration = void 0;
    } else {
      const isTensionConfig = !is.und(props.tension) || !is.und(props.friction);
      if (isTensionConfig || !is.und(props.frequency) || !is.und(props.damping) || !is.und(props.mass)) {
        config2.duration = void 0;
        config2.decay = void 0;
      }
      if (isTensionConfig) {
        config2.frequency = void 0;
      }
    }
  }
  var emptyArray = [];
  var Animation2 = class {
    constructor() {
      this.changed = false;
      this.values = emptyArray;
      this.toValues = null;
      this.fromValues = emptyArray;
      this.to = void 0;
      this.from = void 0;
      this.config = new AnimationConfig();
      this.immediate = false;
    }
  };
  function scheduleProps(callId, {
    key,
    props,
    defaultProps,
    state: state2,
    actions: actions2
  }) {
    return new Promise((resolve, reject) => {
      var _props$cancel;
      let delay;
      let timeout;
      let cancel = matchProp((_props$cancel = props.cancel) != null ? _props$cancel : defaultProps == null ? void 0 : defaultProps.cancel, key);
      if (cancel) {
        onStart();
      } else {
        if (!is.und(props.pause)) {
          state2.paused = matchProp(props.pause, key);
        }
        let pause = defaultProps == null ? void 0 : defaultProps.pause;
        if (pause !== true) {
          pause = state2.paused || matchProp(pause, key);
        }
        delay = callProp(props.delay || 0, key);
        if (pause) {
          state2.resumeQueue.add(onResume);
          actions2.pause();
        } else {
          actions2.resume();
          onResume();
        }
      }
      function onPause() {
        state2.resumeQueue.add(onResume);
        state2.timeouts.delete(timeout);
        timeout.cancel();
        delay = timeout.time - raf.now();
      }
      function onResume() {
        if (delay > 0 && !globals.skipAnimation) {
          state2.delayed = true;
          timeout = raf.setTimeout(onStart, delay);
          state2.pauseQueue.add(onPause);
          state2.timeouts.add(timeout);
        } else {
          onStart();
        }
      }
      function onStart() {
        if (state2.delayed) {
          state2.delayed = false;
        }
        state2.pauseQueue.delete(onPause);
        state2.timeouts.delete(timeout);
        if (callId <= (state2.cancelId || 0)) {
          cancel = true;
        }
        try {
          actions2.start(_extends3({}, props, {
            callId,
            cancel
          }), resolve);
        } catch (err) {
          reject(err);
        }
      }
    });
  }
  var getCombinedResult = (target, results) => results.length == 1 ? results[0] : results.some((result) => result.cancelled) ? getCancelledResult(target.get()) : results.every((result) => result.noop) ? getNoopResult(target.get()) : getFinishedResult(target.get(), results.every((result) => result.finished));
  var getNoopResult = (value) => ({
    value,
    noop: true,
    finished: true,
    cancelled: false
  });
  var getFinishedResult = (value, finished, cancelled2 = false) => ({
    value,
    finished,
    cancelled: cancelled2
  });
  var getCancelledResult = (value) => ({
    value,
    cancelled: true,
    finished: false
  });
  function runAsync(to2, props, state2, target) {
    const {
      callId,
      parentId,
      onRest
    } = props;
    const {
      asyncTo: prevTo,
      promise: prevPromise
    } = state2;
    if (!parentId && to2 === prevTo && !props.reset) {
      return prevPromise;
    }
    return state2.promise = (async () => {
      state2.asyncId = callId;
      state2.asyncTo = to2;
      const defaultProps = getDefaultProps(props, (value, key) => key === "onRest" ? void 0 : value);
      let preventBail;
      let bail;
      const bailPromise = new Promise((resolve, reject) => (preventBail = resolve, bail = reject));
      const bailIfEnded = (bailSignal) => {
        const bailResult = callId <= (state2.cancelId || 0) && getCancelledResult(target) || callId !== state2.asyncId && getFinishedResult(target, false);
        if (bailResult) {
          bailSignal.result = bailResult;
          bail(bailSignal);
          throw bailSignal;
        }
      };
      const animate = (arg1, arg2) => {
        const bailSignal = new BailSignal();
        const skipAnimationSignal = new SkipAniamtionSignal();
        return (async () => {
          if (globals.skipAnimation) {
            stopAsync(state2);
            skipAnimationSignal.result = getFinishedResult(target, false);
            bail(skipAnimationSignal);
            throw skipAnimationSignal;
          }
          bailIfEnded(bailSignal);
          const props2 = is.obj(arg1) ? _extends3({}, arg1) : _extends3({}, arg2, {
            to: arg1
          });
          props2.parentId = callId;
          eachProp(defaultProps, (value, key) => {
            if (is.und(props2[key])) {
              props2[key] = value;
            }
          });
          const result2 = await target.start(props2);
          bailIfEnded(bailSignal);
          if (state2.paused) {
            await new Promise((resume) => {
              state2.resumeQueue.add(resume);
            });
          }
          return result2;
        })();
      };
      let result;
      if (globals.skipAnimation) {
        stopAsync(state2);
        return getFinishedResult(target, false);
      }
      try {
        let animating;
        if (is.arr(to2)) {
          animating = (async (queue) => {
            for (const props2 of queue) {
              await animate(props2);
            }
          })(to2);
        } else {
          animating = Promise.resolve(to2(animate, target.stop.bind(target)));
        }
        await Promise.all([animating.then(preventBail), bailPromise]);
        result = getFinishedResult(target.get(), true, false);
      } catch (err) {
        if (err instanceof BailSignal) {
          result = err.result;
        } else if (err instanceof SkipAniamtionSignal) {
          result = err.result;
        } else {
          throw err;
        }
      } finally {
        if (callId == state2.asyncId) {
          state2.asyncId = parentId;
          state2.asyncTo = parentId ? prevTo : void 0;
          state2.promise = parentId ? prevPromise : void 0;
        }
      }
      if (is.fun(onRest)) {
        raf.batchedUpdates(() => {
          onRest(result, target, target.item);
        });
      }
      return result;
    })();
  }
  function stopAsync(state2, cancelId) {
    flush(state2.timeouts, (t3) => t3.cancel());
    state2.pauseQueue.clear();
    state2.resumeQueue.clear();
    state2.asyncId = state2.asyncTo = state2.promise = void 0;
    if (cancelId) state2.cancelId = cancelId;
  }
  var BailSignal = class extends Error {
    constructor() {
      super("An async animation has been interrupted. You see this error because you forgot to use `await` or `.catch(...)` on its returned promise.");
      this.result = void 0;
    }
  };
  var SkipAniamtionSignal = class extends Error {
    constructor() {
      super("SkipAnimationSignal");
      this.result = void 0;
    }
  };
  var isFrameValue = (value) => value instanceof FrameValue;
  var nextId$1 = 1;
  var FrameValue = class extends FluidValue {
    constructor(...args) {
      super(...args);
      this.id = nextId$1++;
      this.key = void 0;
      this._priority = 0;
    }
    get priority() {
      return this._priority;
    }
    set priority(priority2) {
      if (this._priority != priority2) {
        this._priority = priority2;
        this._onPriorityChange(priority2);
      }
    }
    get() {
      const node = getAnimated(this);
      return node && node.getValue();
    }
    to(...args) {
      return globals.to(this, args);
    }
    interpolate(...args) {
      deprecateInterpolate();
      return globals.to(this, args);
    }
    toJSON() {
      return this.get();
    }
    observerAdded(count) {
      if (count == 1) this._attach();
    }
    observerRemoved(count) {
      if (count == 0) this._detach();
    }
    _attach() {
    }
    _detach() {
    }
    _onChange(value, idle = false) {
      callFluidObservers(this, {
        type: "change",
        parent: this,
        value,
        idle
      });
    }
    _onPriorityChange(priority2) {
      if (!this.idle) {
        frameLoop.sort(this);
      }
      callFluidObservers(this, {
        type: "priority",
        parent: this,
        priority: priority2
      });
    }
  };
  var $P = /* @__PURE__ */ Symbol.for("SpringPhase");
  var HAS_ANIMATED = 1;
  var IS_ANIMATING = 2;
  var IS_PAUSED = 4;
  var hasAnimated = (target) => (target[$P] & HAS_ANIMATED) > 0;
  var isAnimating = (target) => (target[$P] & IS_ANIMATING) > 0;
  var isPaused = (target) => (target[$P] & IS_PAUSED) > 0;
  var setActiveBit = (target, active) => active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING;
  var setPausedBit = (target, paused) => paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED;
  var SpringValue = class extends FrameValue {
    constructor(arg1, arg2) {
      super();
      this.key = void 0;
      this.animation = new Animation2();
      this.queue = void 0;
      this.defaultProps = {};
      this._state = {
        paused: false,
        delayed: false,
        pauseQueue: /* @__PURE__ */ new Set(),
        resumeQueue: /* @__PURE__ */ new Set(),
        timeouts: /* @__PURE__ */ new Set()
      };
      this._pendingCalls = /* @__PURE__ */ new Set();
      this._lastCallId = 0;
      this._lastToId = 0;
      this._memoizedDuration = 0;
      if (!is.und(arg1) || !is.und(arg2)) {
        const props = is.obj(arg1) ? _extends3({}, arg1) : _extends3({}, arg2, {
          from: arg1
        });
        if (is.und(props.default)) {
          props.default = true;
        }
        this.start(props);
      }
    }
    get idle() {
      return !(isAnimating(this) || this._state.asyncTo) || isPaused(this);
    }
    get goal() {
      return getFluidValue(this.animation.to);
    }
    get velocity() {
      const node = getAnimated(this);
      return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map((node2) => node2.lastVelocity || 0);
    }
    get hasAnimated() {
      return hasAnimated(this);
    }
    get isAnimating() {
      return isAnimating(this);
    }
    get isPaused() {
      return isPaused(this);
    }
    get isDelayed() {
      return this._state.delayed;
    }
    advance(dt) {
      let idle = true;
      let changed = false;
      const anim = this.animation;
      let {
        config: config2,
        toValues
      } = anim;
      const payload = getPayload(anim.to);
      if (!payload && hasFluidValue(anim.to)) {
        toValues = toArray(getFluidValue(anim.to));
      }
      anim.values.forEach((node2, i2) => {
        if (node2.done) return;
        const to2 = node2.constructor == AnimatedString ? 1 : payload ? payload[i2].lastPosition : toValues[i2];
        let finished = anim.immediate;
        let position = to2;
        if (!finished) {
          position = node2.lastPosition;
          if (config2.tension <= 0) {
            node2.done = true;
            return;
          }
          let elapsed = node2.elapsedTime += dt;
          const from = anim.fromValues[i2];
          const v0 = node2.v0 != null ? node2.v0 : node2.v0 = is.arr(config2.velocity) ? config2.velocity[i2] : config2.velocity;
          let velocity;
          const precision = config2.precision || (from == to2 ? 5e-3 : Math.min(1, Math.abs(to2 - from) * 1e-3));
          if (!is.und(config2.duration)) {
            let p4 = 1;
            if (config2.duration > 0) {
              if (this._memoizedDuration !== config2.duration) {
                this._memoizedDuration = config2.duration;
                if (node2.durationProgress > 0) {
                  node2.elapsedTime = config2.duration * node2.durationProgress;
                  elapsed = node2.elapsedTime += dt;
                }
              }
              p4 = (config2.progress || 0) + elapsed / this._memoizedDuration;
              p4 = p4 > 1 ? 1 : p4 < 0 ? 0 : p4;
              node2.durationProgress = p4;
            }
            position = from + config2.easing(p4) * (to2 - from);
            velocity = (position - node2.lastPosition) / dt;
            finished = p4 == 1;
          } else if (config2.decay) {
            const decay = config2.decay === true ? 0.998 : config2.decay;
            const e2 = Math.exp(-(1 - decay) * elapsed);
            position = from + v0 / (1 - decay) * (1 - e2);
            finished = Math.abs(node2.lastPosition - position) <= precision;
            velocity = v0 * e2;
          } else {
            velocity = node2.lastVelocity == null ? v0 : node2.lastVelocity;
            const restVelocity = config2.restVelocity || precision / 10;
            const bounceFactor = config2.clamp ? 0 : config2.bounce;
            const canBounce = !is.und(bounceFactor);
            const isGrowing = from == to2 ? node2.v0 > 0 : from < to2;
            let isMoving;
            let isBouncing = false;
            const step = 1;
            const numSteps = Math.ceil(dt / step);
            for (let n2 = 0; n2 < numSteps; ++n2) {
              isMoving = Math.abs(velocity) > restVelocity;
              if (!isMoving) {
                finished = Math.abs(to2 - position) <= precision;
                if (finished) {
                  break;
                }
              }
              if (canBounce) {
                isBouncing = position == to2 || position > to2 == isGrowing;
                if (isBouncing) {
                  velocity = -velocity * bounceFactor;
                  position = to2;
                }
              }
              const springForce = -config2.tension * 1e-6 * (position - to2);
              const dampingForce = -config2.friction * 1e-3 * velocity;
              const acceleration = (springForce + dampingForce) / config2.mass;
              velocity = velocity + acceleration * step;
              position = position + velocity * step;
            }
          }
          node2.lastVelocity = velocity;
          if (Number.isNaN(position)) {
            console.warn(`Got NaN while animating:`, this);
            finished = true;
          }
        }
        if (payload && !payload[i2].done) {
          finished = false;
        }
        if (finished) {
          node2.done = true;
        } else {
          idle = false;
        }
        if (node2.setValue(position, config2.round)) {
          changed = true;
        }
      });
      const node = getAnimated(this);
      const currVal = node.getValue();
      if (idle) {
        const finalVal = getFluidValue(anim.to);
        if ((currVal !== finalVal || changed) && !config2.decay) {
          node.setValue(finalVal);
          this._onChange(finalVal);
        } else if (changed && config2.decay) {
          this._onChange(currVal);
        }
        this._stop();
      } else if (changed) {
        this._onChange(currVal);
      }
    }
    set(value) {
      raf.batchedUpdates(() => {
        this._stop();
        this._focus(value);
        this._set(value);
      });
      return this;
    }
    pause() {
      this._update({
        pause: true
      });
    }
    resume() {
      this._update({
        pause: false
      });
    }
    finish() {
      if (isAnimating(this)) {
        const {
          to: to2,
          config: config2
        } = this.animation;
        raf.batchedUpdates(() => {
          this._onStart();
          if (!config2.decay) {
            this._set(to2, false);
          }
          this._stop();
        });
      }
      return this;
    }
    update(props) {
      const queue = this.queue || (this.queue = []);
      queue.push(props);
      return this;
    }
    start(to2, arg2) {
      let queue;
      if (!is.und(to2)) {
        queue = [is.obj(to2) ? to2 : _extends3({}, arg2, {
          to: to2
        })];
      } else {
        queue = this.queue || [];
        this.queue = [];
      }
      return Promise.all(queue.map((props) => {
        const up = this._update(props);
        return up;
      })).then((results) => getCombinedResult(this, results));
    }
    stop(cancel) {
      const {
        to: to2
      } = this.animation;
      this._focus(this.get());
      stopAsync(this._state, cancel && this._lastCallId);
      raf.batchedUpdates(() => this._stop(to2, cancel));
      return this;
    }
    reset() {
      this._update({
        reset: true
      });
    }
    eventObserved(event) {
      if (event.type == "change") {
        this._start();
      } else if (event.type == "priority") {
        this.priority = event.priority + 1;
      }
    }
    _prepareNode(props) {
      const key = this.key || "";
      let {
        to: to2,
        from
      } = props;
      to2 = is.obj(to2) ? to2[key] : to2;
      if (to2 == null || isAsyncTo(to2)) {
        to2 = void 0;
      }
      from = is.obj(from) ? from[key] : from;
      if (from == null) {
        from = void 0;
      }
      const range = {
        to: to2,
        from
      };
      if (!hasAnimated(this)) {
        if (props.reverse) [to2, from] = [from, to2];
        from = getFluidValue(from);
        if (!is.und(from)) {
          this._set(from);
        } else if (!getAnimated(this)) {
          this._set(to2);
        }
      }
      return range;
    }
    _update(_ref, isLoop) {
      let props = _extends3({}, _ref);
      const {
        key,
        defaultProps
      } = this;
      if (props.default) Object.assign(defaultProps, getDefaultProps(props, (value, prop) => /^on/.test(prop) ? resolveProp(value, key) : value));
      mergeActiveFn(this, props, "onProps");
      sendEvent(this, "onProps", props, this);
      const range = this._prepareNode(props);
      if (Object.isFrozen(this)) {
        throw Error("Cannot animate a `SpringValue` object that is frozen. Did you forget to pass your component to `animated(...)` before animating its props?");
      }
      const state2 = this._state;
      return scheduleProps(++this._lastCallId, {
        key,
        props,
        defaultProps,
        state: state2,
        actions: {
          pause: () => {
            if (!isPaused(this)) {
              setPausedBit(this, true);
              flushCalls(state2.pauseQueue);
              sendEvent(this, "onPause", getFinishedResult(this, checkFinished(this, this.animation.to)), this);
            }
          },
          resume: () => {
            if (isPaused(this)) {
              setPausedBit(this, false);
              if (isAnimating(this)) {
                this._resume();
              }
              flushCalls(state2.resumeQueue);
              sendEvent(this, "onResume", getFinishedResult(this, checkFinished(this, this.animation.to)), this);
            }
          },
          start: this._merge.bind(this, range)
        }
      }).then((result) => {
        if (props.loop && result.finished && !(isLoop && result.noop)) {
          const nextProps = createLoopUpdate(props);
          if (nextProps) {
            return this._update(nextProps, true);
          }
        }
        return result;
      });
    }
    _merge(range, props, resolve) {
      if (props.cancel) {
        this.stop(true);
        return resolve(getCancelledResult(this));
      }
      const hasToProp = !is.und(range.to);
      const hasFromProp = !is.und(range.from);
      if (hasToProp || hasFromProp) {
        if (props.callId > this._lastToId) {
          this._lastToId = props.callId;
        } else {
          return resolve(getCancelledResult(this));
        }
      }
      const {
        key,
        defaultProps,
        animation: anim
      } = this;
      const {
        to: prevTo,
        from: prevFrom
      } = anim;
      let {
        to: to2 = prevTo,
        from = prevFrom
      } = range;
      if (hasFromProp && !hasToProp && (!props.default || is.und(to2))) {
        to2 = from;
      }
      if (props.reverse) [to2, from] = [from, to2];
      const hasFromChanged = !isEqual(from, prevFrom);
      if (hasFromChanged) {
        anim.from = from;
      }
      from = getFluidValue(from);
      const hasToChanged = !isEqual(to2, prevTo);
      if (hasToChanged) {
        this._focus(to2);
      }
      const hasAsyncTo = isAsyncTo(props.to);
      const {
        config: config2
      } = anim;
      const {
        decay,
        velocity
      } = config2;
      if (hasToProp || hasFromProp) {
        config2.velocity = 0;
      }
      if (props.config && !hasAsyncTo) {
        mergeConfig(config2, callProp(props.config, key), props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0);
      }
      let node = getAnimated(this);
      if (!node || is.und(to2)) {
        return resolve(getFinishedResult(this, true));
      }
      const reset = is.und(props.reset) ? hasFromProp && !props.default : !is.und(from) && matchProp(props.reset, key);
      const value = reset ? from : this.get();
      const goal = computeGoal(to2);
      const isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal);
      const immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key));
      if (hasToChanged) {
        const nodeType = getAnimatedType(to2);
        if (nodeType !== node.constructor) {
          if (immediate) {
            node = this._set(goal);
          } else throw Error(`Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the "to" prop suggests`);
        }
      }
      const goalType = node.constructor;
      let started = hasFluidValue(to2);
      let finished = false;
      if (!started) {
        const hasValueChanged = reset || !hasAnimated(this) && hasFromChanged;
        if (hasToChanged || hasValueChanged) {
          finished = isEqual(computeGoal(value), goal);
          started = !finished;
        }
        if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config2.decay, decay) || !isEqual(config2.velocity, velocity)) {
          started = true;
        }
      }
      if (finished && isAnimating(this)) {
        if (anim.changed && !reset) {
          started = true;
        } else if (!started) {
          this._stop(prevTo);
        }
      }
      if (!hasAsyncTo) {
        if (started || hasFluidValue(prevTo)) {
          anim.values = node.getPayload();
          anim.toValues = hasFluidValue(to2) ? null : goalType == AnimatedString ? [1] : toArray(goal);
        }
        if (anim.immediate != immediate) {
          anim.immediate = immediate;
          if (!immediate && !reset) {
            this._set(prevTo);
          }
        }
        if (started) {
          const {
            onRest
          } = anim;
          each(ACTIVE_EVENTS, (type) => mergeActiveFn(this, props, type));
          const result = getFinishedResult(this, checkFinished(this, prevTo));
          flushCalls(this._pendingCalls, result);
          this._pendingCalls.add(resolve);
          if (anim.changed) raf.batchedUpdates(() => {
            anim.changed = !reset;
            onRest == null ? void 0 : onRest(result, this);
            if (reset) {
              callProp(defaultProps.onRest, result);
            } else {
              anim.onStart == null ? void 0 : anim.onStart(result, this);
            }
          });
        }
      }
      if (reset) {
        this._set(value);
      }
      if (hasAsyncTo) {
        resolve(runAsync(props.to, props, this._state, this));
      } else if (started) {
        this._start();
      } else if (isAnimating(this) && !hasToChanged) {
        this._pendingCalls.add(resolve);
      } else {
        resolve(getNoopResult(value));
      }
    }
    _focus(value) {
      const anim = this.animation;
      if (value !== anim.to) {
        if (getFluidObservers(this)) {
          this._detach();
        }
        anim.to = value;
        if (getFluidObservers(this)) {
          this._attach();
        }
      }
    }
    _attach() {
      let priority2 = 0;
      const {
        to: to2
      } = this.animation;
      if (hasFluidValue(to2)) {
        addFluidObserver(to2, this);
        if (isFrameValue(to2)) {
          priority2 = to2.priority + 1;
        }
      }
      this.priority = priority2;
    }
    _detach() {
      const {
        to: to2
      } = this.animation;
      if (hasFluidValue(to2)) {
        removeFluidObserver(to2, this);
      }
    }
    _set(arg, idle = true) {
      const value = getFluidValue(arg);
      if (!is.und(value)) {
        const oldNode = getAnimated(this);
        if (!oldNode || !isEqual(value, oldNode.getValue())) {
          const nodeType = getAnimatedType(value);
          if (!oldNode || oldNode.constructor != nodeType) {
            setAnimated(this, nodeType.create(value));
          } else {
            oldNode.setValue(value);
          }
          if (oldNode) {
            raf.batchedUpdates(() => {
              this._onChange(value, idle);
            });
          }
        }
      }
      return getAnimated(this);
    }
    _onStart() {
      const anim = this.animation;
      if (!anim.changed) {
        anim.changed = true;
        sendEvent(this, "onStart", getFinishedResult(this, checkFinished(this, anim.to)), this);
      }
    }
    _onChange(value, idle) {
      if (!idle) {
        this._onStart();
        callProp(this.animation.onChange, value, this);
      }
      callProp(this.defaultProps.onChange, value, this);
      super._onChange(value, idle);
    }
    _start() {
      const anim = this.animation;
      getAnimated(this).reset(getFluidValue(anim.to));
      if (!anim.immediate) {
        anim.fromValues = anim.values.map((node) => node.lastPosition);
      }
      if (!isAnimating(this)) {
        setActiveBit(this, true);
        if (!isPaused(this)) {
          this._resume();
        }
      }
    }
    _resume() {
      if (globals.skipAnimation) {
        this.finish();
      } else {
        frameLoop.start(this);
      }
    }
    _stop(goal, cancel) {
      if (isAnimating(this)) {
        setActiveBit(this, false);
        const anim = this.animation;
        each(anim.values, (node) => {
          node.done = true;
        });
        if (anim.toValues) {
          anim.onChange = anim.onPause = anim.onResume = void 0;
        }
        callFluidObservers(this, {
          type: "idle",
          parent: this
        });
        const result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal != null ? goal : anim.to));
        flushCalls(this._pendingCalls, result);
        if (anim.changed) {
          anim.changed = false;
          sendEvent(this, "onRest", result, this);
        }
      }
    }
  };
  function checkFinished(target, to2) {
    const goal = computeGoal(to2);
    const value = computeGoal(target.get());
    return isEqual(value, goal);
  }
  function createLoopUpdate(props, loop2 = props.loop, to2 = props.to) {
    let loopRet = callProp(loop2);
    if (loopRet) {
      const overrides = loopRet !== true && inferTo(loopRet);
      const reverse = (overrides || props).reverse;
      const reset = !overrides || overrides.reset;
      return createUpdate(_extends3({}, props, {
        loop: loop2,
        default: false,
        pause: void 0,
        to: !reverse || isAsyncTo(to2) ? to2 : void 0,
        from: reset ? props.from : void 0,
        reset
      }, overrides));
    }
  }
  function createUpdate(props) {
    const {
      to: to2,
      from
    } = props = inferTo(props);
    const keys = /* @__PURE__ */ new Set();
    if (is.obj(to2)) findDefined(to2, keys);
    if (is.obj(from)) findDefined(from, keys);
    props.keys = keys.size ? Array.from(keys) : null;
    return props;
  }
  function findDefined(values, keys) {
    eachProp(values, (value, key) => value != null && keys.add(key));
  }
  var ACTIVE_EVENTS = ["onStart", "onRest", "onChange", "onPause", "onResume"];
  function mergeActiveFn(target, props, type) {
    target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : void 0;
  }
  function sendEvent(target, type, ...args) {
    var _target$animation$typ, _target$animation, _target$defaultProps$, _target$defaultProps;
    (_target$animation$typ = (_target$animation = target.animation)[type]) == null ? void 0 : _target$animation$typ.call(_target$animation, ...args);
    (_target$defaultProps$ = (_target$defaultProps = target.defaultProps)[type]) == null ? void 0 : _target$defaultProps$.call(_target$defaultProps, ...args);
  }
  var BATCHED_EVENTS = ["onStart", "onChange", "onRest"];
  var nextId = 1;
  var Controller = class {
    constructor(props, flush2) {
      this.id = nextId++;
      this.springs = {};
      this.queue = [];
      this.ref = void 0;
      this._flush = void 0;
      this._initialProps = void 0;
      this._lastAsyncId = 0;
      this._active = /* @__PURE__ */ new Set();
      this._changed = /* @__PURE__ */ new Set();
      this._started = false;
      this._item = void 0;
      this._state = {
        paused: false,
        pauseQueue: /* @__PURE__ */ new Set(),
        resumeQueue: /* @__PURE__ */ new Set(),
        timeouts: /* @__PURE__ */ new Set()
      };
      this._events = {
        onStart: /* @__PURE__ */ new Map(),
        onChange: /* @__PURE__ */ new Map(),
        onRest: /* @__PURE__ */ new Map()
      };
      this._onFrame = this._onFrame.bind(this);
      if (flush2) {
        this._flush = flush2;
      }
      if (props) {
        this.start(_extends3({
          default: true
        }, props));
      }
    }
    get idle() {
      return !this._state.asyncTo && Object.values(this.springs).every((spring) => {
        return spring.idle && !spring.isDelayed && !spring.isPaused;
      });
    }
    get item() {
      return this._item;
    }
    set item(item) {
      this._item = item;
    }
    get() {
      const values = {};
      this.each((spring, key) => values[key] = spring.get());
      return values;
    }
    set(values) {
      for (const key in values) {
        const value = values[key];
        if (!is.und(value)) {
          this.springs[key].set(value);
        }
      }
    }
    update(props) {
      if (props) {
        this.queue.push(createUpdate(props));
      }
      return this;
    }
    start(props) {
      let {
        queue
      } = this;
      if (props) {
        queue = toArray(props).map(createUpdate);
      } else {
        this.queue = [];
      }
      if (this._flush) {
        return this._flush(this, queue);
      }
      prepareKeys(this, queue);
      return flushUpdateQueue(this, queue);
    }
    stop(arg, keys) {
      if (arg !== !!arg) {
        keys = arg;
      }
      if (keys) {
        const springs = this.springs;
        each(toArray(keys), (key) => springs[key].stop(!!arg));
      } else {
        stopAsync(this._state, this._lastAsyncId);
        this.each((spring) => spring.stop(!!arg));
      }
      return this;
    }
    pause(keys) {
      if (is.und(keys)) {
        this.start({
          pause: true
        });
      } else {
        const springs = this.springs;
        each(toArray(keys), (key) => springs[key].pause());
      }
      return this;
    }
    resume(keys) {
      if (is.und(keys)) {
        this.start({
          pause: false
        });
      } else {
        const springs = this.springs;
        each(toArray(keys), (key) => springs[key].resume());
      }
      return this;
    }
    each(iterator) {
      eachProp(this.springs, iterator);
    }
    _onFrame() {
      const {
        onStart,
        onChange,
        onRest
      } = this._events;
      const active = this._active.size > 0;
      const changed = this._changed.size > 0;
      if (active && !this._started || changed && !this._started) {
        this._started = true;
        flush(onStart, ([onStart2, result]) => {
          result.value = this.get();
          onStart2(result, this, this._item);
        });
      }
      const idle = !active && this._started;
      const values = changed || idle && onRest.size ? this.get() : null;
      if (changed && onChange.size) {
        flush(onChange, ([onChange2, result]) => {
          result.value = values;
          onChange2(result, this, this._item);
        });
      }
      if (idle) {
        this._started = false;
        flush(onRest, ([onRest2, result]) => {
          result.value = values;
          onRest2(result, this, this._item);
        });
      }
    }
    eventObserved(event) {
      if (event.type == "change") {
        this._changed.add(event.parent);
        if (!event.idle) {
          this._active.add(event.parent);
        }
      } else if (event.type == "idle") {
        this._active.delete(event.parent);
      } else return;
      raf.onFrame(this._onFrame);
    }
  };
  function flushUpdateQueue(ctrl, queue) {
    return Promise.all(queue.map((props) => flushUpdate(ctrl, props))).then((results) => getCombinedResult(ctrl, results));
  }
  async function flushUpdate(ctrl, props, isLoop) {
    const {
      keys,
      to: to2,
      from,
      loop: loop2,
      onRest,
      onResolve
    } = props;
    const defaults2 = is.obj(props.default) && props.default;
    if (loop2) {
      props.loop = false;
    }
    if (to2 === false) props.to = null;
    if (from === false) props.from = null;
    const asyncTo = is.arr(to2) || is.fun(to2) ? to2 : void 0;
    if (asyncTo) {
      props.to = void 0;
      props.onRest = void 0;
      if (defaults2) {
        defaults2.onRest = void 0;
      }
    } else {
      each(BATCHED_EVENTS, (key) => {
        const handler = props[key];
        if (is.fun(handler)) {
          const queue = ctrl["_events"][key];
          props[key] = ({
            finished,
            cancelled: cancelled2
          }) => {
            const result2 = queue.get(handler);
            if (result2) {
              if (!finished) result2.finished = false;
              if (cancelled2) result2.cancelled = true;
            } else {
              queue.set(handler, {
                value: null,
                finished: finished || false,
                cancelled: cancelled2 || false
              });
            }
          };
          if (defaults2) {
            defaults2[key] = props[key];
          }
        }
      });
    }
    const state2 = ctrl["_state"];
    if (props.pause === !state2.paused) {
      state2.paused = props.pause;
      flushCalls(props.pause ? state2.pauseQueue : state2.resumeQueue);
    } else if (state2.paused) {
      props.pause = true;
    }
    const promises = (keys || Object.keys(ctrl.springs)).map((key) => ctrl.springs[key].start(props));
    const cancel = props.cancel === true || getDefaultProp(props, "cancel") === true;
    if (asyncTo || cancel && state2.asyncId) {
      promises.push(scheduleProps(++ctrl["_lastAsyncId"], {
        props,
        state: state2,
        actions: {
          pause: noop4,
          resume: noop4,
          start(props2, resolve) {
            if (cancel) {
              stopAsync(state2, ctrl["_lastAsyncId"]);
              resolve(getCancelledResult(ctrl));
            } else {
              props2.onRest = onRest;
              resolve(runAsync(asyncTo, props2, state2, ctrl));
            }
          }
        }
      }));
    }
    if (state2.paused) {
      await new Promise((resume) => {
        state2.resumeQueue.add(resume);
      });
    }
    const result = getCombinedResult(ctrl, await Promise.all(promises));
    if (loop2 && result.finished && !(isLoop && result.noop)) {
      const nextProps = createLoopUpdate(props, loop2, to2);
      if (nextProps) {
        prepareKeys(ctrl, [nextProps]);
        return flushUpdate(ctrl, nextProps, true);
      }
    }
    if (onResolve) {
      raf.batchedUpdates(() => onResolve(result, ctrl, ctrl.item));
    }
    return result;
  }
  function createSpring(key, observer) {
    const spring = new SpringValue();
    spring.key = key;
    if (observer) {
      addFluidObserver(spring, observer);
    }
    return spring;
  }
  function prepareSprings(springs, props, create8) {
    if (props.keys) {
      each(props.keys, (key) => {
        const spring = springs[key] || (springs[key] = create8(key));
        spring["_prepareNode"](props);
      });
    }
  }
  function prepareKeys(ctrl, queue) {
    each(queue, (props) => {
      prepareSprings(ctrl.springs, props, (key) => {
        return createSpring(key, ctrl);
      });
    });
  }
  function _objectWithoutPropertiesLoose(source, excluded) {
    if (source == null) return {};
    var target = {};
    var sourceKeys = Object.keys(source);
    var key, i2;
    for (i2 = 0; i2 < sourceKeys.length; i2++) {
      key = sourceKeys[i2];
      if (excluded.indexOf(key) >= 0) continue;
      target[key] = source[key];
    }
    return target;
  }
  var _excluded$3 = ["children"];
  var SpringContext = (_ref) => {
    let {
      children
    } = _ref, props = _objectWithoutPropertiesLoose(_ref, _excluded$3);
    const inherited = (0, import_react57.useContext)(ctx);
    const pause = props.pause || !!inherited.pause, immediate = props.immediate || !!inherited.immediate;
    props = useMemoOne(() => ({
      pause,
      immediate
    }), [pause, immediate]);
    const {
      Provider: Provider2
    } = ctx;
    return React205.createElement(Provider2, {
      value: props
    }, children);
  };
  var ctx = makeContext(SpringContext, {});
  SpringContext.Provider = ctx.Provider;
  SpringContext.Consumer = ctx.Consumer;
  function makeContext(target, init2) {
    Object.assign(target, React205.createContext(init2));
    target.Provider._context = target;
    target.Consumer._context = target;
    return target;
  }
  var TransitionPhase;
  (function(TransitionPhase2) {
    TransitionPhase2["MOUNT"] = "mount";
    TransitionPhase2["ENTER"] = "enter";
    TransitionPhase2["UPDATE"] = "update";
    TransitionPhase2["LEAVE"] = "leave";
  })(TransitionPhase || (TransitionPhase = {}));
  var Interpolation = class extends FrameValue {
    constructor(source, args) {
      super();
      this.key = void 0;
      this.idle = true;
      this.calc = void 0;
      this._active = /* @__PURE__ */ new Set();
      this.source = source;
      this.calc = createInterpolator(...args);
      const value = this._get();
      const nodeType = getAnimatedType(value);
      setAnimated(this, nodeType.create(value));
    }
    advance(_dt) {
      const value = this._get();
      const oldValue = this.get();
      if (!isEqual(value, oldValue)) {
        getAnimated(this).setValue(value);
        this._onChange(value, this.idle);
      }
      if (!this.idle && checkIdle(this._active)) {
        becomeIdle(this);
      }
    }
    _get() {
      const inputs = is.arr(this.source) ? this.source.map(getFluidValue) : toArray(getFluidValue(this.source));
      return this.calc(...inputs);
    }
    _start() {
      if (this.idle && !checkIdle(this._active)) {
        this.idle = false;
        each(getPayload(this), (node) => {
          node.done = false;
        });
        if (globals.skipAnimation) {
          raf.batchedUpdates(() => this.advance());
          becomeIdle(this);
        } else {
          frameLoop.start(this);
        }
      }
    }
    _attach() {
      let priority2 = 1;
      each(toArray(this.source), (source) => {
        if (hasFluidValue(source)) {
          addFluidObserver(source, this);
        }
        if (isFrameValue(source)) {
          if (!source.idle) {
            this._active.add(source);
          }
          priority2 = Math.max(priority2, source.priority + 1);
        }
      });
      this.priority = priority2;
      this._start();
    }
    _detach() {
      each(toArray(this.source), (source) => {
        if (hasFluidValue(source)) {
          removeFluidObserver(source, this);
        }
      });
      this._active.clear();
      becomeIdle(this);
    }
    eventObserved(event) {
      if (event.type == "change") {
        if (event.idle) {
          this.advance();
        } else {
          this._active.add(event.parent);
          this._start();
        }
      } else if (event.type == "idle") {
        this._active.delete(event.parent);
      } else if (event.type == "priority") {
        this.priority = toArray(this.source).reduce((highest, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1), 0);
      }
    }
  };
  function isIdle(source) {
    return source.idle !== false;
  }
  function checkIdle(active) {
    return !active.size || Array.from(active).every(isIdle);
  }
  function becomeIdle(self2) {
    if (!self2.idle) {
      self2.idle = true;
      each(getPayload(self2), (node) => {
        node.done = true;
      });
      callFluidObservers(self2, {
        type: "idle",
        parent: self2
      });
    }
  }
  globals.assign({
    createStringInterpolator,
    to: (source, args) => new Interpolation(source, args)
  });
  var update3 = frameLoop.advance;

  // node_modules/@react-spring/web/dist/react-spring-web.esm.js
  var import_react_dom3 = __toESM(require_react_dom());
  function _objectWithoutPropertiesLoose2(source, excluded) {
    if (source == null) return {};
    var target = {};
    var sourceKeys = Object.keys(source);
    var key, i2;
    for (i2 = 0; i2 < sourceKeys.length; i2++) {
      key = sourceKeys[i2];
      if (excluded.indexOf(key) >= 0) continue;
      target[key] = source[key];
    }
    return target;
  }
  var _excluded$2 = ["style", "children", "scrollTop", "scrollLeft"];
  var isCustomPropRE = /^--/;
  function dangerousStyleValue(name2, value) {
    if (value == null || typeof value === "boolean" || value === "") return "";
    if (typeof value === "number" && value !== 0 && !isCustomPropRE.test(name2) && !(isUnitlessNumber.hasOwnProperty(name2) && isUnitlessNumber[name2])) return value + "px";
    return ("" + value).trim();
  }
  var attributeCache = {};
  function applyAnimatedValues(instance, props) {
    if (!instance.nodeType || !instance.setAttribute) {
      return false;
    }
    const isFilterElement = instance.nodeName === "filter" || instance.parentNode && instance.parentNode.nodeName === "filter";
    const _ref = props, {
      style,
      children,
      scrollTop,
      scrollLeft
    } = _ref, attributes = _objectWithoutPropertiesLoose2(_ref, _excluded$2);
    const values = Object.values(attributes);
    const names = Object.keys(attributes).map((name2) => isFilterElement || instance.hasAttribute(name2) ? name2 : attributeCache[name2] || (attributeCache[name2] = name2.replace(/([A-Z])/g, (n2) => "-" + n2.toLowerCase())));
    if (children !== void 0) {
      instance.textContent = children;
    }
    for (let name2 in style) {
      if (style.hasOwnProperty(name2)) {
        const value = dangerousStyleValue(name2, style[name2]);
        if (isCustomPropRE.test(name2)) {
          instance.style.setProperty(name2, value);
        } else {
          instance.style[name2] = value;
        }
      }
    }
    names.forEach((name2, i2) => {
      instance.setAttribute(name2, values[i2]);
    });
    if (scrollTop !== void 0) {
      instance.scrollTop = scrollTop;
    }
    if (scrollLeft !== void 0) {
      instance.scrollLeft = scrollLeft;
    }
  }
  var isUnitlessNumber = {
    animationIterationCount: true,
    borderImageOutset: true,
    borderImageSlice: true,
    borderImageWidth: true,
    boxFlex: true,
    boxFlexGroup: true,
    boxOrdinalGroup: true,
    columnCount: true,
    columns: true,
    flex: true,
    flexGrow: true,
    flexPositive: true,
    flexShrink: true,
    flexNegative: true,
    flexOrder: true,
    gridRow: true,
    gridRowEnd: true,
    gridRowSpan: true,
    gridRowStart: true,
    gridColumn: true,
    gridColumnEnd: true,
    gridColumnSpan: true,
    gridColumnStart: true,
    fontWeight: true,
    lineClamp: true,
    lineHeight: true,
    opacity: true,
    order: true,
    orphans: true,
    tabSize: true,
    widows: true,
    zIndex: true,
    zoom: true,
    fillOpacity: true,
    floodOpacity: true,
    stopOpacity: true,
    strokeDasharray: true,
    strokeDashoffset: true,
    strokeMiterlimit: true,
    strokeOpacity: true,
    strokeWidth: true
  };
  var prefixKey = (prefix2, key) => prefix2 + key.charAt(0).toUpperCase() + key.substring(1);
  var prefixes = ["Webkit", "Ms", "Moz", "O"];
  isUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => {
    prefixes.forEach((prefix2) => acc[prefixKey(prefix2, prop)] = acc[prop]);
    return acc;
  }, isUnitlessNumber);
  var _excluded$1 = ["x", "y", "z"];
  var domTransforms = /^(matrix|translate|scale|rotate|skew)/;
  var pxTransforms = /^(translate)/;
  var degTransforms = /^(rotate|skew)/;
  var addUnit = (value, unit) => is.num(value) && value !== 0 ? value + unit : value;
  var isValueIdentity = (value, id) => is.arr(value) ? value.every((v3) => isValueIdentity(v3, id)) : is.num(value) ? value === id : parseFloat(value) === id;
  var AnimatedStyle = class extends AnimatedObject {
    constructor(_ref) {
      let {
        x: x2,
        y: y3,
        z
      } = _ref, style = _objectWithoutPropertiesLoose2(_ref, _excluded$1);
      const inputs = [];
      const transforms = [];
      if (x2 || y3 || z) {
        inputs.push([x2 || 0, y3 || 0, z || 0]);
        transforms.push((xyz) => [`translate3d(${xyz.map((v3) => addUnit(v3, "px")).join(",")})`, isValueIdentity(xyz, 0)]);
      }
      eachProp(style, (value, key) => {
        if (key === "transform") {
          inputs.push([value || ""]);
          transforms.push((transform) => [transform, transform === ""]);
        } else if (domTransforms.test(key)) {
          delete style[key];
          if (is.und(value)) return;
          const unit = pxTransforms.test(key) ? "px" : degTransforms.test(key) ? "deg" : "";
          inputs.push(toArray(value));
          transforms.push(key === "rotate3d" ? ([x3, y4, z2, deg]) => [`rotate3d(${x3},${y4},${z2},${addUnit(deg, unit)})`, isValueIdentity(deg, 0)] : (input) => [`${key}(${input.map((v3) => addUnit(v3, unit)).join(",")})`, isValueIdentity(input, key.startsWith("scale") ? 1 : 0)]);
        }
      });
      if (inputs.length) {
        style.transform = new FluidTransform(inputs, transforms);
      }
      super(style);
    }
  };
  var FluidTransform = class extends FluidValue {
    constructor(inputs, transforms) {
      super();
      this._value = null;
      this.inputs = inputs;
      this.transforms = transforms;
    }
    get() {
      return this._value || (this._value = this._get());
    }
    _get() {
      let transform = "";
      let identity4 = true;
      each(this.inputs, (input, i2) => {
        const arg1 = getFluidValue(input[0]);
        const [t3, id] = this.transforms[i2](is.arr(arg1) ? arg1 : input.map(getFluidValue));
        transform += " " + t3;
        identity4 = identity4 && id;
      });
      return identity4 ? "none" : transform;
    }
    observerAdded(count) {
      if (count == 1) each(this.inputs, (input) => each(input, (value) => hasFluidValue(value) && addFluidObserver(value, this)));
    }
    observerRemoved(count) {
      if (count == 0) each(this.inputs, (input) => each(input, (value) => hasFluidValue(value) && removeFluidObserver(value, this)));
    }
    eventObserved(event) {
      if (event.type == "change") {
        this._value = null;
      }
      callFluidObservers(this, event);
    }
  };
  var primitives = ["a", "abbr", "address", "area", "article", "aside", "audio", "b", "base", "bdi", "bdo", "big", "blockquote", "body", "br", "button", "canvas", "caption", "cite", "code", "col", "colgroup", "data", "datalist", "dd", "del", "details", "dfn", "dialog", "div", "dl", "dt", "em", "embed", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "iframe", "img", "input", "ins", "kbd", "keygen", "label", "legend", "li", "link", "main", "map", "mark", "menu", "menuitem", "meta", "meter", "nav", "noscript", "object", "ol", "optgroup", "option", "output", "p", "param", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "script", "section", "select", "small", "source", "span", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "time", "title", "tr", "track", "u", "ul", "var", "video", "wbr", "circle", "clipPath", "defs", "ellipse", "foreignObject", "g", "image", "line", "linearGradient", "mask", "path", "pattern", "polygon", "polyline", "radialGradient", "rect", "stop", "svg", "text", "tspan"];
  var _excluded = ["scrollTop", "scrollLeft"];
  globals.assign({
    batchedUpdates: import_react_dom3.unstable_batchedUpdates,
    createStringInterpolator,
    colors
  });
  var host = createHost(primitives, {
    applyAnimatedValues,
    createAnimatedStyle: (style) => new AnimatedStyle(style),
    getComponentProps: (_ref) => {
      let props = _objectWithoutPropertiesLoose2(_ref, _excluded);
      return props;
    }
  });
  var animated = host.animated;

  // packages/fields/build-module/components/media-edit/use-moving-animation.mjs
  var import_element122 = __toESM(require_element(), 1);
  function getAbsolutePosition(element) {
    return {
      top: element.offsetTop,
      left: element.offsetLeft
    };
  }
  function useMovingAnimation(triggerAnimationOnChange) {
    const ref = (0, import_element122.useRef)(null);
    const previousRef = (0, import_element122.useRef)(void 0);
    if (ref.current) {
      previousRef.current = getAbsolutePosition(ref.current);
    }
    (0, import_element122.useLayoutEffect)(() => {
      const previous = previousRef.current;
      if (!previous || !ref.current) {
        return;
      }
      if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
        return;
      }
      const controller = new Controller({
        x: 0,
        y: 0,
        config: { mass: 5, tension: 2e3, friction: 200 },
        onChange({ value }) {
          if (!ref.current) {
            return;
          }
          let { x: x22, y: y22 } = value;
          x22 = Math.round(x22);
          y22 = Math.round(y22);
          const finishedMoving = x22 === 0 && y22 === 0;
          ref.current.style.transform = finishedMoving ? "" : `translate3d(${x22}px,${y22}px,0)`;
        }
      });
      ref.current.style.transform = "";
      const destination = getAbsolutePosition(ref.current);
      const x2 = Math.round(previous.left - destination.left);
      const y3 = Math.round(previous.top - destination.top);
      controller.start({ x: 0, y: 0, from: { x: x2, y: y3 } });
      return () => {
        controller.stop();
        controller.set({ x: 0, y: 0 });
      };
    }, [triggerAnimationOnChange]);
    return ref;
  }

  // packages/fields/build-module/components/media-edit/index.mjs
  var import_jsx_runtime245 = __toESM(require_jsx_runtime(), 1);
  var { MediaUploadModal } = unlock4(import_media_utils.privateApis);
  function AnimatedMediaItem({
    children,
    index: index3,
    className
  }) {
    const ref = useMovingAnimation(index3);
    return /* @__PURE__ */ (0, import_jsx_runtime245.jsx)("div", { ref, className, children });
  }
  function normalizeValue(value) {
    if (Array.isArray(value)) {
      return value;
    }
    return value ? [value] : [];
  }
  function ConditionalMediaUpload({ render: render5, multiple, ...props }) {
    const [isModalOpen, setIsModalOpen] = (0, import_element123.useState)(false);
    if (window.__experimentalDataViewsMediaModal) {
      return /* @__PURE__ */ (0, import_jsx_runtime245.jsxs)(import_jsx_runtime245.Fragment, { children: [
        render5 && render5({ open: () => setIsModalOpen(true) }),
        isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
          MediaUploadModal,
          {
            ...props,
            multiple: !!multiple,
            isOpen: isModalOpen,
            onClose: () => {
              setIsModalOpen(false);
              props.onClose?.();
            },
            onSelect: (media) => {
              setIsModalOpen(false);
              props.onSelect?.(media);
            }
          }
        )
      ] });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(import_media_utils.MediaUpload, { ...props, render: render5, multiple });
  }
  var FilteredMediaUpload = (0, import_components4.withFilters)("editor.MediaUpload")(
    ConditionalMediaUpload
  );
  function MediaPickerButton({
    open: open3,
    children,
    label,
    showTooltip = false,
    onFilesDrop,
    attachment,
    isUploading = false
  }) {
    const isBlob = attachment && (0, import_blob.isBlobURL)(attachment.source_url);
    const mediaPickerButton = /* @__PURE__ */ (0, import_jsx_runtime245.jsxs)(
      "div",
      {
        className: clsx_default("fields__media-edit-picker-button", {
          "has-attachment": attachment
        }),
        role: "button",
        tabIndex: 0,
        onClick: () => {
          if (!isUploading) {
            open3();
          }
        },
        onKeyDown: (event) => {
          if (isUploading) {
            return;
          }
          if (event.key === "Enter" || event.key === " ") {
            event.preventDefault();
            open3();
          }
        },
        "aria-label": label,
        "aria-disabled": isUploading,
        children: [
          children,
          isBlob && /* @__PURE__ */ (0, import_jsx_runtime245.jsx)("span", { className: "fields__media-edit-picker-button-spinner", children: /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(import_components4.Spinner, {}) }),
          !isUploading && /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
            import_components4.DropZone,
            {
              onFilesDrop: (files) => onFilesDrop(files, attachment?.id)
            }
          )
        ]
      }
    );
    if (!showTooltip) {
      return mediaPickerButton;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime245.jsxs)(tooltip_exports.Root, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(tooltip_exports.Trigger, { render: mediaPickerButton }),
      /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(tooltip_exports.Popup, { children: label })
    ] });
  }
  var archiveMimeTypes = [
    "application/zip",
    "application/x-zip-compressed",
    "application/x-rar-compressed",
    "application/x-7z-compressed",
    "application/x-tar",
    "application/x-gzip"
  ];
  function MediaTitle({ attachment }) {
    return /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(import_components4.__experimentalTruncate, { className: "fields__media-edit-filename", children: (0, import_html_entities3.decodeEntities)(attachment.title.rendered) });
  }
  function MediaEditPlaceholder(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(MediaPickerButton, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime245.jsx)("span", { className: "fields__media-edit-placeholder", children: props.label }) });
  }
  function MoveButtons({
    itemId,
    index: index3,
    totalItems,
    isUploading,
    moveItem,
    orientation = "vertical"
  }) {
    const isHorizontal = orientation === "horizontal";
    return /* @__PURE__ */ (0, import_jsx_runtime245.jsxs)(import_jsx_runtime245.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
        import_components4.Button,
        {
          __next40pxDefaultSize: true,
          icon: isHorizontal ? chevron_left_default : chevron_up_default,
          label: isHorizontal ? (0, import_i18n28.__)("Move left") : (0, import_i18n28.__)("Move up"),
          size: "small",
          disabled: isUploading || index3 === 0,
          accessibleWhenDisabled: true,
          tooltipPosition: "top",
          onClick: (event) => {
            event.stopPropagation();
            moveItem(itemId, "up");
          }
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
        import_components4.Button,
        {
          __next40pxDefaultSize: true,
          icon: isHorizontal ? chevron_right_default : chevron_down_default,
          label: isHorizontal ? (0, import_i18n28.__)("Move right") : (0, import_i18n28.__)("Move down"),
          size: "small",
          disabled: isUploading || index3 === totalItems - 1,
          accessibleWhenDisabled: true,
          tooltipPosition: "top",
          onClick: (event) => {
            event.stopPropagation();
            moveItem(itemId, "down");
          }
        }
      )
    ] });
  }
  function MediaPreview({ attachment }) {
    const url = attachment.source_url;
    const mimeType = attachment.mime_type || "";
    if (mimeType.startsWith("image")) {
      return /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
        "img",
        {
          className: "fields__media-edit-thumbnail",
          alt: attachment.alt_text || "",
          src: url
        }
      );
    } else if (mimeType.startsWith("audio")) {
      return /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(import_components4.Icon, { icon: audio_default });
    } else if (mimeType.startsWith("video")) {
      return /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(import_components4.Icon, { icon: video_default });
    } else if (archiveMimeTypes.includes(mimeType)) {
      return /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(import_components4.Icon, { icon: archive_default });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(import_components4.Icon, { icon: file_default });
  }
  function ExpandedMediaEditAttachments({
    allItems,
    addButtonLabel,
    multiple,
    removeItem: removeItem2,
    moveItem,
    open: open3,
    onFilesDrop,
    isUploading,
    setTargetItemId
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime245.jsxs)(
      "div",
      {
        className: clsx_default("fields__media-edit-expanded", {
          "is-multiple": multiple,
          "is-single": !multiple,
          "is-empty": !allItems?.length
        }),
        children: [
          allItems?.map((attachment, index3) => {
            const hasPreviewImage = attachment.mime_type?.startsWith("image");
            const isBlob = (0, import_blob.isBlobURL)(attachment.source_url);
            const attachmentNumericId = attachment.id;
            return /* @__PURE__ */ (0, import_jsx_runtime245.jsxs)(
              AnimatedMediaItem,
              {
                index: index3,
                className: clsx_default("fields__media-edit-expanded-item", {
                  "has-preview-image": hasPreviewImage
                }),
                children: [
                  /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
                    MediaPickerButton,
                    {
                      open: () => {
                        setTargetItemId(attachmentNumericId);
                        open3();
                      },
                      label: !isBlob ? (0, import_i18n28.sprintf)(
                        /* translators: %s: The title of the media item. */
                        (0, import_i18n28.__)("Replace %s"),
                        (0, import_html_entities3.decodeEntities)(
                          attachment.title.rendered
                        )
                      ) : (0, import_i18n28.__)("Replace"),
                      showTooltip: true,
                      onFilesDrop,
                      attachment,
                      isUploading,
                      children: /* @__PURE__ */ (0, import_jsx_runtime245.jsx)("div", { className: "fields__media-edit-expanded-preview", children: /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
                        import_components4.__experimentalVStack,
                        {
                          spacing: 0,
                          alignment: "center",
                          justify: "center",
                          className: "fields__media-edit-expanded-preview-stack",
                          children: (!isBlob || hasPreviewImage) && /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
                            MediaPreview,
                            {
                              attachment
                            }
                          )
                        }
                      ) })
                    }
                  ),
                  !isBlob && /* @__PURE__ */ (0, import_jsx_runtime245.jsx)("div", { className: "fields__media-edit-expanded-overlay", children: /* @__PURE__ */ (0, import_jsx_runtime245.jsxs)(
                    import_components4.__experimentalHStack,
                    {
                      className: "fields__media-edit-expanded-actions",
                      spacing: 0,
                      alignment: "flex-end",
                      expanded: false,
                      children: [
                        multiple && allItems.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
                          MoveButtons,
                          {
                            itemId: attachmentNumericId,
                            index: index3,
                            totalItems: allItems.length,
                            isUploading,
                            moveItem,
                            orientation: "horizontal"
                          }
                        ),
                        /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
                          import_components4.Button,
                          {
                            __next40pxDefaultSize: true,
                            icon: close_small_default,
                            label: (0, import_i18n28.__)("Remove"),
                            size: "small",
                            disabled: isUploading,
                            accessibleWhenDisabled: true,
                            tooltipPosition: "top",
                            onClick: (event) => {
                              event.stopPropagation();
                              removeItem2(attachmentNumericId);
                            }
                          }
                        )
                      ]
                    }
                  ) })
                ]
              },
              attachment.id
            );
          }),
          (multiple || !allItems?.length) && /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
            MediaEditPlaceholder,
            {
              open: () => {
                setTargetItemId(void 0);
                open3();
              },
              label: addButtonLabel,
              onFilesDrop,
              isUploading
            }
          )
        ]
      }
    );
  }
  function CompactMediaEditAttachments({
    allItems,
    addButtonLabel,
    multiple,
    removeItem: removeItem2,
    moveItem,
    open: open3,
    onFilesDrop,
    isUploading,
    setTargetItemId
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime245.jsxs)(import_jsx_runtime245.Fragment, { children: [
      !!allItems?.length && /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
        "div",
        {
          className: clsx_default("fields__media-edit-compact-group", {
            "is-single": allItems.length === 1
          }),
          children: /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(import_components4.__experimentalVStack, { spacing: 0, children: allItems.map((attachment, index3) => {
            const isBlob = (0, import_blob.isBlobURL)(attachment.source_url);
            const showMoveButtons = multiple && allItems.length > 1;
            const attachmentNumericId = attachment.id;
            return /* @__PURE__ */ (0, import_jsx_runtime245.jsxs)(
              AnimatedMediaItem,
              {
                index: index3,
                className: "fields__media-edit-compact",
                children: [
                  /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
                    MediaPickerButton,
                    {
                      open: () => {
                        setTargetItemId(
                          attachmentNumericId
                        );
                        open3();
                      },
                      label: (0, import_i18n28.__)("Replace"),
                      showTooltip: true,
                      onFilesDrop,
                      attachment,
                      isUploading,
                      children: /* @__PURE__ */ (0, import_jsx_runtime245.jsxs)(import_jsx_runtime245.Fragment, { children: [
                        /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
                          MediaPreview,
                          {
                            attachment
                          }
                        ),
                        !isBlob && /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
                          MediaTitle,
                          {
                            attachment
                          }
                        )
                      ] })
                    }
                  ),
                  !isBlob && /* @__PURE__ */ (0, import_jsx_runtime245.jsxs)(
                    import_components4.__experimentalHStack,
                    {
                      className: "fields__media-edit-compact-movers",
                      spacing: 0,
                      alignment: "flex-end",
                      expanded: false,
                      children: [
                        showMoveButtons && /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
                          MoveButtons,
                          {
                            itemId: attachmentNumericId,
                            index: index3,
                            totalItems: allItems.length,
                            isUploading,
                            moveItem,
                            orientation: "vertical"
                          }
                        ),
                        /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
                          import_components4.Button,
                          {
                            __next40pxDefaultSize: true,
                            icon: close_small_default,
                            label: (0, import_i18n28.__)("Remove"),
                            size: "small",
                            disabled: isUploading,
                            accessibleWhenDisabled: true,
                            tooltipPosition: "top",
                            onClick: (event) => {
                              event.stopPropagation();
                              removeItem2(
                                attachmentNumericId
                              );
                            }
                          }
                        )
                      ]
                    }
                  )
                ]
              },
              attachment.id
            );
          }) })
        }
      ),
      (multiple || !allItems?.length) && /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
        MediaEditPlaceholder,
        {
          open: () => {
            setTargetItemId(void 0);
            open3();
          },
          label: addButtonLabel,
          onFilesDrop,
          isUploading
        }
      )
    ] });
  }
  function MediaEditControl({
    data,
    field,
    onChange,
    hideLabelFromVision,
    allowedTypes = ["image"],
    multiple,
    isExpanded,
    validity,
    isPickerFiltered,
    featuredImageFlow,
    pickerTitle
  }) {
    const MediaUploadComponent = isPickerFiltered ? FilteredMediaUpload : ConditionalMediaUpload;
    const value = field.getValue({ item: data });
    const canUpload = (0, import_data8.useSelect)(
      (select9) => select9(import_core_data7.store).canUser("create", {
        kind: "postType",
        name: "attachment"
      }) ?? true,
      []
    );
    const [isTouched, setIsTouched] = (0, import_element123.useState)(false);
    const validityTargetRef = (0, import_element123.useRef)(null);
    const [customValidity, setCustomValidity] = (0, import_element123.useState)(void 0);
    (0, import_element123.useEffect)(() => {
      const validityTarget = validityTargetRef.current;
      const handler = () => {
        setIsTouched(true);
      };
      validityTarget?.addEventListener("invalid", handler);
      return () => validityTarget?.removeEventListener("invalid", handler);
    }, []);
    const attachments = (0, import_data8.useSelect)(
      (select9) => {
        if (!value) {
          return null;
        }
        const normalizedValue = normalizeValue(value);
        const sortedIds = normalizedValue.toSorted((a2, b2) => a2 - b2);
        const { getEntityRecords } = select9(import_core_data7.store);
        return getEntityRecords("postType", "attachment", {
          include: sortedIds
        });
      },
      [value]
    );
    const stableAttachmentsRef = (0, import_element123.useRef)(
      null
    );
    if (attachments !== null) {
      stableAttachmentsRef.current = attachments;
    }
    let stableAttachments = attachments;
    if (attachments === null && stableAttachmentsRef.current && value) {
      const stableIds = new Set(
        stableAttachmentsRef.current.map((a2) => a2.id)
      );
      if (normalizeValue(value).every((id) => stableIds.has(id))) {
        stableAttachments = stableAttachmentsRef.current;
      }
    }
    const orderedAttachments = (0, import_element123.useMemo)(() => {
      if (!stableAttachments) {
        return null;
      }
      const normalizedValue = normalizeValue(value);
      const attachmentMap = new Map(
        stableAttachments.map((a2) => [a2.id, a2])
      );
      return normalizedValue.map((id) => attachmentMap.get(id)).filter((a2) => a2 !== void 0);
    }, [stableAttachments, value]);
    const { createErrorNotice } = (0, import_data8.useDispatch)(import_notices2.store);
    const { receiveEntityRecords } = (0, import_data8.useDispatch)(import_core_data7.store);
    const [targetItemId, setTargetItemId] = (0, import_element123.useState)();
    const openModalRef = (0, import_element123.useRef)(void 0);
    const [pendingOpen, setPendingOpen] = (0, import_element123.useState)(false);
    const [blobs, setBlobs] = (0, import_element123.useState)([]);
    (0, import_element123.useEffect)(() => {
      if (pendingOpen) {
        setPendingOpen(false);
        openModalRef.current?.();
      }
    }, [pendingOpen]);
    const onChangeControl = (0, import_element123.useCallback)(
      (newValue) => onChange(field.setValue({ item: data, value: newValue })),
      [data, field, onChange]
    );
    const removeItem2 = (0, import_element123.useCallback)(
      (itemId) => {
        const currentIds = normalizeValue(value);
        const newIds = currentIds.filter((id) => id !== itemId);
        setIsTouched(true);
        onChangeControl(newIds.length ? newIds : void 0);
      },
      [value, onChangeControl]
    );
    const moveItem = (0, import_element123.useCallback)(
      (itemId, direction) => {
        if (!orderedAttachments) {
          return;
        }
        const currentIds = orderedAttachments.map((a2) => a2.id);
        const index3 = currentIds.indexOf(itemId);
        const newIndex = direction === "up" ? index3 - 1 : index3 + 1;
        [currentIds[index3], currentIds[newIndex]] = [
          currentIds[newIndex],
          currentIds[index3]
        ];
        onChangeControl(currentIds);
      },
      [orderedAttachments, onChangeControl]
    );
    const onFilesDrop = (0, import_element123.useCallback)(
      (files, _targetItemId) => {
        setTargetItemId(_targetItemId);
        (0, import_media_utils.uploadMedia)({
          allowedTypes: allowedTypes?.length ? allowedTypes : void 0,
          filesList: files,
          onFileChange(uploadedMedia) {
            const blobUrls = uploadedMedia.filter((item) => (0, import_blob.isBlobURL)(item.url)).map((item) => item.url);
            setBlobs(blobUrls);
            if (!!blobUrls.length) {
              return;
            }
            receiveEntityRecords(
              "postType",
              "attachment",
              [],
              void 0,
              true
            );
            const uploadedIds = uploadedMedia.map(
              (item) => item.id
            );
            if (!multiple) {
              onChangeControl(uploadedIds[0]);
              setTargetItemId(void 0);
              return;
            }
            const currentValue = normalizeValue(value);
            if (_targetItemId === void 0) {
              onChangeControl([...currentValue, ...uploadedIds]);
            } else {
              const newValue = [...currentValue];
              newValue.splice(
                currentValue.indexOf(_targetItemId),
                1,
                ...uploadedIds
              );
              onChangeControl(newValue);
            }
            setTargetItemId(void 0);
          },
          onError(error2) {
            setTargetItemId(void 0);
            setBlobs([]);
            createErrorNotice(error2.message, { type: "snackbar" });
          },
          multiple: !!multiple
        });
      },
      [
        allowedTypes,
        value,
        multiple,
        createErrorNotice,
        onChangeControl,
        receiveEntityRecords
      ]
    );
    const addButtonLabel = field.placeholder || (multiple ? (0, import_i18n28.__)("Choose files") : (0, import_i18n28.__)("Choose file"));
    const allItems = (0, import_element123.useMemo)(() => {
      if (!blobs.length) {
        return orderedAttachments;
      }
      const items = [
        ...orderedAttachments || []
      ];
      const blobItems = blobs.map((url) => ({
        id: url,
        source_url: url,
        mime_type: (0, import_blob.getBlobTypeByURL)(url)
      }));
      if (targetItemId !== void 0) {
        const targetIndex = items.findIndex(
          (a2) => a2.id === targetItemId
        );
        items.splice(targetIndex, 1, ...blobItems);
      } else {
        items.push(...blobItems);
      }
      return items;
    }, [orderedAttachments, targetItemId, blobs]);
    (0, import_element123.useEffect)(() => {
      if (!isTouched) {
        return;
      }
      const input = validityTargetRef.current;
      if (!input) {
        return;
      }
      if (validity) {
        const customValidityResult = validity?.custom;
        setCustomValidity(customValidityResult);
        if (customValidityResult?.type === "invalid") {
          input.setCustomValidity(
            customValidityResult.message || (0, import_i18n28.__)("Invalid")
          );
        } else {
          input.setCustomValidity("");
        }
      } else {
        input.setCustomValidity("");
        setCustomValidity(void 0);
      }
    }, [isTouched, field.isValid, validity]);
    (0, import_element123.useEffect)(() => {
      if (isTouched && customValidity?.message) {
        (0, import_a11y3.speak)(customValidity.message);
      }
    }, [isTouched, customValidity?.message]);
    const onBlur = (0, import_element123.useCallback)(
      (event) => {
        if (isTouched) {
          return;
        }
        if (!event.relatedTarget || !event.currentTarget.contains(event.relatedTarget)) {
          setIsTouched(true);
        }
      },
      [isTouched]
    );
    if (!canUpload) {
      return /* @__PURE__ */ (0, import_jsx_runtime245.jsx)("fieldset", { className: "fields__media-edit", "data-field-id": field.id, children: /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(import_components4.__experimentalText, { children: (0, import_i18n28.sprintf)(
        /* translators: %s: The field label. */
        (0, import_i18n28.__)(
          "%s: To edit this field, you need permission to upload media."
        ),
        field.label
      ) }) });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime245.jsxs)(Stack, { direction: "column", gap: "sm", onBlur, children: [
      /* @__PURE__ */ (0, import_jsx_runtime245.jsx)("fieldset", { className: "fields__media-edit", "data-field-id": field.id, children: /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
        MediaUploadComponent,
        {
          title: pickerTitle ?? field.label,
          featuredImageFlow,
          unstableFeaturedImageFlow: featuredImageFlow,
          onSelect: (selectedMedia) => {
            if (!multiple) {
              onChangeControl(selectedMedia.id);
              setTargetItemId(void 0);
              return;
            }
            const newIds = Array.isArray(selectedMedia) ? selectedMedia.map((m2) => m2.id) : [selectedMedia.id];
            const currentValue = normalizeValue(value);
            if (!currentValue.length) {
              onChangeControl(newIds);
            } else if (targetItemId === void 0) {
              const existingItems = currentValue.filter(
                (id) => newIds.includes(id)
              );
              const newItems = newIds.filter(
                (id) => !currentValue.includes(id)
              );
              onChangeControl([
                ...existingItems,
                ...newItems
              ]);
            } else if (selectedMedia.id !== targetItemId) {
              const filtered = currentValue.filter(
                (id) => id !== selectedMedia.id
              );
              onChangeControl(
                filtered.map(
                  (id) => id === targetItemId ? selectedMedia.id : id
                )
              );
            }
            setTargetItemId(void 0);
          },
          onClose: () => setTargetItemId(void 0),
          allowedTypes,
          value: targetItemId !== void 0 ? targetItemId : value,
          multiple: multiple && targetItemId === void 0 ? "add" : false,
          render: ({ open: open3 }) => {
            openModalRef.current = open3;
            const AttachmentsComponent = isExpanded ? ExpandedMediaEditAttachments : CompactMediaEditAttachments;
            return /* @__PURE__ */ (0, import_jsx_runtime245.jsxs)(import_components4.__experimentalVStack, { spacing: 2, children: [
              field.label && (hideLabelFromVision ? /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime245.jsx)("legend", {}), children: field.label }) : /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
                import_components4.BaseControl.VisualLabel,
                {
                  as: "legend",
                  style: { marginBottom: 0 },
                  children: field.label
                }
              )),
              /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
                AttachmentsComponent,
                {
                  allItems,
                  addButtonLabel,
                  multiple,
                  removeItem: removeItem2,
                  moveItem,
                  open: () => setPendingOpen(true),
                  onFilesDrop,
                  isUploading: !!blobs.length,
                  setTargetItemId
                }
              ),
              field.description && /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
                import_components4.__experimentalText,
                {
                  variant: "muted",
                  className: "fields__media-edit-description",
                  children: field.description
                }
              )
            ] });
          }
        }
      ) }),
      /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
        "input",
        {
          type: "text",
          ref: validityTargetRef,
          value: value ?? "",
          tabIndex: -1,
          "aria-hidden": "true",
          onChange: () => {
          }
        }
      ) }),
      customValidity && /* @__PURE__ */ (0, import_jsx_runtime245.jsx)(
        ValidityIndicator,
        {
          type: customValidity.type,
          message: customValidity.message
        }
      )
    ] });
  }

  // packages/fields/build-module/fields/featured-image/edit.mjs
  var import_jsx_runtime246 = __toESM(require_jsx_runtime(), 1);
  var FilteredMediaEdit = (0, import_components5.withFilters)("editor.PostFeaturedImage")(
    function PostFeaturedImage(props) {
      return /* @__PURE__ */ (0, import_jsx_runtime246.jsx)(
        MediaEditControl,
        {
          ...props,
          isExpanded: true,
          isPickerFiltered: true,
          featuredImageFlow: true,
          pickerTitle: props.postType?.labels?.featured_image || props.field.label
        }
      );
    }
  );
  function FilteredFeaturedImageEdit(props) {
    const { data, field, onChange } = props;
    const featuredImageId = field.getValue({ item: data }) ?? 0;
    const { media, postType: postType2 } = (0, import_data9.useSelect)(
      (select9) => {
        const { getEntityRecords, getPostType } = select9(import_core_data8.store);
        return {
          // The same query the media control runs, so this adds no request.
          media: featuredImageId ? getEntityRecords("postType", "attachment", {
            include: [featuredImageId]
          })?.[0] ?? null : null,
          postType: getPostType(data.type)
        };
      },
      [featuredImageId, data.type]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime246.jsx)(
      FilteredMediaEdit,
      {
        ...props,
        currentPostId: data.id,
        featuredImageId,
        media,
        postType: postType2,
        onRemoveImage: () => onChange(field.setValue({ item: data, value: void 0 }))
      }
    );
  }
  function FeaturedImageEdit(props) {
    const { data } = props;
    const labels = (0, import_data9.useSelect)(
      (select9) => select9(import_core_data8.store).getPostType(data.type)?.labels,
      [data.type]
    );
    const setFeaturedImageLabel = labels?.set_featured_image;
    const field = (0, import_element124.useMemo)(
      () => setFeaturedImageLabel ? { ...props.field, placeholder: setFeaturedImageLabel } : props.field,
      [props.field, setFeaturedImageLabel]
    );
    const contextId = (0, import_core_data8.useEntityId)("postType", data.type);
    if (contextId === void 0 || String(contextId) !== String(data.id)) {
      return /* @__PURE__ */ (0, import_jsx_runtime246.jsx)(
        MediaEditControl,
        {
          ...props,
          field,
          isExpanded: true,
          featuredImageFlow: true,
          pickerTitle: labels?.featured_image || field.label
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime246.jsx)(FilteredFeaturedImageEdit, { ...props, field });
  }

  // packages/fields/build-module/fields/featured-image/featured-image-view.mjs
  var import_jsx_runtime247 = __toESM(require_jsx_runtime(), 1);
  var FeaturedImageView = ({
    item,
    config: config2
  }) => {
    const media = item?._embedded?.["wp:featuredmedia"]?.[0];
    const url = media?.source_url;
    if (url) {
      return /* @__PURE__ */ (0, import_jsx_runtime247.jsx)(
        "img",
        {
          className: "fields-controls__featured-image-image",
          src: url,
          alt: "",
          srcSet: media?.media_details?.sizes ? Object.values(media.media_details.sizes).map(
            (size4) => `${size4.source_url} ${size4.width}w`
          ).join(", ") : void 0,
          sizes: config2?.sizes || "100vw"
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime247.jsx)("span", { className: "fields-controls__featured-image-placeholder" });
  };

  // packages/fields/build-module/fields/featured-image/index.mjs
  var featuredImageField = {
    id: "featured_media",
    type: "media",
    label: (0, import_i18n29.__)("Featured Image"),
    placeholder: (0, import_i18n29.__)("Set featured image"),
    Edit: FeaturedImageEdit,
    render: FeaturedImageView,
    setValue: ({ value }) => ({
      featured_media: value ?? 0
    }),
    enableSorting: false,
    filterBy: false
  };
  var featured_image_default = featuredImageField;

  // packages/fields/build-module/fields/template/index.mjs
  var import_i18n32 = __toESM(require_i18n(), 1);

  // packages/fields/build-module/fields/template/template-edit.mjs
  var import_element125 = __toESM(require_element(), 1);
  var import_core_data10 = __toESM(require_core_data(), 1);
  var import_components6 = __toESM(require_components(), 1);
  var import_data11 = __toESM(require_data(), 1);
  var import_i18n30 = __toESM(require_i18n(), 1);

  // packages/fields/build-module/fields/template/hooks.mjs
  var import_data10 = __toESM(require_data(), 1);
  var import_core_data9 = __toESM(require_core_data(), 1);
  function useTemplateFieldMode(record) {
    const { type: postType2, id: postId2 } = record;
    const availableTemplates = record?.available_templates ?? {};
    const hasAvailableTemplates = Object.keys(availableTemplates).length > 0;
    return (0, import_data10.useSelect)(
      (select9) => {
        if (!select9(import_core_data9.store).getPostType(postType2)?.viewable) {
          return null;
        }
        if (!select9(import_core_data9.store).getCurrentTheme()?.is_block_theme) {
          return hasAvailableTemplates ? "classic" : null;
        }
        const templateId2 = postId2 ? unlock4(select9(import_core_data9.store)).getTemplateId(
          postType2,
          postId2
        ) : void 0;
        return templateId2 ? "block-theme" : null;
      },
      [postType2, postId2, hasAvailableTemplates]
    );
  }
  function getTemplateSlugToCheck(postType2, slug) {
    if (slug) {
      return postType2 === "page" ? `${postType2}-${slug}` : `single-${postType2}-${slug}`;
    }
    return postType2 === "page" ? "page" : `single-${postType2}`;
  }
  var NAME_NOT_FOUND = "";
  function useDefaultTemplateLabel(postType2, postId2, slug) {
    return (0, import_data10.useSelect)(
      (select9) => {
        if (!postType2 || !postId2) {
          return NAME_NOT_FOUND;
        }
        const postIdStr = String(postId2);
        const homePage = unlock4(select9(import_core_data9.store)).getHomePage();
        if (postType2 === "page" && homePage?.postType === "page" && homePage?.postId === postIdStr) {
          const templates = select9(
            import_core_data9.store
          ).getEntityRecords("postType", "wp_template", {
            per_page: -1
          });
          const frontPage = templates?.find(
            (t3) => t3.slug === "front-page"
          );
          if (frontPage) {
            return getItemTitle(frontPage);
          }
        }
        const postsPageId = unlock4(select9(import_core_data9.store)).getPostsPageId();
        if (postType2 === "page" && postsPageId === postIdStr) {
          const templateId22 = select9(import_core_data9.store).getDefaultTemplateId({
            slug: "home"
          });
          if (!templateId22) {
            return NAME_NOT_FOUND;
          }
          const template22 = select9(
            import_core_data9.store
          ).getEntityRecord(
            "postType",
            "wp_template",
            templateId22
          );
          return template22 ? getItemTitle(template22) : NAME_NOT_FOUND;
        }
        const slugToCheck = getTemplateSlugToCheck(postType2, slug);
        const templateId2 = select9(import_core_data9.store).getDefaultTemplateId({
          slug: slugToCheck
        });
        if (!templateId2) {
          return NAME_NOT_FOUND;
        }
        const template2 = select9(import_core_data9.store).getEntityRecord(
          "postType",
          "wp_template",
          templateId2
        );
        return template2 ? getItemTitle(template2) : NAME_NOT_FOUND;
      },
      [postType2, postId2, slug]
    );
  }

  // packages/fields/build-module/fields/template/template-edit.mjs
  var import_jsx_runtime248 = __toESM(require_jsx_runtime(), 1);
  var EMPTY_ARRAY4 = [];
  function ClassicTemplateEdit({
    data,
    field,
    onChange
  }) {
    const postId2 = typeof data.id === "number" ? data.id : parseInt(data.id, 10);
    const value = field.getValue({ item: data });
    const options = (0, import_element125.useMemo)(
      () => Object.entries(
        data?.available_templates ?? {}
      ).map(([templateSlug, title]) => ({
        label: title,
        value: templateSlug
      })),
      [data]
    );
    const canSwitchTemplate = (0, import_data11.useSelect)(
      (select9) => {
        const { getHomePage, getPostsPageId } = unlock4(
          select9(import_core_data10.store)
        );
        const singlePostId = String(postId2);
        const isPostsPage = getPostsPageId() === singlePostId;
        const isFrontPage = data.type === "page" && getHomePage()?.postId === singlePostId;
        return !isPostsPage && !isFrontPage;
      },
      [postId2, data.type]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(
      import_components6.SelectControl,
      {
        label: (0, import_i18n30.__)("Template"),
        hideLabelFromVision: true,
        value,
        options,
        onChange,
        disabled: !canSwitchTemplate
      }
    );
  }
  function BlockThemeTemplateEdit({
    data,
    field,
    onChange
  }) {
    const postType2 = data.type;
    const postId2 = typeof data.id === "number" ? data.id : parseInt(data.id, 10);
    const slug = data.slug;
    const { templates, canSwitchTemplate } = (0, import_data11.useSelect)(
      (select9) => {
        const allTemplates = select9(import_core_data10.store).getEntityRecords(
          "postType",
          "wp_template",
          {
            per_page: -1,
            post_type: postType2
          }
        ) ?? EMPTY_ARRAY4;
        const { getHomePage, getPostsPageId } = unlock4(
          select9(import_core_data10.store)
        );
        const singlePostId = String(postId2);
        const isPostsPage = getPostsPageId() === singlePostId;
        const isFrontPage = postType2 === "page" && getHomePage()?.postId === singlePostId;
        return {
          templates: allTemplates,
          canSwitchTemplate: !isPostsPage && !isFrontPage
        };
      },
      [postId2, postType2]
    );
    const defaultTemplateLabel = useDefaultTemplateLabel(
      postType2,
      postId2,
      slug
    );
    const value = field.getValue({ item: data });
    const options = (0, import_element125.useMemo)(() => {
      const templateOptions = templates.map((template2) => ({
        label: getItemTitle(template2),
        value: template2.slug
      }));
      return [
        { label: defaultTemplateLabel, value: "" },
        ...templateOptions
      ];
    }, [templates, defaultTemplateLabel]);
    return /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(
      import_components6.SelectControl,
      {
        label: (0, import_i18n30.__)("Template"),
        hideLabelFromVision: true,
        value,
        options,
        onChange,
        disabled: !canSwitchTemplate
      }
    );
  }
  var TemplateEdit = ({
    data,
    field,
    onChange
  }) => {
    const onChangeControl = (0, import_element125.useCallback)(
      (newValue) => onChange({
        [field.id]: newValue
      }),
      [field.id, onChange]
    );
    const mode = useTemplateFieldMode(data);
    if (!mode || !["block-theme", "classic"].includes(mode)) {
      return null;
    }
    const Edit2 = mode === "classic" ? ClassicTemplateEdit : BlockThemeTemplateEdit;
    return /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(Edit2, { data, field, onChange: onChangeControl });
  };

  // packages/fields/build-module/fields/template/template-view.mjs
  var import_data12 = __toESM(require_data(), 1);
  var import_core_data11 = __toESM(require_core_data(), 1);
  var import_i18n31 = __toESM(require_i18n(), 1);
  var import_jsx_runtime249 = __toESM(require_jsx_runtime(), 1);
  function ClassicTemplateView({
    item,
    field
  }) {
    const templateSlug = field.getValue({ item });
    const availableTemplates = item?.available_templates ?? {};
    const classicLabel = templateSlug && availableTemplates[templateSlug] ? availableTemplates[templateSlug] : (0, import_i18n31.__)("Default template");
    return /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(import_jsx_runtime249.Fragment, { children: classicLabel });
  }
  function BlockThemeTemplateView({
    item,
    field
  }) {
    const postType2 = item.type;
    const slug = item.slug;
    const postId2 = item.id;
    const templateSlug = field.getValue({ item });
    const defaultTemplateLabel = useDefaultTemplateLabel(
      postType2,
      postId2,
      slug
    );
    const templateLabel = (0, import_data12.useSelect)(
      (select9) => {
        if (!templateSlug) {
          return;
        }
        const allTemplates = select9(
          import_core_data11.store
        ).getEntityRecords("postType", "wp_template", {
          per_page: -1,
          post_type: postType2
        });
        const match3 = allTemplates?.find(
          (t3) => t3.slug === templateSlug
        );
        return match3 ? getItemTitle(match3) : void 0;
      },
      [postType2, templateSlug]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(import_jsx_runtime249.Fragment, { children: templateLabel ?? defaultTemplateLabel });
  }
  var TemplateView = ({
    item,
    field
  }) => {
    const mode = useTemplateFieldMode(item);
    if (!mode || !["block-theme", "classic"].includes(mode)) {
      return null;
    }
    const View4 = mode === "classic" ? ClassicTemplateView : BlockThemeTemplateView;
    return /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(View4, { item, field });
  };

  // packages/fields/build-module/fields/template/index.mjs
  var templateField = {
    id: "template",
    type: "text",
    label: (0, import_i18n32.__)("Template"),
    Edit: TemplateEdit,
    render: TemplateView,
    enableSorting: false,
    filterBy: false
  };
  var template_default = templateField;

  // packages/fields/build-module/fields/parent/index.mjs
  var import_i18n36 = __toESM(require_i18n(), 1);

  // packages/fields/build-module/fields/parent/parent-edit.mjs
  var import_remove_accents = __toESM(require_remove_accents(), 1);
  var import_components7 = __toESM(require_components(), 1);
  var import_data13 = __toESM(require_data(), 1);
  var import_element126 = __toESM(require_element(), 1);
  var import_core_data12 = __toESM(require_core_data(), 1);
  var import_compose9 = __toESM(require_compose(), 1);
  var import_html_entities5 = __toESM(require_html_entities(), 1);
  var import_i18n34 = __toESM(require_i18n(), 1);
  var import_url4 = __toESM(require_url(), 1);

  // packages/fields/build-module/fields/parent/utils.mjs
  var import_html_entities4 = __toESM(require_html_entities(), 1);
  var import_i18n33 = __toESM(require_i18n(), 1);
  function getTitleWithFallbackName(post2) {
    return typeof post2.title === "object" && "rendered" in post2.title && post2.title.rendered ? (0, import_html_entities4.decodeEntities)(post2.title.rendered) : `#${post2?.id} (${(0, import_i18n33.__)("no title")})`;
  }

  // packages/fields/build-module/fields/parent/parent-edit.mjs
  var import_jsx_runtime250 = __toESM(require_jsx_runtime(), 1);
  function buildTermsTree(flatTerms) {
    const flatTermsWithParentAndChildren = flatTerms.map((term) => {
      return {
        children: [],
        ...term
      };
    });
    if (flatTermsWithParentAndChildren.some(
      ({ parent }) => parent === null || parent === void 0
    )) {
      return flatTermsWithParentAndChildren;
    }
    const termsByParent = flatTermsWithParentAndChildren.reduce(
      (acc, term) => {
        const { parent } = term;
        if (!acc[parent]) {
          acc[parent] = [];
        }
        acc[parent].push(term);
        return acc;
      },
      {}
    );
    const fillWithChildren = (terms) => {
      return terms.map((term) => {
        const children = termsByParent[term.id];
        return {
          ...term,
          children: children && children.length ? fillWithChildren(children) : []
        };
      });
    };
    return fillWithChildren(termsByParent["0"] || []);
  }
  var getItemPriority = (name2, searchValue) => {
    const normalizedName = (0, import_remove_accents.default)(name2 || "").toLowerCase();
    const normalizedSearch = (0, import_remove_accents.default)(searchValue || "").toLowerCase();
    if (normalizedName === normalizedSearch) {
      return 0;
    }
    if (normalizedName.startsWith(normalizedSearch)) {
      return normalizedName.length;
    }
    return Infinity;
  };
  function PageAttributesParent({
    data,
    onChangeControl
  }) {
    const [fieldValue, setFieldValue] = (0, import_element126.useState)("");
    const pageId = data.parent;
    const postId2 = data.id;
    const postTypeSlug = data.type;
    const { parentPostTitle, pageItems, isHierarchical } = (0, import_data13.useSelect)(
      (select9) => {
        const { getEntityRecord, getEntityRecords, getPostType } = select9(import_core_data12.store);
        const postTypeInfo = getPostType(postTypeSlug);
        const postIsHierarchical = postTypeInfo?.hierarchical && postTypeInfo.viewable;
        const parentPost = pageId ? getEntityRecord(
          "postType",
          postTypeSlug,
          pageId
        ) : null;
        const query = {
          per_page: 100,
          exclude: postId2,
          parent_exclude: postId2,
          orderby: "menu_order",
          order: "asc",
          _fields: "id,title,parent",
          ...!!fieldValue && {
            // Perform a search by relevance when the field is changed.
            search: fieldValue,
            orderby: "relevance",
            search_columns: ["post_title"]
          }
        };
        return {
          isHierarchical: postIsHierarchical,
          parentPostTitle: parentPost ? getTitleWithFallbackName(parentPost) : "",
          pageItems: postIsHierarchical ? getEntityRecords(
            "postType",
            postTypeSlug,
            query
          ) : null
        };
      },
      [fieldValue, pageId, postId2, postTypeSlug]
    );
    const parentOptions = (0, import_element126.useMemo)(() => {
      const getOptionsFromTree = (tree2, level = 0) => {
        const mappedNodes = tree2.map((treeNode) => [
          {
            value: treeNode.id,
            label: "\u2014 ".repeat(level) + (0, import_html_entities5.decodeEntities)(treeNode.name),
            rawName: treeNode.name
          },
          ...getOptionsFromTree(treeNode.children || [], level + 1)
        ]);
        const sortedNodes = mappedNodes.sort(([a2], [b2]) => {
          const priorityA = getItemPriority(a2.rawName, fieldValue);
          const priorityB = getItemPriority(b2.rawName, fieldValue);
          return priorityA >= priorityB ? 1 : -1;
        });
        return sortedNodes.flat();
      };
      if (!pageItems) {
        return [];
      }
      let tree = pageItems.map((item) => ({
        id: item.id,
        parent: item.parent ?? null,
        name: getTitleWithFallbackName(item)
      }));
      if (!fieldValue) {
        tree = buildTermsTree(tree);
      }
      const opts = getOptionsFromTree(tree);
      const optsHasParent = opts.find((item) => item.value === pageId);
      if (pageId && parentPostTitle && !optsHasParent) {
        opts.unshift({
          value: pageId,
          label: parentPostTitle,
          rawName: ""
        });
      }
      return opts.map((option) => ({
        ...option,
        value: option.value.toString()
      }));
    }, [pageItems, fieldValue, parentPostTitle, pageId]);
    if (!isHierarchical) {
      return null;
    }
    const handleKeydown = (inputValue) => {
      setFieldValue(inputValue);
    };
    const handleChange = (selectedPostId) => {
      if (selectedPostId) {
        return onChangeControl(parseInt(selectedPostId, 10) ?? 0);
      }
      onChangeControl(0);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
      import_components7.ComboboxControl,
      {
        label: (0, import_i18n34.__)("Parent"),
        help: (0, import_i18n34.__)("Choose a parent page."),
        value: pageId?.toString(),
        options: parentOptions,
        onFilterValueChange: (0, import_compose9.debounce)(
          (value) => handleKeydown(value),
          300
        ),
        onChange: handleChange,
        hideLabelFromVision: true
      }
    );
  }
  var ParentEdit = ({
    data,
    field,
    onChange
  }) => {
    const { id } = field;
    const homeUrl = (0, import_data13.useSelect)((select9) => {
      return select9(import_core_data12.store).getEntityRecord("root", "__unstableBase")?.home;
    }, []);
    const onChangeControl = (0, import_element126.useCallback)(
      (newValue) => onChange({
        [id]: newValue
      }),
      [id, onChange]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime250.jsx)("fieldset", { className: "fields-controls__parent", children: /* @__PURE__ */ (0, import_jsx_runtime250.jsxs)("div", { children: [
      (0, import_element126.createInterpolateElement)(
        (0, import_i18n34.sprintf)(
          /* translators: %1$s The home URL of the WordPress installation without the scheme. */
          (0, import_i18n34.__)(
            'Child pages inherit characteristics from their parent, such as URL structure. For instance, if "Pricing" is a child of "Services", its URL would be %1$s<wbr />/services<wbr />/pricing.'
          ),
          (0, import_url4.filterURLForDisplay)(homeUrl).replace(
            /([/.])/g,
            "<wbr />$1"
          )
        ),
        {
          wbr: /* @__PURE__ */ (0, import_jsx_runtime250.jsx)("wbr", {})
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime250.jsx)("p", { children: (0, import_element126.createInterpolateElement)(
        (0, import_i18n34.__)(
          "They also show up as sub-items in the default navigation menu. <a>Learn more.</a>"
        ),
        {
          a: /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
            import_components7.ExternalLink,
            {
              href: (0, import_i18n34.__)(
                "https://wordpress.org/documentation/article/page-post-settings-sidebar/#page-attributes"
              ),
              children: void 0
            }
          )
        }
      ) }),
      /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(
        PageAttributesParent,
        {
          data,
          onChangeControl
        }
      )
    ] }) });
  };

  // packages/fields/build-module/fields/parent/parent-view.mjs
  var import_data14 = __toESM(require_data(), 1);
  var import_core_data13 = __toESM(require_core_data(), 1);
  var import_i18n35 = __toESM(require_i18n(), 1);
  var import_jsx_runtime251 = __toESM(require_jsx_runtime(), 1);
  var ParentView = ({
    item
  }) => {
    const parent = (0, import_data14.useSelect)(
      (select9) => {
        const { getEntityRecord } = select9(import_core_data13.store);
        return item?.parent ? getEntityRecord("postType", item.type, item.parent) : null;
      },
      [item.parent, item.type]
    );
    if (parent) {
      return /* @__PURE__ */ (0, import_jsx_runtime251.jsx)(import_jsx_runtime251.Fragment, { children: getTitleWithFallbackName(parent) });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime251.jsx)(import_jsx_runtime251.Fragment, { children: (0, import_i18n35.__)("None") });
  };

  // packages/fields/build-module/fields/parent/index.mjs
  var parentField = {
    id: "parent",
    type: "text",
    label: (0, import_i18n36.__)("Parent"),
    Edit: ParentEdit,
    render: ParentView,
    enableSorting: true,
    filterBy: false
  };
  var parent_default = parentField;

  // packages/fields/build-module/fields/password/index.mjs
  var import_i18n38 = __toESM(require_i18n(), 1);

  // packages/fields/build-module/fields/utils.mjs
  function hasActionLink(item, action) {
    if (!item._links) {
      return true;
    }
    return !!item._links[action];
  }

  // packages/fields/build-module/fields/password/edit.mjs
  var import_components8 = __toESM(require_components(), 1);
  var import_element127 = __toESM(require_element(), 1);
  var import_i18n37 = __toESM(require_i18n(), 1);
  var import_jsx_runtime252 = __toESM(require_jsx_runtime(), 1);
  function PasswordEdit({
    data,
    onChange,
    field
  }) {
    const [showPassword, setShowPassword] = (0, import_element127.useState)(
      !!field.getValue({ item: data })
    );
    const handleTogglePassword = (value) => {
      setShowPassword(value);
      if (!value) {
        onChange({ password: "" });
      }
    };
    return /* @__PURE__ */ (0, import_jsx_runtime252.jsxs)(
      import_components8.__experimentalVStack,
      {
        as: "fieldset",
        spacing: 4,
        className: "fields-controls__password",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(
            import_components8.CheckboxControl,
            {
              label: (0, import_i18n37.__)("Password protected"),
              help: (0, import_i18n37.__)("Only visible to those who know the password"),
              checked: showPassword,
              onChange: handleTogglePassword
            }
          ),
          showPassword && /* @__PURE__ */ (0, import_jsx_runtime252.jsx)("div", { className: "fields-controls__password-input", children: /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(
            import_components8.TextControl,
            {
              label: (0, import_i18n37.__)("Password"),
              onChange: (value) => onChange({
                password: value
              }),
              value: field.getValue({ item: data }) || "",
              placeholder: (0, import_i18n37.__)("Use a secure password"),
              type: "text",
              maxLength: 255
            }
          ) })
        ]
      }
    );
  }
  var edit_default = PasswordEdit;

  // packages/fields/build-module/fields/password/index.mjs
  var passwordField = {
    id: "password",
    type: "text",
    label: (0, import_i18n38.__)("Password"),
    Edit: edit_default,
    enableSorting: false,
    enableHiding: false,
    isVisible: (item) => item.status !== "private" && hasActionLink(item, "wp:action-publish"),
    filterBy: false
  };
  var password_default = passwordField;

  // packages/fields/build-module/fields/status/index.mjs
  var import_i18n40 = __toESM(require_i18n(), 1);

  // packages/fields/build-module/fields/status/status-view.mjs
  var import_components9 = __toESM(require_components(), 1);

  // packages/fields/build-module/fields/status/status-elements.mjs
  var import_i18n39 = __toESM(require_i18n(), 1);
  var STATUSES = [
    {
      value: "draft",
      label: (0, import_i18n39.__)("Draft"),
      icon: drafts_default,
      description: (0, import_i18n39.__)("Not ready to publish.")
    },
    {
      value: "future",
      label: (0, import_i18n39.__)("Scheduled"),
      icon: scheduled_default,
      description: (0, import_i18n39.__)("Publish automatically on a chosen date.")
    },
    {
      value: "pending",
      label: (0, import_i18n39.__)("Pending Review"),
      icon: pending_default,
      description: (0, import_i18n39.__)("Waiting for review before publishing.")
    },
    {
      value: "private",
      label: (0, import_i18n39.__)("Private"),
      icon: not_allowed_default,
      description: (0, import_i18n39.__)("Only visible to site admins and editors.")
    },
    {
      value: "publish",
      label: (0, import_i18n39.__)("Published"),
      icon: published_default,
      description: (0, import_i18n39.__)("Visible to everyone.")
    },
    { value: "trash", label: (0, import_i18n39.__)("Trash"), icon: trash_default }
  ];
  var status_elements_default = STATUSES;

  // packages/fields/build-module/fields/status/status-view.mjs
  var import_jsx_runtime253 = __toESM(require_jsx_runtime(), 1);
  function StatusView({ item, field }) {
    const currentStatus = field.getValue({ item });
    const status = status_elements_default.find(({ value }) => value === currentStatus);
    const label = status?.label || currentStatus;
    const icon = status?.icon;
    return /* @__PURE__ */ (0, import_jsx_runtime253.jsxs)(import_components9.__experimentalHStack, { alignment: "left", spacing: 0, children: [
      icon && /* @__PURE__ */ (0, import_jsx_runtime253.jsx)("div", { className: "fields-controls__status-icon", children: /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(import_components9.Icon, { icon }) }),
      /* @__PURE__ */ (0, import_jsx_runtime253.jsx)("span", { children: label })
    ] });
  }
  var status_view_default = StatusView;

  // packages/fields/build-module/fields/status/index.mjs
  var OPERATOR_IS_ANY = "isAny";
  var statusField = {
    label: (0, import_i18n40.__)("Status"),
    id: "status",
    type: "text",
    elements: status_elements_default,
    // An auto-draft is a draft that hasn't been saved yet, so treat it as
    // one for display, selection, and filtering.
    getValue: ({ item }) => item.status === "auto-draft" ? "draft" : item.status,
    render: status_view_default,
    Edit: "radio",
    enableSorting: false,
    filterBy: {
      operators: [OPERATOR_IS_ANY]
    }
  };
  var status_default = statusField;

  // packages/fields/build-module/fields/comment-status/index.mjs
  var import_i18n41 = __toESM(require_i18n(), 1);
  var commentStatusField = {
    id: "comment_status",
    label: (0, import_i18n41.__)("Comments"),
    type: "text",
    Edit: "radio",
    enableSorting: false,
    enableHiding: false,
    filterBy: false,
    elements: [
      {
        value: "open",
        label: (0, import_i18n41.__)("Open"),
        description: (0, import_i18n41.__)("Visitors can add new comments and replies.")
      },
      {
        value: "closed",
        label: (0, import_i18n41.__)("Closed"),
        description: (0, import_i18n41.__)(
          "Visitors cannot add new comments or replies. Existing comments remain visible."
        )
      }
    ]
  };
  var comment_status_default = commentStatusField;

  // packages/fields/build-module/fields/ping-status/index.mjs
  var import_i18n42 = __toESM(require_i18n(), 1);
  var import_components10 = __toESM(require_components(), 1);
  var import_jsx_runtime254 = __toESM(require_jsx_runtime(), 1);
  var pingStatusField = {
    id: "ping_status",
    label: (0, import_i18n42.__)("Enable pingbacks & trackbacks"),
    header: (0, import_i18n42.__)("Trackbacks & Pingbacks"),
    type: "boolean",
    description: /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(
      import_components10.ExternalLink,
      {
        href: (0, import_i18n42.__)(
          "https://wordpress.org/documentation/article/trackbacks-and-pingbacks/"
        ),
        children: (0, import_i18n42.__)("Learn more about pingbacks & trackbacks")
      }
    ),
    // The REST API stores the setting as `open` / `closed`; the field
    // exposes it as a boolean so the built-in checkbox control can edit it.
    getValue: ({ item }) => (item.ping_status ?? "open") === "open",
    setValue: ({ value }) => ({
      ping_status: value ? "open" : "closed"
    }),
    render: ({ item, field }) => field.getValue({ item }) ? (0, import_i18n42.__)("Allow") : (0, import_i18n42.__)("Don't allow"),
    enableSorting: false,
    enableHiding: false,
    filterBy: false
  };
  var ping_status_default = pingStatusField;

  // packages/fields/build-module/fields/discussion/index.mjs
  var import_i18n43 = __toESM(require_i18n(), 1);
  var discussionField = {
    id: "discussion",
    label: (0, import_i18n43.__)("Discussion"),
    type: "text",
    render: ({ item }) => {
      const commentsOpen = item.comment_status === "open";
      const pingsOpen = item.ping_status === "open";
      if (commentsOpen && pingsOpen) {
        return (0, import_i18n43.__)("Open");
      }
      if (commentsOpen && !pingsOpen) {
        return (0, import_i18n43.__)("Comments only");
      }
      if (!commentsOpen && pingsOpen) {
        return (0, import_i18n43.__)("Pings only");
      }
      return (0, import_i18n43.__)("Closed");
    },
    filterBy: false
  };
  var discussion_default = discussionField;

  // packages/fields/build-module/fields/date/index.mjs
  var import_i18n45 = __toESM(require_i18n(), 1);

  // packages/fields/build-module/fields/date/date-view.mjs
  var import_i18n44 = __toESM(require_i18n(), 1);
  var import_element128 = __toESM(require_element(), 1);
  var import_date3 = __toESM(require_date(), 1);
  var import_jsx_runtime255 = __toESM(require_jsx_runtime(), 1);
  var getFormattedDate = (dateToDisplay) => (0, import_date3.dateI18n)(
    (0, import_date3.getSettings)().formats.datetimeAbbreviated,
    (0, import_date3.getDate)(dateToDisplay)
  );
  var DateView = ({ item }) => {
    const isDraftOrPrivate = ["draft", "private"].includes(
      item.status ?? ""
    );
    if (isDraftOrPrivate) {
      return (0, import_element128.createInterpolateElement)(
        (0, import_i18n44.sprintf)(
          /* translators: %s: page creation or modification date. */
          (0, import_i18n44.__)("<span>Modified: <time>%s</time></span>"),
          getFormattedDate(item.date ?? null)
        ),
        {
          span: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)("span", {}),
          time: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)("time", {})
        }
      );
    }
    const isScheduled = item.status === "future";
    if (isScheduled) {
      return (0, import_element128.createInterpolateElement)(
        (0, import_i18n44.sprintf)(
          /* translators: %s: page creation date */
          (0, import_i18n44.__)("<span>Scheduled: <time>%s</time></span>"),
          getFormattedDate(item.date ?? null)
        ),
        {
          span: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)("span", {}),
          time: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)("time", {})
        }
      );
    }
    const isPublished = item.status === "publish";
    if (isPublished) {
      return (0, import_element128.createInterpolateElement)(
        (0, import_i18n44.sprintf)(
          /* translators: %s: page creation time */
          (0, import_i18n44.__)("<span>Published: <time>%s</time></span>"),
          getFormattedDate(item.date ?? null)
        ),
        {
          span: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)("span", {}),
          time: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)("time", {})
        }
      );
    }
    const dateToDisplay = (0, import_date3.getDate)(item.modified ?? null) > (0, import_date3.getDate)(item.date ?? null) ? item.modified : item.date;
    const isPending = item.status === "pending";
    if (isPending) {
      return (0, import_element128.createInterpolateElement)(
        (0, import_i18n44.sprintf)(
          /* translators: %s: page creation or modification date. */
          (0, import_i18n44.__)("<span>Modified: <time>%s</time></span>"),
          getFormattedDate(dateToDisplay ?? null)
        ),
        {
          span: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)("span", {}),
          time: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)("time", {})
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime255.jsx)("time", { children: getFormattedDate(item.date ?? null) });
  };
  var date_view_default = DateView;

  // packages/fields/build-module/fields/date/index.mjs
  var dateField = {
    id: "date",
    type: "datetime",
    label: (0, import_i18n45.__)("Date"),
    render: date_view_default,
    isVisible: (item) => hasActionLink(item, "wp:action-publish"),
    filterBy: {
      operators: ["before", "after"]
    }
  };
  var date_default = dateField;

  // packages/fields/build-module/fields/scheduled-date/index.mjs
  var import_i18n46 = __toESM(require_i18n(), 1);
  var scheduledDateField = {
    id: "scheduled_date",
    type: "datetime",
    label: (0, import_i18n46.__)("Scheduled Date"),
    getValue: ({ item }) => item.date,
    setValue: ({ value }) => ({ date: value }),
    isVisible: (item) => item.status === "future",
    Edit: {
      control: "datetime",
      compact: true
    },
    enableHiding: false,
    enableSorting: false,
    filterBy: false
  };
  var scheduled_date_default = scheduledDateField;

  // packages/fields/build-module/fields/last-edited/index.mjs
  var import_i18n48 = __toESM(require_i18n(), 1);

  // packages/fields/build-module/fields/last-edited/last-edited-date-view.mjs
  var import_i18n47 = __toESM(require_i18n(), 1);
  var import_date4 = __toESM(require_date(), 1);
  var import_jsx_runtime256 = __toESM(require_jsx_runtime(), 1);
  function LastEditedDateView({ item }) {
    if (!item.modified) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime256.jsx)(Text, { children: (0, import_i18n47.sprintf)(
      // translators: %s: Human-readable time difference, e.g. "2 days ago".
      (0, import_i18n47.__)("Last edited %s."),
      (0, import_date4.humanTimeDiff)(item.modified)
    ) });
  }

  // packages/fields/build-module/fields/last-edited/index.mjs
  var lastEditedDateField = {
    id: "last_edited_date",
    type: "datetime",
    label: (0, import_i18n48.__)("Last edited"),
    render: LastEditedDateView,
    getValue: ({ item }) => item.modified,
    isVisible: (item) => !!item.modified,
    readOnly: true,
    enableHiding: false,
    enableSorting: false,
    filterBy: false
  };
  var last_edited_default = lastEditedDateField;

  // packages/fields/build-module/fields/author/index.mjs
  var import_i18n50 = __toESM(require_i18n(), 1);
  var import_data16 = __toESM(require_data(), 1);
  var import_core_data15 = __toESM(require_core_data(), 1);

  // packages/fields/build-module/fields/author/author-view.mjs
  var import_i18n49 = __toESM(require_i18n(), 1);
  var import_element129 = __toESM(require_element(), 1);
  var import_components11 = __toESM(require_components(), 1);
  var import_data15 = __toESM(require_data(), 1);
  var import_core_data14 = __toESM(require_core_data(), 1);
  var import_jsx_runtime257 = __toESM(require_jsx_runtime(), 1);
  function AuthorView({ item }) {
    const authorId = item?.author;
    const embeddedAuthorId = item?._embedded?.author?.[0]?.id;
    const shouldFetch = Boolean(
      authorId && (!embeddedAuthorId || authorId !== embeddedAuthorId)
    );
    const author = (0, import_data15.useSelect)(
      (select9) => {
        if (!shouldFetch) {
          return null;
        }
        const { getEntityRecord } = select9(import_core_data14.store);
        return authorId ? getEntityRecord("root", "user", authorId) : null;
      },
      [authorId, shouldFetch]
    );
    const text = author?.name || item?._embedded?.author?.[0]?.name;
    const imageUrl = author?.avatar_urls?.[48] || item?._embedded?.author?.[0]?.avatar_urls?.[48];
    const [isImageLoaded, setIsImageLoaded] = (0, import_element129.useState)(false);
    return /* @__PURE__ */ (0, import_jsx_runtime257.jsxs)(import_components11.__experimentalHStack, { alignment: "left", spacing: 0, children: [
      !!imageUrl && /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(
        "div",
        {
          className: clsx_default("fields-controls__author-avatar", {
            "is-loaded": isImageLoaded
          }),
          children: /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(
            "img",
            {
              onLoad: () => setIsImageLoaded(true),
              alt: (0, import_i18n49.__)("Author avatar"),
              src: imageUrl
            }
          )
        }
      ),
      !imageUrl && /* @__PURE__ */ (0, import_jsx_runtime257.jsx)("div", { className: "fields-controls__author-icon", children: /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(import_components11.Icon, { icon: comment_author_avatar_default }) }),
      /* @__PURE__ */ (0, import_jsx_runtime257.jsx)("span", { className: "fields-controls__author-name", children: text })
    ] });
  }
  var author_view_default = AuthorView;

  // packages/fields/build-module/fields/author/index.mjs
  var authorField = {
    label: (0, import_i18n50.__)("Author"),
    id: "author",
    type: "integer",
    getElements: async () => {
      const authors = await (0, import_data16.resolveSelect)(import_core_data15.store).getEntityRecords(
        "root",
        "user",
        {
          per_page: -1,
          who: "authors",
          _fields: "id,name",
          context: "view"
        }
      ) ?? [];
      return authors.map(({ id, name: name2 }) => ({
        value: id,
        label: name2
      }));
    },
    setValue: ({ value }) => ({ author: Number(value) }),
    render: author_view_default,
    isVisible: (item) => hasActionLink(item, "wp:action-assign-author"),
    filterBy: {
      operators: ["isAny", "isNone"]
    }
  };
  var author_default = authorField;

  // packages/fields/build-module/fields/template-author/index.mjs
  var import_i18n51 = __toESM(require_i18n(), 1);
  var import_data18 = __toESM(require_data(), 1);
  var import_core_data17 = __toESM(require_core_data(), 1);

  // packages/fields/build-module/fields/template-author/view.mjs
  var import_element130 = __toESM(require_element(), 1);
  var import_data17 = __toESM(require_data(), 1);
  var import_core_data16 = __toESM(require_core_data(), 1);
  var import_jsx_runtime258 = __toESM(require_jsx_runtime(), 1);
  function getIconForSource(originalSource) {
    switch (originalSource) {
      case "theme":
        return layout_default;
      case "plugin":
        return plugins_default;
      case "site":
        return globe_default;
      default:
        return comment_author_avatar_default;
    }
  }
  function TemplateAuthorView({
    item
  }) {
    const [isImageLoaded, setIsImageLoaded] = (0, import_element130.useState)(false);
    const originalSource = item.original_source;
    const icon = getIconForSource(originalSource);
    const text = item.author_text;
    const authorId = item.author;
    const imageUrl = (0, import_data17.useSelect)(
      (select9) => {
        if (originalSource === "site") {
          const siteData = select9(import_core_data16.store).getEntityRecord("root", "__unstableBase");
          const logoId = siteData?.site_logo;
          if (!logoId) {
            return void 0;
          }
          return select9(import_core_data16.store).getEntityRecord("postType", "attachment", logoId)?.source_url;
        }
        if (originalSource !== "user" || !authorId) {
          return void 0;
        }
        return select9(import_core_data16.store).getUser(authorId)?.avatar_urls?.[48];
      },
      [originalSource, authorId]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime258.jsxs)(Stack, { direction: "row", align: "center", children: [
      imageUrl && /* @__PURE__ */ (0, import_jsx_runtime258.jsx)(
        "div",
        {
          className: clsx_default("fields-controls__author-avatar", {
            "is-loaded": isImageLoaded
          }),
          children: /* @__PURE__ */ (0, import_jsx_runtime258.jsx)(
            "img",
            {
              onLoad: () => setIsImageLoaded(true),
              alt: "",
              src: imageUrl
            }
          )
        }
      ),
      !imageUrl && /* @__PURE__ */ (0, import_jsx_runtime258.jsx)("div", { className: "fields-controls__author-icon", children: /* @__PURE__ */ (0, import_jsx_runtime258.jsx)(Icon, { icon }) }),
      /* @__PURE__ */ (0, import_jsx_runtime258.jsx)("span", { className: "fields-controls__author-name", children: text })
    ] });
  }

  // packages/fields/build-module/fields/template-author/index.mjs
  async function getAuthorElements(postType2) {
    const records = await (0, import_data18.resolveSelect)(import_core_data17.store).getEntityRecords(
      "postType",
      postType2,
      { per_page: -1, _fields: "id,author_text" }
    );
    const seen = /* @__PURE__ */ new Set();
    const elements2 = [];
    for (const record of records ?? []) {
      const value = record.author_text;
      if (value && !seen.has(value)) {
        seen.add(value);
        elements2.push({ value, label: value });
      }
    }
    return elements2;
  }
  var templateAuthorField = {
    label: (0, import_i18n51.__)("Author"),
    id: "author",
    getValue: ({ item }) => item.author_text,
    render: TemplateAuthorView,
    getElements: () => getAuthorElements("wp_template")
  };
  var templatePartAuthorField = {
    label: (0, import_i18n51.__)("Author"),
    id: "author",
    getValue: ({ item }) => item.author_text,
    render: TemplateAuthorView,
    enableSorting: false,
    filterBy: {
      isPrimary: true
    },
    getElements: () => getAuthorElements("wp_template_part")
  };

  // packages/fields/build-module/fields/notes/index.mjs
  var import_i18n52 = __toESM(require_i18n(), 1);
  var notesField = {
    id: "notesCount",
    label: (0, import_i18n52.__)("Notes"),
    type: "integer",
    enableSorting: false,
    filterBy: false
  };
  var notes_default = notesField;

  // packages/fields/build-module/fields/excerpt/index.mjs
  var import_html_entities6 = __toESM(require_html_entities(), 1);
  var import_i18n53 = __toESM(require_i18n(), 1);
  var import_components12 = __toESM(require_components(), 1);
  var import_jsx_runtime259 = __toESM(require_jsx_runtime(), 1);
  var excerptField = {
    id: "excerpt",
    type: "text",
    label: (0, import_i18n53.__)("Excerpt"),
    placeholder: (0, import_i18n53.__)("Add an excerpt"),
    description: /* @__PURE__ */ (0, import_jsx_runtime259.jsx)(
      import_components12.ExternalLink,
      {
        href: (0, import_i18n53.__)(
          "https://wordpress.org/documentation/article/page-post-settings-sidebar/#excerpt"
        ),
        children: (0, import_i18n53.__)("Learn more about manual excerpts")
      }
    ),
    render: ({ item }) => {
      const excerpt = typeof item.excerpt === "string" ? item.excerpt : item.excerpt?.raw;
      return excerpt ? /* @__PURE__ */ (0, import_jsx_runtime259.jsx)(import_components12.__experimentalText, { align: "left", numberOfLines: 3, truncate: true, children: (0, import_html_entities6.decodeEntities)(excerpt) }) : null;
    },
    Edit: {
      control: "textarea",
      rows: 4
    },
    enableSorting: false,
    filterBy: false
  };
  var excerpt_default = excerptField;

  // packages/fields/build-module/fields/description/index.mjs
  var import_html_entities7 = __toESM(require_html_entities(), 1);
  var import_i18n54 = __toESM(require_i18n(), 1);
  var import_jsx_runtime260 = __toESM(require_jsx_runtime(), 1);
  var isCustomTemplate = (item) => item.source === "custom" && !item.has_theme_file && item.is_custom;
  var getValue = ({ item }) => (0, import_html_entities7.decodeEntities)(item.description || "");
  var render = ({ item }) => {
    const { description } = item;
    return description && /* @__PURE__ */ (0, import_jsx_runtime260.jsx)(Text, { children: (0, import_html_entities7.decodeEntities)(description) });
  };
  var descriptionField = {
    id: "description",
    type: "text",
    label: (0, import_i18n54.__)("Description"),
    placeholder: (0, import_i18n54.__)("Add a description"),
    getValue,
    render,
    Edit: {
      control: "textarea",
      rows: 4
    },
    isVisible: isCustomTemplate,
    enableSorting: false,
    filterBy: false,
    enableGlobalSearch: true
  };
  var readOnlyDescriptionField = {
    id: "description_readonly",
    type: "text",
    label: (0, import_i18n54.__)("Description"),
    getValue,
    render,
    readOnly: true,
    isVisible: (item) => !isCustomTemplate(item) && !!item.description,
    enableSorting: false,
    enableHiding: false,
    filterBy: false
  };
  var description_default = descriptionField;

  // packages/fields/build-module/fields/format/index.mjs
  var import_i18n55 = __toESM(require_i18n(), 1);
  var import_data19 = __toESM(require_data(), 1);
  var import_core_data18 = __toESM(require_core_data(), 1);
  var POST_FORMATS = [
    { id: "aside", caption: (0, import_i18n55.__)("Aside") },
    { id: "audio", caption: (0, import_i18n55.__)("Audio") },
    { id: "chat", caption: (0, import_i18n55.__)("Chat") },
    { id: "gallery", caption: (0, import_i18n55.__)("Gallery") },
    { id: "image", caption: (0, import_i18n55.__)("Image") },
    { id: "link", caption: (0, import_i18n55.__)("Link") },
    { id: "quote", caption: (0, import_i18n55.__)("Quote") },
    { id: "standard", caption: (0, import_i18n55.__)("Standard") },
    { id: "status", caption: (0, import_i18n55.__)("Status") },
    { id: "video", caption: (0, import_i18n55.__)("Video") }
  ].sort((a2, b2) => {
    const normalizedA = a2.caption.toUpperCase();
    const normalizedB = b2.caption.toUpperCase();
    if (normalizedA < normalizedB) {
      return -1;
    }
    if (normalizedA > normalizedB) {
      return 1;
    }
    return 0;
  });
  var formatField = {
    id: "format",
    label: (0, import_i18n55.__)("Format"),
    type: "text",
    Edit: "radio",
    enableSorting: false,
    enableHiding: false,
    filterBy: false,
    getElements: async () => {
      const themeSupports = await (0, import_data19.resolveSelect)(import_core_data18.store).getThemeSupports();
      return POST_FORMATS.filter(
        (f2) => themeSupports?.formats?.includes(f2.id)
      ).map((f2) => ({ value: f2.id, label: f2.caption }));
    }
  };
  var format_default = formatField;

  // packages/fields/build-module/fields/post-content-info/index.mjs
  var import_i18n57 = __toESM(require_i18n(), 1);

  // packages/fields/build-module/fields/post-content-info/post-content-info-view.mjs
  var import_components13 = __toESM(require_components(), 1);
  var import_i18n56 = __toESM(require_i18n(), 1);
  var import_wordcount = __toESM(require_wordcount(), 1);
  var import_date5 = __toESM(require_date(), 1);
  var import_element131 = __toESM(require_element(), 1);
  var import_jsx_runtime261 = __toESM(require_jsx_runtime(), 1);
  var AVERAGE_READING_RATE = 189;
  function PostContentInfoView({
    item
  }) {
    let content = "";
    if (typeof item.content === "string") {
      content = item.content;
    } else if (typeof item.content === "function") {
      content = item.content(item);
    }
    const wordCountType = (0, import_i18n56._x)(
      "words",
      "Word count type. Do not translate!"
    );
    const wordsCounted = (0, import_element131.useMemo)(
      () => content ? (0, import_wordcount.count)(content, wordCountType) : 0,
      [content, wordCountType]
    );
    const modified = item.modified;
    if (!wordsCounted && !modified) {
      return null;
    }
    let contentInfoText;
    if (wordsCounted) {
      const readingTime = Math.round(wordsCounted / AVERAGE_READING_RATE);
      const wordsCountText = (0, import_i18n56.sprintf)(
        // translators: %s: the number of words in the post.
        (0, import_i18n56._n)("%s word", "%s words", wordsCounted),
        wordsCounted.toLocaleString()
      );
      const minutesText = readingTime <= 1 ? (0, import_i18n56.__)("1 minute") : (0, import_i18n56.sprintf)(
        /* translators: %s: the number of minutes to read the post. */
        (0, import_i18n56._n)("%s minute", "%s minutes", readingTime),
        readingTime.toLocaleString()
      );
      contentInfoText = (0, import_i18n56.sprintf)(
        /* translators: 1: How many words a post has. 2: the number of minutes to read the post (e.g. 130 words, 2 minutes read time.) */
        (0, import_i18n56.__)("%1$s, %2$s read time."),
        wordsCountText,
        minutesText
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime261.jsxs)(import_components13.__experimentalVStack, { spacing: 1, children: [
      contentInfoText && /* @__PURE__ */ (0, import_jsx_runtime261.jsx)(import_components13.__experimentalText, { variant: "muted", children: contentInfoText }),
      modified && /* @__PURE__ */ (0, import_jsx_runtime261.jsx)(import_components13.__experimentalText, { variant: "muted", children: (0, import_i18n56.sprintf)(
        // translators: %s: Human-readable time difference, e.g. "2 days ago".
        (0, import_i18n56.__)("Last edited %s."),
        (0, import_date5.humanTimeDiff)(modified)
      ) })
    ] });
  }

  // packages/fields/build-module/fields/post-content-info/index.mjs
  var postContentInfoField = {
    label: (0, import_i18n57.__)("Post content information"),
    id: "post-content-info",
    type: "text",
    readOnly: true,
    render: PostContentInfoView,
    enableSorting: false,
    enableHiding: false,
    filterBy: false
  };
  var post_content_info_default = postContentInfoField;

  // packages/fields/build-module/fields/sticky/index.mjs
  var import_i18n58 = __toESM(require_i18n(), 1);
  var stickyField = {
    id: "sticky",
    type: "boolean",
    label: (0, import_i18n58.__)("Sticky"),
    description: (0, import_i18n58.__)("Pin this post to the top of the blog."),
    enableSorting: false,
    enableHiding: false,
    isVisible: (item) => hasActionLink(item, "wp:action-sticky"),
    filterBy: false
  };
  var sticky_default = stickyField;

  // packages/fields/build-module/fields/posts-per-page/index.mjs
  var import_i18n59 = __toESM(require_i18n(), 1);
  var postsPerPageField = {
    id: "posts_per_page",
    type: "integer",
    label: (0, import_i18n59.__)("Posts per page"),
    description: (0, import_i18n59.__)(
      "Set the default number of posts to display on blog pages, including categories and tags. Some templates may override this setting."
    ),
    getValue: ({ item }) => item.posts_per_page ?? 1,
    setValue: ({ value }) => ({ posts_per_page: value }),
    isValid: { min: 1 },
    enableSorting: false,
    enableHiding: false,
    filterBy: false
  };
  var posts_per_page_default = postsPerPageField;

  // packages/fields/build-module/fields/site-discussion/index.mjs
  var import_i18n60 = __toESM(require_i18n(), 1);
  var siteDiscussionField = {
    id: "default_comment_status",
    type: "text",
    label: (0, import_i18n60.__)("Discussion"),
    Edit: "radio",
    getValue: ({ item }) => item.default_comment_status || "",
    setValue: ({ value }) => ({
      default_comment_status: value || null
    }),
    render: ({ item }) => {
      return item.default_comment_status === "open" ? (0, import_i18n60.__)("Comments open") : (0, import_i18n60.__)("Comments closed");
    },
    elements: [
      {
        value: "open",
        label: (0, import_i18n60.__)("Open"),
        description: (0, import_i18n60.__)("Visitors can add new comments and replies.")
      },
      {
        value: "",
        label: (0, import_i18n60.__)("Closed"),
        description: (0, import_i18n60.__)(
          "Visitors cannot add new comments or replies. Existing comments remain visible."
        )
      }
    ],
    enableSorting: false,
    enableHiding: false,
    filterBy: false
  };
  var site_discussion_default = siteDiscussionField;

  // packages/fields/build-module/fields/posts-page-title/index.mjs
  var import_i18n61 = __toESM(require_i18n(), 1);
  var postsPageTitleField = {
    id: "posts_page_title",
    type: "text",
    label: (0, import_i18n61.__)("Blog title"),
    description: (0, import_i18n61.__)(
      "Set the Posts Page title. Appears in search results, and when the page is shared on social media."
    ),
    getValue: ({ item }) => {
      const title = item.title;
      if (typeof title === "string") {
        return title;
      }
      return title?.raw ?? "";
    },
    setValue: ({ value }) => ({ title: value }),
    enableSorting: false,
    enableHiding: false,
    filterBy: false
  };
  var posts_page_title_default = postsPageTitleField;

  // packages/fields/build-module/actions/view-post.mjs
  var import_i18n62 = __toESM(require_i18n(), 1);
  var viewPost = {
    id: "view-post",
    label: (0, import_i18n62._x)("View", "verb"),
    isPrimary: true,
    icon: external_default,
    isEligible(post2) {
      return post2.status !== "trash";
    },
    callback(posts, { onActionPerformed }) {
      const post2 = posts[0];
      window.open(post2?.link, "_blank");
      if (onActionPerformed) {
        onActionPerformed(posts);
      }
    }
  };
  var view_post_default = viewPost;

  // packages/fields/build-module/actions/reorder-page.mjs
  var import_data20 = __toESM(require_data(), 1);
  var import_core_data19 = __toESM(require_core_data(), 1);
  var import_i18n63 = __toESM(require_i18n(), 1);
  var import_notices3 = __toESM(require_notices(), 1);
  var import_element132 = __toESM(require_element(), 1);
  var import_components14 = __toESM(require_components(), 1);
  var import_jsx_runtime262 = __toESM(require_jsx_runtime(), 1);
  function isItemValid(item) {
    return typeof item.menu_order === "number" && Number.isInteger(item.menu_order);
  }
  function ReorderModal({
    items,
    closeModal: closeModal2,
    onActionPerformed
  }) {
    const [item, setItem] = (0, import_element132.useState)(items[0]);
    const { editEntityRecord, saveEditedEntityRecord } = (0, import_data20.useDispatch)(import_core_data19.store);
    const { createSuccessNotice, createErrorNotice } = (0, import_data20.useDispatch)(import_notices3.store);
    const isValid2 = isItemValid(item);
    async function onOrder(event) {
      event.preventDefault();
      if (!isValid2) {
        return;
      }
      try {
        await editEntityRecord("postType", item.type, item.id, {
          menu_order: item.menu_order
        });
        closeModal2?.();
        await saveEditedEntityRecord("postType", item.type, item.id, {
          throwOnError: true
        });
        createSuccessNotice((0, import_i18n63.__)("Order updated."), {
          type: "snackbar"
        });
        onActionPerformed?.(items);
      } catch (error2) {
        const typedError = error2;
        const errorMessage = typedError.message && typedError.code !== "unknown_error" ? typedError.message : (0, import_i18n63.__)("An error occurred while updating the order");
        createErrorNotice(errorMessage, {
          type: "snackbar"
        });
      }
    }
    return /* @__PURE__ */ (0, import_jsx_runtime262.jsx)("form", { onSubmit: onOrder, children: /* @__PURE__ */ (0, import_jsx_runtime262.jsxs)(import_components14.__experimentalVStack, { spacing: "5", children: [
      /* @__PURE__ */ (0, import_jsx_runtime262.jsx)("div", { children: (0, import_i18n63.__)(
        "Determines the order of pages. Pages with the same order value are sorted alphabetically. Negative order values are supported."
      ) }),
      /* @__PURE__ */ (0, import_jsx_runtime262.jsx)(
        import_components14.__experimentalInputControl,
        {
          label: (0, import_i18n63.__)("Order"),
          type: "number",
          value: typeof item.menu_order === "number" && Number.isInteger(item.menu_order) ? String(item.menu_order) : "",
          onChange: (value) => {
            const parsed = parseInt(value, 10);
            setItem({
              ...item,
              menu_order: isNaN(parsed) ? void 0 : parsed
            });
          }
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime262.jsxs)(import_components14.__experimentalHStack, { justify: "right", children: [
        /* @__PURE__ */ (0, import_jsx_runtime262.jsx)(
          import_components14.Button,
          {
            __next40pxDefaultSize: true,
            variant: "tertiary",
            onClick: () => {
              closeModal2?.();
            },
            children: (0, import_i18n63.__)("Cancel")
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime262.jsx)(
          import_components14.Button,
          {
            __next40pxDefaultSize: true,
            variant: "primary",
            type: "submit",
            accessibleWhenDisabled: true,
            disabled: !isValid2,
            children: (0, import_i18n63.__)("Save")
          }
        )
      ] })
    ] }) });
  }
  var reorderPage = {
    id: "order-pages",
    label: (0, import_i18n63.__)("Order\u2026"),
    modalHeader: (0, import_i18n63.__)("Order"),
    isEligible({ status }) {
      return status !== "trash";
    },
    modalFocusOnMount: "firstContentElement",
    RenderModal: ReorderModal
  };
  var reorder_page_default = reorderPage;

  // packages/fields/build-module/actions/duplicate-post.mjs
  var import_data21 = __toESM(require_data(), 1);
  var import_core_data20 = __toESM(require_core_data(), 1);
  var import_i18n64 = __toESM(require_i18n(), 1);
  var import_notices4 = __toESM(require_notices(), 1);
  var import_element133 = __toESM(require_element(), 1);
  var import_components15 = __toESM(require_components(), 1);
  var import_jsx_runtime263 = __toESM(require_jsx_runtime(), 1);
  var duplicatePost = {
    id: "duplicate-post",
    label: (0, import_i18n64._x)("Duplicate\u2026", "action label"),
    modalHeader: (0, import_i18n64._x)("Duplicate", "action label"),
    isEligible({ status }) {
      return status !== "trash";
    },
    modalFocusOnMount: "firstContentElement",
    RenderModal: ({ items, closeModal: closeModal2, onActionPerformed }) => {
      const [item, setItem] = (0, import_element133.useState)({
        ...items[0],
        title: (0, import_i18n64.sprintf)(
          /* translators: %s: Existing post title */
          (0, import_i18n64._x)("%s (Copy)", "post"),
          getItemTitle(items[0])
        )
      });
      const [isCreatingPage, setIsCreatingPage] = (0, import_element133.useState)(false);
      const { saveEntityRecord } = (0, import_data21.useDispatch)(import_core_data20.store);
      const { createSuccessNotice, createErrorNotice } = (0, import_data21.useDispatch)(import_notices4.store);
      async function createPage(event) {
        event.preventDefault();
        if (isCreatingPage) {
          return;
        }
        const newItemObject = {
          status: "draft",
          title: item.title,
          slug: item.title || (0, import_i18n64.__)("No title"),
          comment_status: item.comment_status,
          content: typeof item.content === "string" ? item.content : item.content.raw,
          excerpt: typeof item.excerpt === "string" ? item.excerpt : item.excerpt?.raw,
          meta: item.meta,
          parent: item.parent,
          password: item.password,
          template: item.template,
          format: item.format,
          featured_media: item.featured_media,
          menu_order: item.menu_order,
          ping_status: item.ping_status
        };
        const assignablePropertiesPrefix = "wp:action-assign-";
        const assignableProperties = Object.keys(item?._links || {}).filter(
          (property) => property.startsWith(assignablePropertiesPrefix)
        ).map(
          (property) => property.slice(assignablePropertiesPrefix.length)
        );
        assignableProperties.forEach((property) => {
          if (item.hasOwnProperty(property)) {
            newItemObject[property] = item[property];
          }
        });
        setIsCreatingPage(true);
        try {
          const newItem = await saveEntityRecord(
            "postType",
            item.type,
            newItemObject,
            { throwOnError: true }
          );
          createSuccessNotice(
            (0, import_i18n64.sprintf)(
              // translators: %s: Title of the created post, e.g: "Hello world".
              (0, import_i18n64.__)('"%s" successfully created.'),
              getItemTitle(newItem)
            ),
            {
              id: "duplicate-post-action",
              type: "snackbar"
            }
          );
          if (onActionPerformed) {
            onActionPerformed([newItem]);
          }
        } catch (error2) {
          const typedError = error2;
          const errorMessage = typedError.message && typedError.code !== "unknown_error" ? typedError.message : (0, import_i18n64.__)("An error occurred while duplicating the page.");
          createErrorNotice(errorMessage, {
            type: "snackbar"
          });
        } finally {
          setIsCreatingPage(false);
          closeModal2?.();
        }
      }
      return /* @__PURE__ */ (0, import_jsx_runtime263.jsx)("form", { onSubmit: createPage, children: /* @__PURE__ */ (0, import_jsx_runtime263.jsxs)(import_components15.__experimentalVStack, { spacing: 3, children: [
        /* @__PURE__ */ (0, import_jsx_runtime263.jsx)(
          import_components15.__experimentalInputControl,
          {
            label: (0, import_i18n64.__)("Title"),
            placeholder: (0, import_i18n64.__)("No title"),
            value: getItemTitle(item),
            onChange: (value) => setItem((prev) => ({
              ...prev,
              title: value || (0, import_i18n64.__)("No title")
            }))
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime263.jsxs)(import_components15.__experimentalHStack, { spacing: 2, justify: "end", children: [
          /* @__PURE__ */ (0, import_jsx_runtime263.jsx)(
            import_components15.Button,
            {
              variant: "tertiary",
              onClick: closeModal2,
              __next40pxDefaultSize: true,
              children: (0, import_i18n64.__)("Cancel")
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime263.jsx)(
            import_components15.Button,
            {
              variant: "primary",
              type: "submit",
              isBusy: isCreatingPage,
              "aria-disabled": isCreatingPage,
              __next40pxDefaultSize: true,
              children: (0, import_i18n64._x)("Duplicate", "action label")
            }
          )
        ] })
      ] }) });
    }
  };
  var duplicate_post_default = duplicatePost;

  // packages/fields/build-module/actions/rename-post.mjs
  var import_data22 = __toESM(require_data(), 1);
  var import_core_data21 = __toESM(require_core_data(), 1);
  var import_i18n65 = __toESM(require_i18n(), 1);
  var import_element134 = __toESM(require_element(), 1);
  var import_patterns3 = __toESM(require_patterns(), 1);
  var import_components16 = __toESM(require_components(), 1);
  var import_notices5 = __toESM(require_notices(), 1);
  var import_jsx_runtime264 = __toESM(require_jsx_runtime(), 1);
  var { PATTERN_TYPES: PATTERN_TYPES3 } = unlock4(import_patterns3.privateApis);
  var renamePost = {
    id: "rename-post",
    label: (0, import_i18n65.__)("Rename\u2026"),
    modalHeader: (0, import_i18n65.__)("Rename"),
    modalFocusOnMount: "firstContentElement",
    isEligible(post2) {
      if (post2.status === "trash") {
        return false;
      }
      if (!["wp_template", "wp_template_part"].includes(post2.type)) {
        return post2.permissions?.update;
      }
      if (isTemplate(post2)) {
        return isTemplateRemovable(post2) && post2.is_custom && post2.permissions?.update;
      }
      if (isTemplatePart(post2)) {
        return post2.source === "custom" && !post2?.has_theme_file && post2.permissions?.update;
      }
      return post2.type === PATTERN_TYPES3.user && post2.permissions?.update;
    },
    RenderModal: ({ items, closeModal: closeModal2, onActionPerformed }) => {
      const [item] = items;
      const [title, setTitle] = (0, import_element134.useState)(() => getItemTitle(item, ""));
      const { editEntityRecord, saveEditedEntityRecord } = (0, import_data22.useDispatch)(import_core_data21.store);
      const { createSuccessNotice, createErrorNotice } = (0, import_data22.useDispatch)(import_notices5.store);
      async function onRename(event) {
        event.preventDefault();
        try {
          await editEntityRecord("postType", item.type, item.id, {
            title
          });
          setTitle("");
          closeModal2?.();
          await saveEditedEntityRecord("postType", item.type, item.id, {
            throwOnError: true
          });
          createSuccessNotice((0, import_i18n65.__)("Name updated"), {
            type: "snackbar"
          });
          onActionPerformed?.(items);
        } catch (error2) {
          const typedError = error2;
          const errorMessage = typedError.message && typedError.code !== "unknown_error" ? typedError.message : (0, import_i18n65.__)("An error occurred while updating the name");
          createErrorNotice(errorMessage, { type: "snackbar" });
        }
      }
      return /* @__PURE__ */ (0, import_jsx_runtime264.jsx)("form", { onSubmit: onRename, children: /* @__PURE__ */ (0, import_jsx_runtime264.jsxs)(import_components16.__experimentalVStack, { spacing: "5", children: [
        /* @__PURE__ */ (0, import_jsx_runtime264.jsx)(
          import_components16.TextControl,
          {
            label: (0, import_i18n65.__)("Name"),
            value: title,
            onChange: setTitle,
            required: true
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime264.jsxs)(import_components16.__experimentalHStack, { justify: "right", children: [
          /* @__PURE__ */ (0, import_jsx_runtime264.jsx)(
            import_components16.Button,
            {
              __next40pxDefaultSize: true,
              variant: "tertiary",
              onClick: () => {
                closeModal2?.();
              },
              children: (0, import_i18n65.__)("Cancel")
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime264.jsx)(
            import_components16.Button,
            {
              __next40pxDefaultSize: true,
              variant: "primary",
              type: "submit",
              children: (0, import_i18n65.__)("Save")
            }
          )
        ] })
      ] }) });
    }
  };
  var rename_post_default = renamePost;

  // packages/fields/build-module/actions/reset-post.mjs
  var import_data23 = __toESM(require_data(), 1);
  var import_core_data22 = __toESM(require_core_data(), 1);
  var import_i18n66 = __toESM(require_i18n(), 1);
  var import_notices6 = __toESM(require_notices(), 1);
  var import_element135 = __toESM(require_element(), 1);
  var import_blocks4 = __toESM(require_blocks(), 1);
  var import_components17 = __toESM(require_components(), 1);
  var import_url5 = __toESM(require_url(), 1);
  var import_api_fetch = __toESM(require_api_fetch(), 1);
  var import_jsx_runtime265 = __toESM(require_jsx_runtime(), 1);
  var isTemplateRevertable2 = (templateOrTemplatePart) => {
    if (!templateOrTemplatePart) {
      return false;
    }
    return templateOrTemplatePart.source === "custom" && (Boolean(templateOrTemplatePart?.plugin) || templateOrTemplatePart?.has_theme_file);
  };
  var revertTemplate = async (template2, { allowUndo = true } = {}) => {
    const noticeId = "edit-site-template-reverted";
    (0, import_data23.dispatch)(import_notices6.store).removeNotice(noticeId);
    if (!isTemplateRevertable2(template2)) {
      (0, import_data23.dispatch)(import_notices6.store).createErrorNotice(
        (0, import_i18n66.__)("This template is not revertable."),
        {
          type: "snackbar"
        }
      );
      return;
    }
    try {
      const templateEntityConfig = (0, import_data23.select)(import_core_data22.store).getEntityConfig(
        "postType",
        template2.type
      );
      if (!templateEntityConfig) {
        (0, import_data23.dispatch)(import_notices6.store).createErrorNotice(
          (0, import_i18n66.__)(
            "The editor has encountered an unexpected error. Please reload."
          ),
          { type: "snackbar" }
        );
        return;
      }
      const fileTemplatePath = (0, import_url5.addQueryArgs)(
        `${templateEntityConfig.baseURL}/${template2.id}`,
        { context: "edit", source: template2.origin }
      );
      const fileTemplate = await (0, import_api_fetch.default)({
        path: fileTemplatePath
      });
      if (!fileTemplate) {
        (0, import_data23.dispatch)(import_notices6.store).createErrorNotice(
          (0, import_i18n66.__)(
            "The editor has encountered an unexpected error. Please reload."
          ),
          { type: "snackbar" }
        );
        return;
      }
      const serializeBlocks = ({ blocks: blocksForSerialization = [] }) => (0, import_blocks4.__unstableSerializeAndClean)(blocksForSerialization);
      const edited = (0, import_data23.select)(import_core_data22.store).getEditedEntityRecord(
        "postType",
        template2.type,
        template2.id
      );
      (0, import_data23.dispatch)(import_core_data22.store).editEntityRecord(
        "postType",
        template2.type,
        template2.id,
        {
          content: serializeBlocks,
          // Required to make the `undo` behave correctly.
          blocks: edited.blocks,
          // Required to revert the blocks in the editor.
          source: "custom"
          // required to avoid turning the editor into a dirty state
        },
        {
          undoIgnore: true
          // Required to merge this edit with the last undo level.
        }
      );
      const blocks = (0, import_blocks4.parse)(fileTemplate?.content?.raw);
      (0, import_data23.dispatch)(import_core_data22.store).editEntityRecord(
        "postType",
        template2.type,
        fileTemplate.id,
        {
          content: serializeBlocks,
          blocks,
          source: "theme"
        }
      );
      if (allowUndo) {
        const undoRevert = () => {
          (0, import_data23.dispatch)(import_core_data22.store).editEntityRecord(
            "postType",
            template2.type,
            edited.id,
            {
              content: serializeBlocks,
              blocks: edited.blocks,
              source: "custom"
            }
          );
        };
        (0, import_data23.dispatch)(import_notices6.store).createSuccessNotice(
          (0, import_i18n66.__)("Template reset."),
          {
            type: "snackbar",
            id: noticeId,
            actions: [
              {
                label: (0, import_i18n66.__)("Undo"),
                onClick: undoRevert
              }
            ]
          }
        );
      }
    } catch (error2) {
      const errorMessage = error2.message && error2.code !== "unknown_error" ? error2.message : (0, import_i18n66.__)("Template revert failed. Please reload.");
      (0, import_data23.dispatch)(import_notices6.store).createErrorNotice(errorMessage, {
        type: "snackbar"
      });
    }
  };
  var resetPostAction = {
    id: "reset-post",
    label: (0, import_i18n66.__)("Reset\u2026"),
    isEligible: (item) => {
      return isTemplateOrTemplatePart(item) && item?.source === "custom" && (Boolean(item.type === "wp_template" && item?.plugin) || item?.has_theme_file);
    },
    icon: backup_default,
    supportsBulk: true,
    hideModalHeader: true,
    modalFocusOnMount: "firstContentElement",
    RenderModal: ({ items, closeModal: closeModal2, onActionPerformed }) => {
      const [isBusy, setIsBusy] = (0, import_element135.useState)(false);
      const { saveEditedEntityRecord } = (0, import_data23.useDispatch)(import_core_data22.store);
      const { createSuccessNotice, createErrorNotice } = (0, import_data23.useDispatch)(import_notices6.store);
      const onConfirm = async () => {
        try {
          for (const template2 of items) {
            await revertTemplate(template2, {
              allowUndo: false
            });
            await saveEditedEntityRecord(
              "postType",
              template2.type,
              template2.id
            );
          }
          createSuccessNotice(
            items.length > 1 ? (0, import_i18n66.sprintf)(
              /* translators: %d: The number of items. */
              (0, import_i18n66.__)("%d items reset."),
              items.length
            ) : (0, import_i18n66.sprintf)(
              /* translators: %s: The template/part's name. */
              (0, import_i18n66.__)('"%s" reset.'),
              getItemTitle(items[0])
            ),
            {
              type: "snackbar",
              id: "revert-template-action"
            }
          );
        } catch (error2) {
          let fallbackErrorMessage;
          if (items[0].type === "wp_template") {
            fallbackErrorMessage = items.length === 1 ? (0, import_i18n66.__)(
              "An error occurred while reverting the template."
            ) : (0, import_i18n66.__)(
              "An error occurred while reverting the templates."
            );
          } else {
            fallbackErrorMessage = items.length === 1 ? (0, import_i18n66.__)(
              "An error occurred while reverting the template part."
            ) : (0, import_i18n66.__)(
              "An error occurred while reverting the template parts."
            );
          }
          const typedError = error2;
          const errorMessage = typedError.message && typedError.code !== "unknown_error" ? typedError.message : fallbackErrorMessage;
          createErrorNotice(errorMessage, { type: "snackbar" });
        }
      };
      return /* @__PURE__ */ (0, import_jsx_runtime265.jsxs)(import_components17.__experimentalVStack, { spacing: "5", children: [
        /* @__PURE__ */ (0, import_jsx_runtime265.jsx)(import_components17.__experimentalText, { children: (0, import_i18n66.__)("Reset to default and clear all customizations?") }),
        /* @__PURE__ */ (0, import_jsx_runtime265.jsxs)(import_components17.__experimentalHStack, { justify: "right", children: [
          /* @__PURE__ */ (0, import_jsx_runtime265.jsx)(
            import_components17.Button,
            {
              __next40pxDefaultSize: true,
              variant: "tertiary",
              onClick: closeModal2,
              disabled: isBusy,
              accessibleWhenDisabled: true,
              children: (0, import_i18n66.__)("Cancel")
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime265.jsx)(
            import_components17.Button,
            {
              __next40pxDefaultSize: true,
              variant: "primary",
              onClick: async () => {
                setIsBusy(true);
                await onConfirm();
                onActionPerformed?.(items);
                setIsBusy(false);
                closeModal2?.();
              },
              isBusy,
              disabled: isBusy,
              accessibleWhenDisabled: true,
              children: (0, import_i18n66.__)("Reset")
            }
          )
        ] })
      ] });
    }
  };
  var reset_post_default = resetPostAction;

  // packages/fields/build-module/actions/duplicate-pattern.mjs
  var import_i18n67 = __toESM(require_i18n(), 1);
  var import_patterns4 = __toESM(require_patterns(), 1);
  var import_jsx_runtime266 = __toESM(require_jsx_runtime(), 1);
  var { CreatePatternModalContents, useDuplicatePatternProps } = unlock4(import_patterns4.privateApis);
  var duplicatePattern = {
    id: "duplicate-pattern",
    label: (0, import_i18n67._x)("Duplicate\u2026", "action label"),
    isEligible: (item) => item.type !== "wp_template_part",
    modalHeader: (0, import_i18n67._x)("Duplicate pattern", "action label"),
    modalFocusOnMount: "firstContentElement",
    RenderModal: ({ items, closeModal: closeModal2 }) => {
      const [item] = items;
      const duplicatedProps = useDuplicatePatternProps({
        pattern: item,
        onSuccess: () => closeModal2?.()
      });
      return /* @__PURE__ */ (0, import_jsx_runtime266.jsx)(
        CreatePatternModalContents,
        {
          onClose: closeModal2,
          confirmLabel: (0, import_i18n67._x)("Duplicate", "action label"),
          ...duplicatedProps
        }
      );
    }
  };
  var duplicate_pattern_default = duplicatePattern;

  // node_modules/tslib/tslib.es6.mjs
  var __assign = function() {
    __assign = Object.assign || function __assign2(t3) {
      for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
        s2 = arguments[i2];
        for (var p4 in s2) if (Object.prototype.hasOwnProperty.call(s2, p4)) t3[p4] = s2[p4];
      }
      return t3;
    };
    return __assign.apply(this, arguments);
  };

  // node_modules/lower-case/dist.es2015/index.js
  function lowerCase(str3) {
    return str3.toLowerCase();
  }

  // node_modules/no-case/dist.es2015/index.js
  var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];
  var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;
  function noCase(input, options) {
    if (options === void 0) {
      options = {};
    }
    var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d;
    var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0");
    var start2 = 0;
    var end = result.length;
    while (result.charAt(start2) === "\0")
      start2++;
    while (result.charAt(end - 1) === "\0")
      end--;
    return result.slice(start2, end).split("\0").map(transform).join(delimiter);
  }
  function replace(input, re2, value) {
    if (re2 instanceof RegExp)
      return input.replace(re2, value);
    return re2.reduce(function(input2, re3) {
      return input2.replace(re3, value);
    }, input);
  }

  // node_modules/upper-case-first/dist.es2015/index.js
  function upperCaseFirst(input) {
    return input.charAt(0).toUpperCase() + input.substr(1);
  }

  // node_modules/capital-case/dist.es2015/index.js
  function capitalCaseTransform(input) {
    return upperCaseFirst(input.toLowerCase());
  }
  function capitalCase(input, options) {
    if (options === void 0) {
      options = {};
    }
    return noCase(input, __assign({ delimiter: " ", transform: capitalCaseTransform }, options));
  }

  // node_modules/dot-case/dist.es2015/index.js
  function dotCase(input, options) {
    if (options === void 0) {
      options = {};
    }
    return noCase(input, __assign({ delimiter: "." }, options));
  }

  // node_modules/param-case/dist.es2015/index.js
  function paramCase(input, options) {
    if (options === void 0) {
      options = {};
    }
    return dotCase(input, __assign({ delimiter: "-" }, options));
  }

  // node_modules/client-zip/index.js
  "stream" in Blob.prototype || Object.defineProperty(Blob.prototype, "stream", { value() {
    return new Response(this).body;
  } }), "setBigUint64" in DataView.prototype || Object.defineProperty(DataView.prototype, "setBigUint64", { value(e2, n2, t3) {
    const i2 = Number(0xffffffffn & n2), r4 = Number(n2 >> 32n);
    this.setUint32(e2 + (t3 ? 0 : 4), i2, t3), this.setUint32(e2 + (t3 ? 4 : 0), r4, t3);
  } });
  var e = (e2) => new DataView(new ArrayBuffer(e2));
  var n = (e2) => new Uint8Array(e2.buffer || e2);
  var t = (e2) => new TextEncoder().encode(String(e2));
  var i = (e2) => Math.min(4294967295, Number(e2));
  var r2 = (e2) => Math.min(65535, Number(e2));
  function f(e2, i2) {
    if (void 0 === i2 || i2 instanceof Date || (i2 = new Date(i2)), e2 instanceof File) return { isFile: 1, t: i2 || new Date(e2.lastModified), i: e2.stream() };
    if (e2 instanceof Response) return { isFile: 1, t: i2 || new Date(e2.headers.get("Last-Modified") || Date.now()), i: e2.body };
    if (void 0 === i2) i2 = /* @__PURE__ */ new Date();
    else if (isNaN(i2)) throw new Error("Invalid modification date.");
    if (void 0 === e2) return { isFile: 0, t: i2 };
    if ("string" == typeof e2) return { isFile: 1, t: i2, i: t(e2) };
    if (e2 instanceof Blob) return { isFile: 1, t: i2, i: e2.stream() };
    if (e2 instanceof Uint8Array || e2 instanceof ReadableStream) return { isFile: 1, t: i2, i: e2 };
    if (e2 instanceof ArrayBuffer || ArrayBuffer.isView(e2)) return { isFile: 1, t: i2, i: n(e2) };
    if (Symbol.asyncIterator in e2) return { isFile: 1, t: i2, i: o(e2[Symbol.asyncIterator]()) };
    throw new TypeError("Unsupported input format.");
  }
  function o(e2, n2 = e2) {
    return new ReadableStream({ async pull(n3) {
      let t3 = 0;
      for (; n3.desiredSize > t3; ) {
        const i2 = await e2.next();
        if (!i2.value) {
          n3.close();
          break;
        }
        {
          const e3 = a(i2.value);
          n3.enqueue(e3), t3 += e3.byteLength;
        }
      }
    }, cancel(e3) {
      n2.throw?.(e3);
    } });
  }
  function a(e2) {
    return "string" == typeof e2 ? t(e2) : e2 instanceof Uint8Array ? e2 : n(e2);
  }
  function s(e2, i2, r4) {
    let [f2, o3] = (function(e3) {
      return e3 ? e3 instanceof Uint8Array ? [e3, 1] : ArrayBuffer.isView(e3) || e3 instanceof ArrayBuffer ? [n(e3), 1] : [t(e3), 0] : [void 0, 0];
    })(i2);
    if (e2 instanceof File) return { o: d(f2 || t(e2.name)), u: BigInt(e2.size), l: o3 };
    if (e2 instanceof Response) {
      const n2 = e2.headers.get("content-disposition"), i3 = n2 && n2.match(/;\s*filename\*?=["']?(.*?)["']?$/i), a2 = i3 && i3[1] || e2.url && new URL(e2.url).pathname.split("/").findLast(Boolean), s2 = a2 && decodeURIComponent(a2), u2 = r4 || +e2.headers.get("content-length");
      return { o: d(f2 || t(s2)), u: BigInt(u2), l: o3 };
    }
    return f2 = d(f2, void 0 !== e2 || void 0 !== r4), "string" == typeof e2 ? { o: f2, u: BigInt(t(e2).length), l: o3 } : e2 instanceof Blob ? { o: f2, u: BigInt(e2.size), l: o3 } : e2 instanceof ArrayBuffer || ArrayBuffer.isView(e2) ? { o: f2, u: BigInt(e2.byteLength), l: o3 } : { o: f2, u: u(e2, r4), l: o3 };
  }
  function u(e2, n2) {
    return n2 > -1 ? BigInt(n2) : e2 ? void 0 : 0n;
  }
  function d(e2, n2 = 1) {
    if (!e2 || e2.every(((c6) => 47 === c6))) throw new Error("The file must have a name.");
    if (n2) for (; 47 === e2[e2.length - 1]; ) e2 = e2.subarray(0, -1);
    else 47 !== e2[e2.length - 1] && (e2 = new Uint8Array([...e2, 47]));
    return e2;
  }
  var l2 = new Uint32Array(256);
  for (let e2 = 0; e2 < 256; ++e2) {
    let n2 = e2;
    for (let e3 = 0; e3 < 8; ++e3) n2 = n2 >>> 1 ^ (1 & n2 && 3988292384);
    l2[e2] = n2;
  }
  function y2(e2, n2 = 0) {
    n2 ^= -1;
    for (var t3 = 0, i2 = e2.length; t3 < i2; t3++) n2 = n2 >>> 8 ^ l2[255 & n2 ^ e2[t3]];
    return (-1 ^ n2) >>> 0;
  }
  function w2(e2, n2, t3 = 0) {
    const i2 = e2.getSeconds() >> 1 | e2.getMinutes() << 5 | e2.getHours() << 11, r4 = e2.getDate() | e2.getMonth() + 1 << 5 | e2.getFullYear() - 1980 << 9;
    n2.setUint16(t3, i2, 1), n2.setUint16(t3 + 2, r4, 1);
  }
  function B({ o: e2, l: n2 }, t3) {
    return 8 * (!n2 || (t3 ?? (function(e3) {
      try {
        b.decode(e3);
      } catch {
        return 0;
      }
      return 1;
    })(e2)));
  }
  var b = new TextDecoder("utf8", { fatal: 1 });
  function p3(t3, i2 = 0) {
    const r4 = e(30);
    return r4.setUint32(0, 1347093252), r4.setUint32(4, 754976768 | i2), w2(t3.t, r4, 10), r4.setUint16(26, t3.o.length, 1), n(r4);
  }
  async function* g2(e2) {
    let { i: n2 } = e2;
    if ("then" in n2 && (n2 = await n2), n2 instanceof Uint8Array) yield n2, e2.m = y2(n2, 0), e2.u = BigInt(n2.length);
    else {
      e2.u = 0n;
      const t3 = n2.getReader();
      for (; ; ) {
        const { value: n3, done: i2 } = await t3.read();
        if (i2) break;
        e2.m = y2(n3, e2.m), e2.u += BigInt(n3.length), yield n3;
      }
    }
  }
  function I(t3, r4) {
    const f2 = e(16 + (r4 ? 8 : 0));
    return f2.setUint32(0, 1347094280), f2.setUint32(4, t3.isFile ? t3.m : 0, 1), r4 ? (f2.setBigUint64(8, t3.u, 1), f2.setBigUint64(16, t3.u, 1)) : (f2.setUint32(8, i(t3.u), 1), f2.setUint32(12, i(t3.u), 1)), n(f2);
  }
  function v2(t3, r4, f2 = 0, o3 = 0) {
    const a2 = e(46);
    return a2.setUint32(0, 1347092738), a2.setUint32(4, 755182848), a2.setUint16(8, 2048 | f2), w2(t3.t, a2, 12), a2.setUint32(16, t3.isFile ? t3.m : 0, 1), a2.setUint32(20, i(t3.u), 1), a2.setUint32(24, i(t3.u), 1), a2.setUint16(28, t3.o.length, 1), a2.setUint16(30, o3, 1), a2.setUint16(40, t3.isFile ? 33204 : 16893, 1), a2.setUint32(42, i(r4), 1), n(a2);
  }
  function h(t3, i2, r4) {
    const f2 = e(r4);
    return f2.setUint16(0, 1, 1), f2.setUint16(2, r4 - 4, 1), 16 & r4 && (f2.setBigUint64(4, t3.u, 1), f2.setBigUint64(12, t3.u, 1)), f2.setBigUint64(r4 - 8, i2, 1), n(f2);
  }
  function D2(e2) {
    return e2 instanceof File || e2 instanceof Response ? [[e2], [e2]] : [[e2.input, e2.name, e2.size], [e2.input, e2.lastModified]];
  }
  var S = (e2) => (function(e3) {
    let n2 = BigInt(22), t3 = 0n, i2 = 0;
    for (const r4 of e3) {
      if (!r4.o) throw new Error("Every file must have a non-empty name.");
      if (void 0 === r4.u) throw new Error(`Missing size for file "${new TextDecoder().decode(r4.o)}".`);
      const e4 = r4.u >= 0xffffffffn, f2 = t3 >= 0xffffffffn;
      t3 += BigInt(46 + r4.o.length + (e4 && 8)) + r4.u, n2 += BigInt(r4.o.length + 46 + (12 * f2 | 28 * e4)), i2 || (i2 = e4);
    }
    return (i2 || t3 >= 0xffffffffn) && (n2 += BigInt(76)), n2 + t3;
  })((function* (e3) {
    for (const n2 of e3) yield s(...D2(n2)[0]);
  })(e2));
  function A2(e2, n2 = {}) {
    const t3 = { "Content-Type": "application/zip", "Content-Disposition": "attachment" };
    return ("bigint" == typeof n2.length || Number.isInteger(n2.length)) && n2.length > 0 && (t3["Content-Length"] = String(n2.length)), n2.metadata && (t3["Content-Length"] = String(S(n2.metadata))), new Response(N2(e2, n2), { headers: t3 });
  }
  function N2(t3, a2 = {}) {
    const u2 = (function(e2) {
      const n2 = e2[Symbol.iterator in e2 ? Symbol.iterator : Symbol.asyncIterator]();
      return { async next() {
        const e3 = await n2.next();
        if (e3.done) return e3;
        const [t4, i2] = D2(e3.value);
        return { done: 0, value: Object.assign(f(...i2), s(...t4)) };
      }, throw: n2.throw?.bind(n2), [Symbol.asyncIterator]() {
        return this;
      } };
    })(t3);
    return o((async function* (t4, f2) {
      const o3 = [];
      let a3 = 0n, s2 = 0n, u3 = 0;
      for await (const e2 of t4) {
        const n2 = B(e2, f2.buffersAreUTF8);
        yield p3(e2, n2), yield new Uint8Array(e2.o), e2.isFile && (yield* g2(e2));
        const t5 = e2.u >= 0xffffffffn, i2 = 12 * (a3 >= 0xffffffffn) | 28 * t5;
        yield I(e2, t5), o3.push(v2(e2, a3, n2, i2)), o3.push(e2.o), i2 && o3.push(h(e2, a3, i2)), t5 && (a3 += 8n), s2++, a3 += BigInt(46 + e2.o.length) + e2.u, u3 || (u3 = t5);
      }
      let d2 = 0n;
      for (const e2 of o3) yield e2, d2 += BigInt(e2.length);
      if (u3 || a3 >= 0xffffffffn) {
        const t5 = e(76);
        t5.setUint32(0, 1347094022), t5.setBigUint64(4, BigInt(44), 1), t5.setUint32(12, 755182848), t5.setBigUint64(24, s2, 1), t5.setBigUint64(32, s2, 1), t5.setBigUint64(40, d2, 1), t5.setBigUint64(48, a3, 1), t5.setUint32(56, 1347094023), t5.setBigUint64(64, a3 + d2, 1), t5.setUint32(72, 1, 1), yield n(t5);
      }
      const l3 = e(22);
      l3.setUint32(0, 1347093766), l3.setUint16(8, r2(s2), 1), l3.setUint16(10, r2(s2), 1), l3.setUint32(12, i(d2), 1), l3.setUint32(16, i(a3), 1), yield n(l3);
    })(u2, a2), u2);
  }

  // packages/fields/build-module/actions/export-pattern.mjs
  var import_remove_accents2 = __toESM(require_remove_accents(), 1);
  var import_blob2 = __toESM(require_blob(), 1);
  var import_i18n68 = __toESM(require_i18n(), 1);
  function getJsonFromItem(item) {
    return JSON.stringify(
      {
        __file: item.type,
        title: getItemTitle(item),
        content: typeof item.content === "string" ? item.content : item.content?.raw,
        syncStatus: item.wp_pattern_sync_status
      },
      null,
      2
    );
  }
  var exportPattern = {
    id: "export-pattern",
    label: (0, import_i18n68.__)("Export as JSON"),
    icon: download_default,
    supportsBulk: true,
    isEligible: (item) => item.type === "wp_block",
    callback: async (items) => {
      if (items.length === 1) {
        return (0, import_blob2.downloadBlob)(
          `${paramCase(
            (0, import_remove_accents2.default)(
              getItemTitle(items[0]) || items[0].slug
            )
          )}.json`,
          getJsonFromItem(items[0]),
          "application/json"
        );
      }
      const nameCount = {};
      const filesToZip = items.map((item) => {
        const name2 = paramCase(
          (0, import_remove_accents2.default)(getItemTitle(item) || item.slug)
        );
        nameCount[name2] = (nameCount[name2] || 0) + 1;
        return {
          name: `${name2 + (nameCount[name2] > 1 ? "-" + (nameCount[name2] - 1) : "")}.json`,
          lastModified: /* @__PURE__ */ new Date(),
          input: getJsonFromItem(item)
        };
      });
      return (0, import_blob2.downloadBlob)(
        (0, import_i18n68.__)("patterns-export") + ".zip",
        await A2(filesToZip).blob(),
        "application/zip"
      );
    }
  };
  var export_pattern_default = exportPattern;

  // packages/fields/build-module/actions/view-post-revisions.mjs
  var import_url6 = __toESM(require_url(), 1);
  var import_i18n69 = __toESM(require_i18n(), 1);
  var viewPostRevisions = {
    id: "view-post-revisions",
    context: "list",
    label(items) {
      const revisionsCount = items[0]._links?.["version-history"]?.[0]?.count ?? 0;
      return (0, import_i18n69.sprintf)(
        /* translators: %d: number of revisions. */
        (0, import_i18n69.__)("View revisions (%d)"),
        revisionsCount
      );
    },
    isEligible(post2) {
      if (post2.status === "trash") {
        return false;
      }
      const lastRevisionId = post2?._links?.["predecessor-version"]?.[0]?.id ?? null;
      const revisionsCount = post2?._links?.["version-history"]?.[0]?.count ?? 0;
      return !!lastRevisionId && revisionsCount > 1;
    },
    callback(posts, { onActionPerformed }) {
      const post2 = posts[0];
      const href = (0, import_url6.addQueryArgs)("revision.php", {
        revision: post2?._links?.["predecessor-version"]?.[0]?.id
      });
      document.location.href = href;
      if (onActionPerformed) {
        onActionPerformed(posts);
      }
    }
  };
  var view_post_revisions_default = viewPostRevisions;

  // packages/fields/build-module/actions/permanently-delete-post.mjs
  var import_core_data23 = __toESM(require_core_data(), 1);
  var import_i18n70 = __toESM(require_i18n(), 1);
  var import_notices7 = __toESM(require_notices(), 1);
  var import_element136 = __toESM(require_element(), 1);
  var import_data24 = __toESM(require_data(), 1);
  var import_components18 = __toESM(require_components(), 1);
  var import_html_entities8 = __toESM(require_html_entities(), 1);
  var import_jsx_runtime267 = __toESM(require_jsx_runtime(), 1);
  var permanentlyDeletePost = {
    id: "permanently-delete",
    label: (0, import_i18n70.__)("Permanently delete\u2026"),
    supportsBulk: true,
    icon: trash_default,
    isEligible(item) {
      if (isTemplateOrTemplatePart(item) || item.type === "wp_block") {
        return false;
      }
      const { status, permissions } = item;
      return status === "trash" && permissions?.delete;
    },
    hideModalHeader: true,
    modalFocusOnMount: "firstContentElement",
    RenderModal: ({ items, closeModal: closeModal2, onActionPerformed }) => {
      const [isBusy, setIsBusy] = (0, import_element136.useState)(false);
      const { createSuccessNotice, createErrorNotice } = (0, import_data24.useDispatch)(import_notices7.store);
      const { deleteEntityRecord } = (0, import_data24.useDispatch)(import_core_data23.store);
      return /* @__PURE__ */ (0, import_jsx_runtime267.jsxs)(import_components18.__experimentalVStack, { spacing: "5", children: [
        /* @__PURE__ */ (0, import_jsx_runtime267.jsx)(import_components18.__experimentalText, { children: items.length > 1 ? (0, import_i18n70.sprintf)(
          // translators: %d: number of items to delete.
          (0, import_i18n70._n)(
            "Are you sure you want to permanently delete %d item?",
            "Are you sure you want to permanently delete %d items?",
            items.length
          ),
          items.length
        ) : (0, import_i18n70.sprintf)(
          // translators: %s: The post's title
          (0, import_i18n70.__)(
            'Are you sure you want to permanently delete "%s"?'
          ),
          (0, import_html_entities8.decodeEntities)(getItemTitle(items[0]))
        ) }),
        /* @__PURE__ */ (0, import_jsx_runtime267.jsxs)(import_components18.__experimentalHStack, { justify: "right", children: [
          /* @__PURE__ */ (0, import_jsx_runtime267.jsx)(
            import_components18.Button,
            {
              variant: "tertiary",
              onClick: closeModal2,
              disabled: isBusy,
              accessibleWhenDisabled: true,
              __next40pxDefaultSize: true,
              children: (0, import_i18n70.__)("Cancel")
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime267.jsx)(
            import_components18.Button,
            {
              variant: "primary",
              onClick: async () => {
                setIsBusy(true);
                const promiseResult = await Promise.allSettled(
                  items.map(
                    (post2) => deleteEntityRecord(
                      "postType",
                      post2.type,
                      post2.id,
                      { force: true },
                      { throwOnError: true }
                    )
                  )
                );
                if (promiseResult.every(
                  ({ status }) => status === "fulfilled"
                )) {
                  let successMessage;
                  if (promiseResult.length === 1) {
                    successMessage = (0, import_i18n70.sprintf)(
                      /* translators: %s: The posts's title. */
                      (0, import_i18n70.__)('"%s" permanently deleted.'),
                      getItemTitle(items[0])
                    );
                  } else {
                    successMessage = (0, import_i18n70.__)(
                      "The items were permanently deleted."
                    );
                  }
                  createSuccessNotice(successMessage, {
                    type: "snackbar",
                    id: "permanently-delete-post-action"
                  });
                  onActionPerformed?.(items);
                } else {
                  let errorMessage;
                  if (promiseResult.length === 1) {
                    const typedError = promiseResult[0];
                    if (typedError.reason?.message) {
                      errorMessage = typedError.reason.message;
                    } else {
                      errorMessage = (0, import_i18n70.__)(
                        "An error occurred while permanently deleting the item."
                      );
                    }
                  } else {
                    const errorMessages = /* @__PURE__ */ new Set();
                    const failedPromises = promiseResult.filter(
                      ({ status }) => status === "rejected"
                    );
                    for (const failedPromise of failedPromises) {
                      const typedError = failedPromise;
                      if (typedError.reason?.message) {
                        errorMessages.add(
                          typedError.reason.message
                        );
                      }
                    }
                    if (errorMessages.size === 0) {
                      errorMessage = (0, import_i18n70.__)(
                        "An error occurred while permanently deleting the items."
                      );
                    } else if (errorMessages.size === 1) {
                      errorMessage = (0, import_i18n70.sprintf)(
                        /* translators: %s: an error message */
                        (0, import_i18n70.__)(
                          "An error occurred while permanently deleting the items: %s"
                        ),
                        [...errorMessages][0]
                      );
                    } else {
                      errorMessage = (0, import_i18n70.sprintf)(
                        /* translators: %s: a list of comma separated error messages */
                        (0, import_i18n70.__)(
                          "Some errors occurred while permanently deleting the items: %s"
                        ),
                        [...errorMessages].join(",")
                      );
                    }
                  }
                  createErrorNotice(errorMessage, {
                    type: "snackbar"
                  });
                }
                setIsBusy(false);
                closeModal2?.();
              },
              isBusy,
              disabled: isBusy,
              accessibleWhenDisabled: true,
              __next40pxDefaultSize: true,
              children: (0, import_i18n70.__)("Delete permanently")
            }
          )
        ] })
      ] });
    }
  };
  var permanently_delete_post_default = permanentlyDeletePost;

  // packages/fields/build-module/actions/restore-post.mjs
  var import_core_data24 = __toESM(require_core_data(), 1);
  var import_i18n71 = __toESM(require_i18n(), 1);
  var import_notices8 = __toESM(require_notices(), 1);
  var restorePost = {
    id: "restore",
    label: (0, import_i18n71.__)("Restore"),
    isPrimary: true,
    icon: backup_default,
    supportsBulk: true,
    isEligible(item) {
      return !isTemplateOrTemplatePart(item) && item.type !== "wp_block" && item.status === "trash" && item.permissions?.update;
    },
    async callback(posts, { registry, onActionPerformed }) {
      const { createSuccessNotice, createErrorNotice } = registry.dispatch(import_notices8.store);
      const { editEntityRecord, saveEditedEntityRecord } = registry.dispatch(import_core_data24.store);
      await Promise.allSettled(
        posts.map((post2) => {
          return editEntityRecord("postType", post2.type, post2.id, {
            status: "draft"
          });
        })
      );
      const promiseResult = await Promise.allSettled(
        posts.map((post2) => {
          return saveEditedEntityRecord("postType", post2.type, post2.id, {
            throwOnError: true
          });
        })
      );
      if (promiseResult.every(({ status }) => status === "fulfilled")) {
        let successMessage;
        if (posts.length === 1) {
          successMessage = (0, import_i18n71.sprintf)(
            /* translators: %s: The number of posts. */
            (0, import_i18n71.__)('"%s" has been restored.'),
            getItemTitle(posts[0])
          );
        } else if (posts[0].type === "page") {
          successMessage = (0, import_i18n71.sprintf)(
            /* translators: %d: The number of posts. */
            (0, import_i18n71.__)("%d pages have been restored."),
            posts.length
          );
        } else {
          successMessage = (0, import_i18n71.sprintf)(
            /* translators: %d: The number of posts. */
            (0, import_i18n71.__)("%d posts have been restored."),
            posts.length
          );
        }
        createSuccessNotice(successMessage, {
          type: "snackbar",
          id: "restore-post-action"
        });
        if (onActionPerformed) {
          onActionPerformed(posts);
        }
      } else {
        let errorMessage;
        if (promiseResult.length === 1) {
          const typedError = promiseResult[0];
          if (typedError.reason?.message) {
            errorMessage = typedError.reason.message;
          } else {
            errorMessage = (0, import_i18n71.__)(
              "An error occurred while restoring the post."
            );
          }
        } else {
          const errorMessages = /* @__PURE__ */ new Set();
          const failedPromises = promiseResult.filter(
            ({ status }) => status === "rejected"
          );
          for (const failedPromise of failedPromises) {
            const typedError = failedPromise;
            if (typedError.reason?.message) {
              errorMessages.add(typedError.reason.message);
            }
          }
          if (errorMessages.size === 0) {
            errorMessage = (0, import_i18n71.__)(
              "An error occurred while restoring the posts."
            );
          } else if (errorMessages.size === 1) {
            errorMessage = (0, import_i18n71.sprintf)(
              /* translators: %s: an error message */
              (0, import_i18n71.__)("An error occurred while restoring the posts: %s"),
              [...errorMessages][0]
            );
          } else {
            errorMessage = (0, import_i18n71.sprintf)(
              /* translators: %s: a list of comma separated error messages */
              (0, import_i18n71.__)(
                "Some errors occurred while restoring the posts: %s"
              ),
              [...errorMessages].join(",")
            );
          }
        }
        createErrorNotice(errorMessage, {
          type: "snackbar"
        });
      }
    }
  };
  var restore_post_default = restorePost;

  // packages/fields/build-module/actions/trash-post.mjs
  var import_data25 = __toESM(require_data(), 1);
  var import_core_data25 = __toESM(require_core_data(), 1);
  var import_i18n72 = __toESM(require_i18n(), 1);
  var import_notices9 = __toESM(require_notices(), 1);
  var import_element137 = __toESM(require_element(), 1);
  var import_components19 = __toESM(require_components(), 1);
  var import_jsx_runtime268 = __toESM(require_jsx_runtime(), 1);
  var trashPost = {
    id: "move-to-trash",
    label: (0, import_i18n72._x)("Trash\u2026", "verb"),
    isPrimary: true,
    icon: trash_default,
    isEligible(item) {
      if (item.type === "wp_template_part" || item.type === "wp_block") {
        return false;
      }
      if (item.type === "wp_template" && typeof item.id === "string") {
        return false;
      }
      return !!item.status && !["auto-draft", "trash"].includes(item.status) && item.permissions?.delete;
    },
    supportsBulk: true,
    hideModalHeader: true,
    modalFocusOnMount: "firstContentElement",
    RenderModal: ({ items, closeModal: closeModal2, onActionPerformed }) => {
      const [isBusy, setIsBusy] = (0, import_element137.useState)(false);
      const { createSuccessNotice, createErrorNotice } = (0, import_data25.useDispatch)(import_notices9.store);
      const { deleteEntityRecord } = (0, import_data25.useDispatch)(import_core_data25.store);
      return /* @__PURE__ */ (0, import_jsx_runtime268.jsxs)(import_components19.__experimentalVStack, { spacing: "5", children: [
        /* @__PURE__ */ (0, import_jsx_runtime268.jsx)(import_components19.__experimentalText, { children: items.length === 1 ? (0, import_i18n72.sprintf)(
          // translators: %s: The item's title.
          (0, import_i18n72.__)(
            'Are you sure you want to move "%s" to the trash?'
          ),
          getItemTitle(items[0])
        ) : (0, import_i18n72.sprintf)(
          // translators: %d: The number of items (2 or more).
          (0, import_i18n72._n)(
            "Are you sure you want to move %d item to the trash ?",
            "Are you sure you want to move %d items to the trash ?",
            items.length
          ),
          items.length
        ) }),
        /* @__PURE__ */ (0, import_jsx_runtime268.jsxs)(import_components19.__experimentalHStack, { justify: "right", children: [
          /* @__PURE__ */ (0, import_jsx_runtime268.jsx)(
            import_components19.Button,
            {
              __next40pxDefaultSize: true,
              variant: "tertiary",
              onClick: closeModal2,
              disabled: isBusy,
              accessibleWhenDisabled: true,
              children: (0, import_i18n72.__)("Cancel")
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime268.jsx)(
            import_components19.Button,
            {
              __next40pxDefaultSize: true,
              variant: "primary",
              onClick: async () => {
                setIsBusy(true);
                const promiseResult = await Promise.allSettled(
                  items.map(
                    (item) => deleteEntityRecord(
                      "postType",
                      item.type,
                      item.id.toString(),
                      {},
                      { throwOnError: true }
                    )
                  )
                );
                if (promiseResult.every(
                  ({ status }) => status === "fulfilled"
                )) {
                  let successMessage;
                  if (promiseResult.length === 1) {
                    successMessage = (0, import_i18n72.sprintf)(
                      /* translators: %s: The item's title. */
                      (0, import_i18n72.__)('"%s" moved to the trash.'),
                      getItemTitle(items[0])
                    );
                  } else {
                    successMessage = (0, import_i18n72.sprintf)(
                      /* translators: %d: The number of items. */
                      (0, import_i18n72._n)(
                        "%d item moved to the trash.",
                        "%d items moved to the trash.",
                        items.length
                      ),
                      items.length
                    );
                  }
                  createSuccessNotice(successMessage, {
                    type: "snackbar",
                    id: "move-to-trash-action"
                  });
                } else {
                  let errorMessage;
                  if (promiseResult.length === 1) {
                    const typedError = promiseResult[0];
                    if (typedError.reason?.message) {
                      errorMessage = typedError.reason.message;
                    } else {
                      errorMessage = (0, import_i18n72.__)(
                        "An error occurred while moving the item to the trash."
                      );
                    }
                  } else {
                    const errorMessages = /* @__PURE__ */ new Set();
                    const failedPromises = promiseResult.filter(
                      ({ status }) => status === "rejected"
                    );
                    for (const failedPromise of failedPromises) {
                      const typedError = failedPromise;
                      if (typedError.reason?.message) {
                        errorMessages.add(
                          typedError.reason.message
                        );
                      }
                    }
                    if (errorMessages.size === 0) {
                      errorMessage = (0, import_i18n72.__)(
                        "An error occurred while moving the items to the trash."
                      );
                    } else if (errorMessages.size === 1) {
                      errorMessage = (0, import_i18n72.sprintf)(
                        /* translators: %s: an error message */
                        (0, import_i18n72.__)(
                          "An error occurred while moving the item to the trash: %s"
                        ),
                        [...errorMessages][0]
                      );
                    } else {
                      errorMessage = (0, import_i18n72.sprintf)(
                        /* translators: %s: a list of comma separated error messages */
                        (0, import_i18n72.__)(
                          "Some errors occurred while moving the items to the trash: %s"
                        ),
                        [...errorMessages].join(",")
                      );
                    }
                  }
                  createErrorNotice(errorMessage, {
                    type: "snackbar"
                  });
                }
                if (onActionPerformed) {
                  onActionPerformed(items);
                }
                setIsBusy(false);
                closeModal2?.();
              },
              isBusy,
              disabled: isBusy,
              accessibleWhenDisabled: true,
              children: (0, import_i18n72._x)("Trash", "verb")
            }
          )
        ] })
      ] });
    }
  };
  var trash_post_default = trashPost;

  // packages/fields/build-module/actions/delete-post.mjs
  var import_i18n73 = __toESM(require_i18n(), 1);
  var import_element138 = __toESM(require_element(), 1);
  var import_components20 = __toESM(require_components(), 1);
  var import_patterns5 = __toESM(require_patterns(), 1);
  var import_html_entities9 = __toESM(require_html_entities(), 1);

  // packages/fields/build-module/mutation/index.mjs
  var import_notices10 = __toESM(require_notices(), 1);
  var import_core_data26 = __toESM(require_core_data(), 1);
  var import_data26 = __toESM(require_data(), 1);
  function getErrorMessagesFromPromises(allSettledResults) {
    const errorMessages = /* @__PURE__ */ new Set();
    if (allSettledResults.length === 1) {
      const typedError = allSettledResults[0];
      if (typedError.reason?.message) {
        errorMessages.add(typedError.reason.message);
      }
    } else {
      const failedPromises = allSettledResults.filter(
        ({ status }) => status === "rejected"
      );
      for (const failedPromise of failedPromises) {
        const typedError = failedPromise;
        if (typedError.reason?.message) {
          errorMessages.add(typedError.reason.message);
        }
      }
    }
    return errorMessages;
  }
  var deletePostWithNotices = async (posts, notice, callbacks) => {
    const { createSuccessNotice, createErrorNotice } = (0, import_data26.dispatch)(import_notices10.store);
    const { deleteEntityRecord } = (0, import_data26.dispatch)(import_core_data26.store);
    const allSettledResults = await Promise.allSettled(
      posts.map((post2) => {
        return deleteEntityRecord(
          "postType",
          post2.type,
          post2.id,
          { force: true },
          { throwOnError: true }
        );
      })
    );
    if (allSettledResults.every(({ status }) => status === "fulfilled")) {
      let successMessage;
      if (allSettledResults.length === 1) {
        successMessage = notice.success.messages.getMessage(posts[0]);
      } else {
        successMessage = notice.success.messages.getBatchMessage(posts);
      }
      createSuccessNotice(successMessage, {
        type: notice.success.type ?? "snackbar",
        id: notice.success.id
      });
      callbacks.onActionPerformed?.(posts);
    } else {
      const errorMessages = getErrorMessagesFromPromises(allSettledResults);
      let errorMessage = "";
      if (allSettledResults.length === 1) {
        errorMessage = notice.error.messages.getMessage(errorMessages);
      } else {
        errorMessage = notice.error.messages.getBatchMessage(errorMessages);
      }
      createErrorNotice(errorMessage, {
        type: notice.error.type ?? "snackbar",
        id: notice.error.id
      });
      callbacks.onActionError?.();
    }
  };

  // packages/fields/build-module/actions/delete-post.mjs
  var import_jsx_runtime269 = __toESM(require_jsx_runtime(), 1);
  var { PATTERN_TYPES: PATTERN_TYPES4 } = unlock4(import_patterns5.privateApis);
  var deletePostAction = {
    id: "delete-post",
    label: (0, import_i18n73.__)("Delete\u2026"),
    isPrimary: true,
    icon: trash_default,
    isEligible(post2) {
      if (isTemplateOrTemplatePart(post2)) {
        return isTemplateRemovable(post2);
      }
      return post2.type === PATTERN_TYPES4.user;
    },
    supportsBulk: true,
    hideModalHeader: true,
    modalFocusOnMount: "firstContentElement",
    RenderModal: ({ items, closeModal: closeModal2, onActionPerformed }) => {
      const [isBusy, setIsBusy] = (0, import_element138.useState)(false);
      const isResetting = items.every(
        (item) => isTemplateOrTemplatePart(item) && item?.has_theme_file
      );
      return /* @__PURE__ */ (0, import_jsx_runtime269.jsxs)(import_components20.__experimentalVStack, { spacing: "5", children: [
        /* @__PURE__ */ (0, import_jsx_runtime269.jsx)(import_components20.__experimentalText, { children: items.length > 1 ? (0, import_i18n73.sprintf)(
          // translators: %d: number of items to delete.
          (0, import_i18n73._n)(
            "Delete %d item?",
            "Delete %d items?",
            items.length
          ),
          items.length
        ) : (0, import_i18n73.sprintf)(
          // translators: %s: The template or template part's title
          (0, import_i18n73._x)('Delete "%s"?', "template part"),
          getItemTitle(items[0])
        ) }),
        /* @__PURE__ */ (0, import_jsx_runtime269.jsxs)(import_components20.__experimentalHStack, { justify: "right", children: [
          /* @__PURE__ */ (0, import_jsx_runtime269.jsx)(
            import_components20.Button,
            {
              variant: "tertiary",
              onClick: closeModal2,
              disabled: isBusy,
              accessibleWhenDisabled: true,
              __next40pxDefaultSize: true,
              children: (0, import_i18n73.__)("Cancel")
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime269.jsx)(
            import_components20.Button,
            {
              variant: "primary",
              onClick: async () => {
                setIsBusy(true);
                const notice = {
                  success: {
                    messages: {
                      getMessage: (item) => {
                        return isResetting ? (0, import_i18n73.sprintf)(
                          /* translators: %s: The template/part's name. */
                          (0, import_i18n73.__)('"%s" reset.'),
                          (0, import_html_entities9.decodeEntities)(
                            getItemTitle(item)
                          )
                        ) : (0, import_i18n73.sprintf)(
                          /* translators: %s: The template/part's name. */
                          (0, import_i18n73._x)(
                            '"%s" deleted.',
                            "template part"
                          ),
                          (0, import_html_entities9.decodeEntities)(
                            getItemTitle(item)
                          )
                        );
                      },
                      getBatchMessage: () => {
                        return isResetting ? (0, import_i18n73.__)("Items reset.") : (0, import_i18n73.__)("Items deleted.");
                      }
                    }
                  },
                  error: {
                    messages: {
                      getMessage: (error2) => {
                        if (error2.size === 1) {
                          return [...error2][0];
                        }
                        return isResetting ? (0, import_i18n73.__)(
                          "An error occurred while reverting the item."
                        ) : (0, import_i18n73.__)(
                          "An error occurred while deleting the item."
                        );
                      },
                      getBatchMessage: (errors) => {
                        if (errors.size === 0) {
                          return isResetting ? (0, import_i18n73.__)(
                            "An error occurred while reverting the items."
                          ) : (0, import_i18n73.__)(
                            "An error occurred while deleting the items."
                          );
                        }
                        if (errors.size === 1) {
                          return isResetting ? (0, import_i18n73.sprintf)(
                            /* translators: %s: an error message */
                            (0, import_i18n73.__)(
                              "An error occurred while reverting the items: %s"
                            ),
                            [...errors][0]
                          ) : (0, import_i18n73.sprintf)(
                            /* translators: %s: an error message */
                            (0, import_i18n73.__)(
                              "An error occurred while deleting the items: %s"
                            ),
                            [...errors][0]
                          );
                        }
                        return isResetting ? (0, import_i18n73.sprintf)(
                          /* translators: %s: a list of comma separated error messages */
                          (0, import_i18n73.__)(
                            "Some errors occurred while reverting the items: %s"
                          ),
                          [...errors].join(
                            ","
                          )
                        ) : (0, import_i18n73.sprintf)(
                          /* translators: %s: a list of comma separated error messages */
                          (0, import_i18n73.__)(
                            "Some errors occurred while deleting the items: %s"
                          ),
                          [...errors].join(
                            ","
                          )
                        );
                      }
                    }
                  }
                };
                await deletePostWithNotices(items, notice, {
                  onActionPerformed
                });
                setIsBusy(false);
                closeModal2?.();
              },
              isBusy,
              disabled: isBusy,
              accessibleWhenDisabled: true,
              __next40pxDefaultSize: true,
              children: (0, import_i18n73.__)("Delete")
            }
          )
        ] })
      ] });
    }
  };
  var delete_post_default = deletePostAction;

  // packages/fields/build-module/actions/duplicate-template-part.mjs
  var import_data29 = __toESM(require_data(), 1);
  var import_i18n75 = __toESM(require_i18n(), 1);
  var import_notices12 = __toESM(require_notices(), 1);
  var import_element140 = __toESM(require_element(), 1);
  var import_blocks6 = __toESM(require_blocks(), 1);

  // packages/fields/build-module/components/create-template-part-modal/index.mjs
  var import_components21 = __toESM(require_components(), 1);
  var import_compose10 = __toESM(require_compose(), 1);
  var import_core_data28 = __toESM(require_core_data(), 1);
  var import_data28 = __toESM(require_data(), 1);
  var import_element139 = __toESM(require_element(), 1);
  var import_i18n74 = __toESM(require_i18n(), 1);
  var import_notices11 = __toESM(require_notices(), 1);
  var import_blocks5 = __toESM(require_blocks(), 1);

  // packages/fields/build-module/components/create-template-part-modal/utils.mjs
  var import_data27 = __toESM(require_data(), 1);
  var import_core_data27 = __toESM(require_core_data(), 1);
  var EMPTY_ARRAY5 = [];
  function useExistingTemplateParts() {
    return (0, import_data27.useSelect)(
      (select9) => select9(import_core_data27.store).getEntityRecords(
        "postType",
        "wp_template_part",
        { per_page: -1 }
      ) ?? EMPTY_ARRAY5,
      []
    );
  }
  function getUniqueTemplatePartTitle(title, templateParts) {
    const lowercaseTitle = title.toLowerCase();
    const existingTitles = templateParts.map(
      (templatePart) => templatePart.title.rendered.toLowerCase()
    );
    if (!existingTitles.includes(lowercaseTitle)) {
      return title;
    }
    let suffix = 2;
    while (existingTitles.includes(`${lowercaseTitle} ${suffix}`)) {
      suffix++;
    }
    return `${title} ${suffix}`;
  }
  function getCleanTemplatePartSlug(title) {
    return paramCase(title).replace(/[^\w-]+/g, "") || "wp-custom-part";
  }

  // packages/fields/build-module/components/create-template-part-modal/index.mjs
  var import_jsx_runtime270 = __toESM(require_jsx_runtime(), 1);
  function getAreaRadioId(value, instanceId) {
    return `fields-create-template-part-modal__area-option-${value}-${instanceId}`;
  }
  function getAreaRadioDescriptionId(value, instanceId) {
    return `fields-create-template-part-modal__area-option-description-${value}-${instanceId}`;
  }
  function CreateTemplatePartModal({
    modalTitle,
    ...restProps
  }) {
    const defaultModalTitle = (0, import_data28.useSelect)(
      (select9) => select9(import_core_data28.store).getPostType("wp_template_part")?.labels?.add_new_item,
      []
    );
    return /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(
      import_components21.Modal,
      {
        title: modalTitle || defaultModalTitle,
        onRequestClose: restProps.closeModal,
        overlayClassName: "fields-create-template-part-modal",
        focusOnMount: "firstContentElement",
        size: "medium",
        children: /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(CreateTemplatePartModalContents, { ...restProps })
      }
    );
  }
  var getTemplatePartIcon3 = (areaOrIconName) => {
    if ("header" === areaOrIconName) {
      return header_default;
    } else if ("footer" === areaOrIconName) {
      return footer_default;
    } else if ("sidebar" === areaOrIconName) {
      return sidebar_default;
    } else if ("navigation-overlay" === areaOrIconName) {
      return navigation_overlay_default;
    }
    return symbol_filled_default;
  };
  function CreateTemplatePartModalContents({
    defaultArea = "uncategorized",
    blocks = [],
    confirmLabel = (0, import_i18n74.__)("Add"),
    closeModal: closeModal2,
    onCreate,
    onError,
    defaultTitle = ""
  }) {
    const { createErrorNotice } = (0, import_data28.useDispatch)(import_notices11.store);
    const { saveEntityRecord } = (0, import_data28.useDispatch)(import_core_data28.store);
    const existingTemplateParts = useExistingTemplateParts();
    const [title, setTitle] = (0, import_element139.useState)(defaultTitle);
    const [area, setArea] = (0, import_element139.useState)(defaultArea);
    const [isSubmitting, setIsSubmitting] = (0, import_element139.useState)(false);
    const instanceId = (0, import_compose10.useInstanceId)(CreateTemplatePartModal);
    const defaultTemplatePartAreas = (0, import_data28.useSelect)(
      (select9) => select9(import_core_data28.store).getCurrentTheme()?.default_template_part_areas,
      []
    );
    async function createTemplatePart() {
      if (!title || isSubmitting) {
        return;
      }
      try {
        setIsSubmitting(true);
        const uniqueTitle = getUniqueTemplatePartTitle(
          title,
          existingTemplateParts
        );
        const cleanSlug = getCleanTemplatePartSlug(uniqueTitle);
        const templatePart = await saveEntityRecord(
          "postType",
          "wp_template_part",
          {
            slug: cleanSlug,
            title: uniqueTitle,
            content: (0, import_blocks5.serialize)(blocks),
            area
          },
          { throwOnError: true }
        );
        await onCreate(templatePart);
      } catch (error2) {
        const errorMessage = error2 instanceof Error && "code" in error2 && error2.message && error2.code !== "unknown_error" ? error2.message : (0, import_i18n74.__)(
          "An error occurred while creating the template part."
        );
        createErrorNotice(errorMessage, { type: "snackbar" });
        onError?.();
      } finally {
        setIsSubmitting(false);
      }
    }
    return /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(
      "form",
      {
        onSubmit: async (event) => {
          event.preventDefault();
          await createTemplatePart();
        },
        children: /* @__PURE__ */ (0, import_jsx_runtime270.jsxs)(import_components21.__experimentalVStack, { spacing: "4", children: [
          /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(
            import_components21.TextControl,
            {
              label: (0, import_i18n74.__)("Name"),
              value: title,
              onChange: setTitle,
              required: true
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime270.jsxs)("fieldset", { className: "fields-create-template-part-modal__area-fieldset", children: [
            /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(import_components21.BaseControl.VisualLabel, { as: "legend", children: (0, import_i18n74.__)("Area") }),
            /* @__PURE__ */ (0, import_jsx_runtime270.jsx)("div", { className: "fields-create-template-part-modal__area-radio-group", children: (defaultTemplatePartAreas ?? []).map(
              (item) => {
                const icon = getTemplatePartIcon3(item.icon);
                return /* @__PURE__ */ (0, import_jsx_runtime270.jsxs)(
                  "div",
                  {
                    className: "fields-create-template-part-modal__area-radio-wrapper",
                    children: [
                      /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(
                        "input",
                        {
                          type: "radio",
                          id: getAreaRadioId(
                            item.area,
                            instanceId
                          ),
                          name: `fields-create-template-part-modal__area-${instanceId}`,
                          value: item.area,
                          checked: area === item.area,
                          onChange: () => {
                            setArea(item.area);
                          },
                          "aria-describedby": getAreaRadioDescriptionId(
                            item.area,
                            instanceId
                          )
                        }
                      ),
                      /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(
                        import_components21.Icon,
                        {
                          icon,
                          className: "fields-create-template-part-modal__area-radio-icon"
                        }
                      ),
                      /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(
                        "label",
                        {
                          htmlFor: getAreaRadioId(
                            item.area,
                            instanceId
                          ),
                          className: "fields-create-template-part-modal__area-radio-label",
                          children: item.label
                        }
                      ),
                      /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(
                        import_components21.Icon,
                        {
                          icon: check_default,
                          className: "fields-create-template-part-modal__area-radio-checkmark"
                        }
                      ),
                      /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(
                        "p",
                        {
                          className: "fields-create-template-part-modal__area-radio-description",
                          id: getAreaRadioDescriptionId(
                            item.area,
                            instanceId
                          ),
                          children: item.description
                        }
                      )
                    ]
                  },
                  item.area
                );
              }
            ) })
          ] }),
          /* @__PURE__ */ (0, import_jsx_runtime270.jsxs)(import_components21.__experimentalHStack, { justify: "right", children: [
            /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(
              import_components21.Button,
              {
                __next40pxDefaultSize: true,
                variant: "tertiary",
                onClick: () => {
                  closeModal2();
                },
                children: (0, import_i18n74.__)("Cancel")
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(
              import_components21.Button,
              {
                __next40pxDefaultSize: true,
                variant: "primary",
                type: "submit",
                "aria-disabled": !title || isSubmitting,
                isBusy: isSubmitting,
                children: confirmLabel
              }
            )
          ] })
        ] })
      }
    );
  }

  // packages/fields/build-module/actions/duplicate-template-part.mjs
  var import_jsx_runtime271 = __toESM(require_jsx_runtime(), 1);
  var duplicateTemplatePart = {
    id: "duplicate-template-part",
    label: (0, import_i18n75._x)("Duplicate\u2026", "action label"),
    isEligible: (item) => item.type === "wp_template_part",
    modalHeader: (0, import_i18n75._x)("Duplicate template part", "action label"),
    modalFocusOnMount: "firstContentElement",
    RenderModal: ({ items, closeModal: closeModal2 }) => {
      const [item] = items;
      const blocks = (0, import_element140.useMemo)(() => {
        return item.blocks ?? (0, import_blocks6.parse)(
          typeof item.content === "string" ? item.content : item.content.raw,
          {
            __unstableSkipMigrationLogs: true
          }
        );
      }, [item.content, item.blocks]);
      const { createSuccessNotice } = (0, import_data29.useDispatch)(import_notices12.store);
      function onTemplatePartSuccess(templatePart) {
        createSuccessNotice(
          (0, import_i18n75.sprintf)(
            // translators: %s: The new template part's title e.g. 'Call to action (copy)'.
            (0, import_i18n75._x)('"%s" duplicated.', "template part"),
            getItemTitle(templatePart)
          ),
          { type: "snackbar", id: "edit-site-patterns-success" }
        );
        closeModal2?.();
      }
      return /* @__PURE__ */ (0, import_jsx_runtime271.jsx)(
        CreateTemplatePartModalContents,
        {
          blocks,
          defaultArea: item.area,
          defaultTitle: (0, import_i18n75.sprintf)(
            /* translators: %s: Existing template part title */
            (0, import_i18n75._x)("%s (Copy)", "template part"),
            getItemTitle(item)
          ),
          onCreate: onTemplatePartSuccess,
          onError: closeModal2,
          confirmLabel: (0, import_i18n75._x)("Duplicate", "action label"),
          closeModal: closeModal2 ?? (() => {
          })
        }
      );
    }
  };
  var duplicate_template_part_default = duplicateTemplatePart;

  // packages/media-fields/build-module/alt_text/index.mjs
  var import_i18n76 = __toESM(require_i18n(), 1);
  var import_jsx_runtime272 = __toESM(require_jsx_runtime(), 1);
  var altTextField = {
    id: "alt_text",
    type: "text",
    label: (0, import_i18n76.__)("Alt text"),
    description: /* @__PURE__ */ (0, import_jsx_runtime272.jsxs)(import_jsx_runtime272.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime272.jsx)(
        Link,
        {
          href: (
            // translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations.
            (0, import_i18n76.__)(
              "https://www.w3.org/WAI/tutorials/images/decision-tree/"
            )
          ),
          openInNewTab: true,
          children: (0, import_i18n76.__)("Describe the purpose of the image.")
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime272.jsx)("br", {}),
      (0, import_i18n76.__)("Leave empty if decorative.")
    ] }),
    isVisible: (item) => item?.media_type === "image",
    render: ({ item }) => item?.alt_text || "-",
    Edit: {
      control: "textarea",
      rows: 2
    },
    enableSorting: false,
    filterBy: false
  };
  var alt_text_default = altTextField;

  // packages/media-fields/build-module/attached_to/index.mjs
  var import_i18n79 = __toESM(require_i18n(), 1);

  // packages/media-fields/build-module/attached_to/view.mjs
  var import_element141 = __toESM(require_element(), 1);
  var import_i18n77 = __toESM(require_i18n(), 1);

  // packages/media-fields/build-module/utils/get-rendered-content.mjs
  function getRenderedContent(content) {
    if (!content) {
      return "";
    }
    if (typeof content === "string") {
      return content;
    }
    if (typeof content === "object") {
      return content.rendered || content.raw || "";
    }
    return "";
  }

  // packages/media-fields/build-module/attached_to/view.mjs
  var import_jsx_runtime273 = __toESM(require_jsx_runtime(), 1);
  function MediaAttachedToView({
    item
  }) {
    const [attachedPostTitle, setAttachedPostTitle] = (0, import_element141.useState)(null);
    const parentId = item.post;
    const embeddedPostId = item._embedded?.["wp:attached-to"]?.[0]?.id;
    const embeddedPostTitle = item._embedded?.["wp:attached-to"]?.[0]?.title;
    (0, import_element141.useEffect)(() => {
      if (!!parentId && parentId === embeddedPostId) {
        setAttachedPostTitle(
          getRenderedContent(embeddedPostTitle) || (0, import_i18n77.__)("(no title)")
        );
      }
      if (!parentId) {
        setAttachedPostTitle((0, import_i18n77.__)("(Unattached)"));
      }
    }, [parentId, embeddedPostId, embeddedPostTitle]);
    return /* @__PURE__ */ (0, import_jsx_runtime273.jsx)(import_jsx_runtime273.Fragment, { children: attachedPostTitle });
  }

  // packages/media-fields/build-module/attached_to/edit.mjs
  var import_core_data29 = __toESM(require_core_data(), 1);
  var import_components22 = __toESM(require_components(), 1);
  var import_i18n78 = __toESM(require_i18n(), 1);
  var import_element142 = __toESM(require_element(), 1);
  var import_compose11 = __toESM(require_compose(), 1);
  var import_data30 = __toESM(require_data(), 1);
  var import_jsx_runtime274 = __toESM(require_jsx_runtime(), 1);
  function MediaAttachedToEdit({
    data,
    onChange
  }) {
    const defaultPost = !!data.post && !!data?._embedded?.["wp:attached-to"]?.[0] ? [
      {
        label: getRenderedContent(
          data._embedded?.["wp:attached-to"]?.[0]?.title
        ),
        value: data.post.toString()
      }
    ] : [];
    const [options, setOptions] = (0, import_element142.useState)(defaultPost);
    const [searchResults, setSearchResults] = (0, import_element142.useState)(
      []
    );
    const [isLoading, setIsLoading] = (0, import_element142.useState)(false);
    const [value, setValue] = (0, import_element142.useState)(
      data?.post?.toString() ?? null
    );
    const postTypes = (0, import_data30.useSelect)(
      (select9) => select9(import_core_data29.store).getPostTypes(),
      []
    );
    const handleDetach = () => {
      onChange({
        post: 0,
        _embedded: { ...data?._embedded, "wp:attached-to": void 0 }
      });
      setValue(null);
    };
    const onValueChange = async (filterValue) => {
      setIsLoading(true);
      const results = await (0, import_core_data29.__experimentalFetchLinkSuggestions)(
        filterValue,
        /*
         * @TODO `fetchLinkSuggestions()` should accept `perPage` as an option argument.
         * `isInitialSuggestions` limits the result to 3, otherwise it's hardcoded to 20.
         */
        { type: "post", isInitialSuggestions: true },
        {}
      );
      setSearchResults(results);
      const suggestions = results.map((result) => {
        return {
          label: result.title,
          value: result.id.toString()
        };
      });
      const includeCurrent = !filterValue && suggestions.findIndex((s2) => s2.value === value) === -1;
      setOptions(suggestions.concat(includeCurrent ? defaultPost : []));
      setIsLoading(false);
    };
    const debouncedValueChange = (0, import_compose11.useDebounce)((0, import_compose11.useEvent)(onValueChange), 300);
    const handleSelectOption = (selectedPostId) => {
      if (!selectedPostId) {
        handleDetach();
        return;
      }
      setValue(selectedPostId);
      if (selectedPostId) {
        const selectedPost = searchResults.find(
          (result) => result.id === Number(selectedPostId)
        );
        if (selectedPost && postTypes) {
          const postType2 = postTypes.find(
            (_postType) => _postType.slug === selectedPost?.type
          );
          const attachedTo = {
            ...postType2 && { type: postType2.slug },
            id: Number(selectedPostId),
            title: {
              raw: selectedPost.title,
              rendered: selectedPost.title
            }
          };
          onChange({
            post: Number(selectedPostId),
            _embedded: {
              ...data?._embedded,
              "wp:attached-to": [attachedTo]
            }
          });
        }
      }
    };
    return /* @__PURE__ */ (0, import_jsx_runtime274.jsx)(
      import_components22.ComboboxControl,
      {
        className: "dataviews-media-field__attached-to",
        isLoading,
        label: (0, import_i18n78.__)("Attached to"),
        help: (0, import_i18n78.__)("Attach this file to a single post or page."),
        value,
        options,
        onFilterValueChange: (filterValue) => debouncedValueChange(filterValue),
        onChange: handleSelectOption,
        hideLabelFromVision: true,
        expandOnFocus: false
      }
    );
  }

  // packages/media-fields/build-module/attached_to/index.mjs
  var attachedToField = {
    id: "attached_to",
    type: "text",
    label: (0, import_i18n79.__)("Attached to"),
    Edit: MediaAttachedToEdit,
    render: MediaAttachedToView,
    enableSorting: false,
    filterBy: false
  };
  var attached_to_default = attachedToField;

  // packages/media-fields/build-module/author/index.mjs
  var import_i18n81 = __toESM(require_i18n(), 1);
  var import_data31 = __toESM(require_data(), 1);
  var import_core_data30 = __toESM(require_core_data(), 1);

  // packages/media-fields/build-module/author/view.mjs
  var import_i18n80 = __toESM(require_i18n(), 1);
  var import_element143 = __toESM(require_element(), 1);
  var import_components23 = __toESM(require_components(), 1);
  var import_jsx_runtime275 = __toESM(require_jsx_runtime(), 1);
  function AuthorView2({
    item
  }) {
    const author = item?._embedded?.author?.[0];
    const text = author?.name;
    const imageUrl = author?.avatar_urls?.[48];
    const [loadingState, setLoadingState] = (0, import_element143.useState)("loading");
    (0, import_element143.useEffect)(() => {
      setLoadingState("loading");
    }, [imageUrl]);
    const imgRef = (0, import_element143.useCallback)((img) => {
      if (img?.complete) {
        setLoadingState("instant");
      }
    }, []);
    const handleLoad = () => {
      if (loadingState === "loading") {
        setLoadingState("loaded");
      }
    };
    return /* @__PURE__ */ (0, import_jsx_runtime275.jsxs)(import_components23.__experimentalHStack, { alignment: "left", spacing: 0, children: [
      !!imageUrl && /* @__PURE__ */ (0, import_jsx_runtime275.jsx)(
        "div",
        {
          className: clsx_default("media-author-field__avatar", {
            "is-loading": loadingState === "loading",
            "is-loaded": loadingState === "loaded"
          }),
          children: /* @__PURE__ */ (0, import_jsx_runtime275.jsx)(
            "img",
            {
              ref: imgRef,
              onLoad: handleLoad,
              alt: (0, import_i18n80.__)("Author avatar"),
              src: imageUrl
            }
          )
        }
      ),
      !imageUrl && /* @__PURE__ */ (0, import_jsx_runtime275.jsx)("div", { className: "media-author-field__icon", children: /* @__PURE__ */ (0, import_jsx_runtime275.jsx)(import_components23.Icon, { icon: comment_author_avatar_default }) }),
      /* @__PURE__ */ (0, import_jsx_runtime275.jsx)("span", { className: "media-author-field__name", children: text })
    ] });
  }

  // packages/media-fields/build-module/author/index.mjs
  var authorField2 = {
    label: (0, import_i18n81.__)("Author"),
    id: "author",
    type: "integer",
    getElements: async () => {
      const authors = await (0, import_data31.resolveSelect)(import_core_data30.store).getEntityRecords(
        "root",
        "user",
        {
          per_page: -1,
          who: "authors",
          _fields: "id,name",
          context: "view"
        }
      ) ?? [];
      return authors.map(({ id, name: name2 }) => ({
        value: id,
        label: name2
      }));
    },
    render: AuthorView2,
    filterBy: {
      operators: ["isAny", "isNone"]
    },
    readOnly: true
  };
  var author_default2 = authorField2;

  // packages/media-fields/build-module/caption/index.mjs
  var import_i18n82 = __toESM(require_i18n(), 1);

  // packages/media-fields/build-module/utils/get-raw-content.mjs
  function getRawContent(content) {
    if (!content) {
      return "";
    }
    if (typeof content === "string") {
      return content;
    }
    if (typeof content === "object" && "raw" in content) {
      return content.raw || "";
    }
    return "";
  }

  // packages/media-fields/build-module/caption/index.mjs
  var captionField = {
    id: "caption",
    type: "text",
    label: (0, import_i18n82.__)("Caption"),
    getValue: ({ item }) => getRawContent(item?.caption),
    render: ({ item }) => getRawContent(item?.caption) || "-",
    Edit: {
      control: "textarea",
      rows: 2
    },
    enableSorting: false,
    filterBy: false
  };
  var caption_default = captionField;

  // packages/media-fields/build-module/date_added/index.mjs
  var import_i18n83 = __toESM(require_i18n(), 1);
  var dateAddedField = {
    id: "date",
    type: "datetime",
    label: (0, import_i18n83.__)("Date added"),
    filterBy: {
      operators: ["before", "after"]
    },
    readOnly: true
  };
  var date_added_default = dateAddedField;

  // packages/media-fields/build-module/description/index.mjs
  var import_i18n84 = __toESM(require_i18n(), 1);
  var import_jsx_runtime276 = __toESM(require_jsx_runtime(), 1);
  var descriptionField2 = {
    id: "description",
    type: "text",
    label: (0, import_i18n84.__)("Description"),
    getValue: ({ item }) => getRawContent(item?.description),
    render: ({ item }) => /* @__PURE__ */ (0, import_jsx_runtime276.jsx)("div", { children: getRawContent(item?.description) || "-" }),
    Edit: {
      control: "textarea",
      rows: 5
    },
    enableSorting: false,
    filterBy: false
  };
  var description_default2 = descriptionField2;

  // packages/media-fields/build-module/filename/index.mjs
  var import_i18n85 = __toESM(require_i18n(), 1);
  var import_url8 = __toESM(require_url(), 1);

  // packages/media-fields/build-module/filename/view.mjs
  var import_element144 = __toESM(require_element(), 1);
  var import_url7 = __toESM(require_url(), 1);
  var import_jsx_runtime277 = __toESM(require_jsx_runtime(), 1);
  var TRUNCATE_LENGTH = 15;
  function FileNameView({
    item
  }) {
    const fileName = (0, import_element144.useMemo)(
      () => item?.source_url ? (0, import_url7.getFilename)(item.source_url) : null,
      [item?.source_url]
    );
    if (!fileName) {
      return "";
    }
    if (fileName.length <= TRUNCATE_LENGTH) {
      return /* @__PURE__ */ (0, import_jsx_runtime277.jsx)("span", { className: "dataviews-media-field__filename", children: fileName });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime277.jsxs)(tooltip_exports.Root, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime277.jsx)(
        tooltip_exports.Trigger,
        {
          render: /* @__PURE__ */ (0, import_jsx_runtime277.jsx)("span", { className: "dataviews-media-field__filename", children: fileName })
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime277.jsx)(tooltip_exports.Popup, { children: fileName })
    ] });
  }

  // packages/media-fields/build-module/filename/index.mjs
  var filenameField = {
    id: "filename",
    type: "text",
    label: (0, import_i18n85.__)("File name"),
    getValue: ({ item }) => (0, import_url8.getFilename)(item?.source_url || ""),
    render: FileNameView,
    enableSorting: false,
    filterBy: false,
    readOnly: true
  };
  var filename_default = filenameField;

  // packages/media-fields/build-module/filesize/index.mjs
  var import_i18n86 = __toESM(require_i18n(), 1);
  var KB_IN_BYTES = 1024;
  var MB_IN_BYTES = 1024 * KB_IN_BYTES;
  var GB_IN_BYTES = 1024 * MB_IN_BYTES;
  var TB_IN_BYTES = 1024 * GB_IN_BYTES;
  var PB_IN_BYTES = 1024 * TB_IN_BYTES;
  var EB_IN_BYTES = 1024 * PB_IN_BYTES;
  var ZB_IN_BYTES = 1024 * EB_IN_BYTES;
  var YB_IN_BYTES = 1024 * ZB_IN_BYTES;
  function getBytesString(bytes, unitSymbol, decimals = 2) {
    return (0, import_i18n86.sprintf)(
      // translators: 1: Actual bytes of a file. 2: The unit symbol (e.g. MB).
      (0, import_i18n86._x)("%1$s %2$s", "file size"),
      bytes.toLocaleString(void 0, {
        minimumFractionDigits: 0,
        maximumFractionDigits: decimals
      }),
      unitSymbol
    );
  }
  function formatFileSize(bytes, decimals = 2) {
    if (bytes === 0) {
      return getBytesString(0, (0, import_i18n86._x)("B", "unit symbol"), decimals);
    }
    const quant = {
      /* translators: Unit symbol for yottabyte. */
      [(0, import_i18n86._x)("YB", "unit symbol")]: YB_IN_BYTES,
      /* translators: Unit symbol for zettabyte. */
      [(0, import_i18n86._x)("ZB", "unit symbol")]: ZB_IN_BYTES,
      /* translators: Unit symbol for exabyte. */
      [(0, import_i18n86._x)("EB", "unit symbol")]: EB_IN_BYTES,
      /* translators: Unit symbol for petabyte. */
      [(0, import_i18n86._x)("PB", "unit symbol")]: PB_IN_BYTES,
      /* translators: Unit symbol for terabyte. */
      [(0, import_i18n86._x)("TB", "unit symbol")]: TB_IN_BYTES,
      /* translators: Unit symbol for gigabyte. */
      [(0, import_i18n86._x)("GB", "unit symbol")]: GB_IN_BYTES,
      /* translators: Unit symbol for megabyte. */
      [(0, import_i18n86._x)("MB", "unit symbol")]: MB_IN_BYTES,
      /* translators: Unit symbol for kilobyte. */
      [(0, import_i18n86._x)("KB", "unit symbol")]: KB_IN_BYTES,
      /* translators: Unit symbol for byte. */
      [(0, import_i18n86._x)("B", "unit symbol")]: 1
    };
    for (const [unit, mag] of Object.entries(quant)) {
      if (bytes >= mag) {
        return getBytesString(bytes / mag, unit, decimals);
      }
    }
    return "";
  }
  var filesizeField = {
    id: "filesize",
    type: "text",
    label: (0, import_i18n86.__)("File size"),
    getValue: ({ item }) => item?.media_details?.filesize ? formatFileSize(item?.media_details?.filesize) : "",
    isVisible: (item) => {
      return !!item?.media_details?.filesize;
    },
    enableSorting: false,
    filterBy: false,
    readOnly: true
  };
  var filesize_default = filesizeField;

  // packages/media-fields/build-module/media_dimensions/index.mjs
  var import_i18n87 = __toESM(require_i18n(), 1);
  var mediaDimensionsField = {
    id: "media_dimensions",
    type: "text",
    label: (0, import_i18n87.__)("Dimensions"),
    getValue: ({ item }) => item?.media_details?.width && item?.media_details?.height ? (0, import_i18n87.sprintf)(
      // translators: 1: Width. 2: Height.
      (0, import_i18n87._x)("%1$s \xD7 %2$s", "image dimensions"),
      item?.media_details?.width?.toString(),
      item?.media_details?.height?.toString()
    ) : "",
    isVisible: (item) => {
      return !!(item?.media_details?.width && item?.media_details?.height);
    },
    enableSorting: false,
    filterBy: false,
    readOnly: true
  };
  var media_dimensions_default = mediaDimensionsField;

  // packages/media-fields/build-module/mime_type/index.mjs
  var import_i18n88 = __toESM(require_i18n(), 1);
  var mimeTypeField = {
    id: "mime_type",
    type: "text",
    label: (0, import_i18n88.__)("File type"),
    getValue: ({ item }) => item?.mime_type || "",
    render: ({ item }) => item?.mime_type || "-",
    // Disable sorting until REST API support for ordering my `mime_type` is added.
    // See: https://core.trac.wordpress.org/ticket/64073
    enableSorting: false,
    filterBy: false,
    readOnly: true
  };
  var mime_type_default = mimeTypeField;

  // packages/editor/build-module/dataviews/fields/content-preview/index.mjs
  var import_i18n222 = __toESM(require_i18n(), 1);

  // packages/editor/build-module/dataviews/fields/content-preview/content-preview-view.mjs
  var import_i18n221 = __toESM(require_i18n(), 1);
  var import_block_editor35 = __toESM(require_block_editor(), 1);
  var import_data91 = __toESM(require_data(), 1);
  var import_core_data60 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/provider/index.mjs
  var import_element308 = __toESM(require_element(), 1);
  var import_data90 = __toESM(require_data(), 1);
  var import_core_data59 = __toESM(require_core_data(), 1);
  var import_block_editor34 = __toESM(require_block_editor(), 1);
  var import_patterns8 = __toESM(require_patterns(), 1);
  var import_blocks18 = __toESM(require_blocks(), 1);

  // packages/editor/build-module/components/provider/with-registry-provider.mjs
  var import_element145 = __toESM(require_element(), 1);
  var import_data32 = __toESM(require_data(), 1);
  var import_compose12 = __toESM(require_compose(), 1);
  var import_block_editor4 = __toESM(require_block_editor(), 1);
  var import_jsx_runtime278 = __toESM(require_jsx_runtime(), 1);
  function getSubRegistry(subRegistries, registry, useSubRegistry) {
    if (!useSubRegistry) {
      return registry;
    }
    let subRegistry = subRegistries.get(registry);
    if (!subRegistry) {
      subRegistry = (0, import_data32.createRegistry)(
        {
          "core/block-editor": import_block_editor4.storeConfig
        },
        registry
      );
      subRegistry.registerStore("core/editor", storeConfig);
      subRegistries.set(registry, subRegistry);
    }
    return subRegistry;
  }
  var withRegistryProvider = (0, import_compose12.createHigherOrderComponent)(
    (WrappedComponent) => ({ useSubRegistry = true, ...props }) => {
      const registry = (0, import_data32.useRegistry)();
      const [subRegistries] = (0, import_element145.useState)(() => /* @__PURE__ */ new WeakMap());
      const subRegistry = getSubRegistry(
        subRegistries,
        registry,
        useSubRegistry
      );
      if (subRegistry === registry) {
        return /* @__PURE__ */ (0, import_jsx_runtime278.jsx)(WrappedComponent, { registry, ...props });
      }
      return /* @__PURE__ */ (0, import_jsx_runtime278.jsx)(import_data32.RegistryProvider, { value: subRegistry, children: /* @__PURE__ */ (0, import_jsx_runtime278.jsx)(WrappedComponent, { registry: subRegistry, ...props }) });
    },
    "withRegistryProvider"
  );
  var with_registry_provider_default = withRegistryProvider;

  // packages/editor/build-module/components/provider/use-autosave-notice.mjs
  var import_element147 = __toESM(require_element(), 1);
  var import_data34 = __toESM(require_data(), 1);
  var import_i18n89 = __toESM(require_i18n(), 1);
  var import_notices13 = __toESM(require_notices(), 1);
  var import_url9 = __toESM(require_url(), 1);

  // packages/editor/build-module/components/provider/use-entity-contains-snapshot.mjs
  var import_element146 = __toESM(require_element(), 1);
  var import_data33 = __toESM(require_data(), 1);
  var import_core_data31 = __toESM(require_core_data(), 1);
  var { entityContainsSnapshot } = unlock(import_core_data31.privateApis);
  var SNAPSHOT_STATUS_SYNC_WAIT_MS = 3e3;
  function useEntityContainsSnapshot({
    postType: postType2,
    postId: postId2,
    snapshot
  }) {
    const registry = (0, import_data33.useRegistry)();
    const [snapshotStatus, setSnapshotStatus] = (0, import_element146.useState)("pending");
    const isPendingRef = (0, import_element146.useRef)(false);
    const [hasWaitExpired, setHasWaitExpired] = (0, import_element146.useState)(false);
    const { syncStatus, isCollaborationEnabledForPost } = (0, import_data33.useSelect)(
      (select9) => {
        if (!snapshot) {
          return {
            syncStatus: void 0,
            isCollaborationEnabledForPost: false
          };
        }
        const connectionStatus = unlock(
          select9(import_core_data31.store)
        ).getEntitySyncConnectionStatus("postType", postType2, postId2);
        return {
          syncStatus: connectionStatus?.status,
          isCollaborationEnabledForPost: unlock(
            select9(store)
          ).isCollaborationEnabledForCurrentPost()
        };
      },
      [postType2, postId2, snapshot]
    );
    (0, import_element146.useLayoutEffect)(() => {
      const canDefer = snapshot && unlock(
        registry.select(store)
      ).isCollaborationEnabledForCurrentPost();
      if (!canDefer) {
        setSnapshotStatus("missing");
        return;
      }
      isPendingRef.current = true;
      const timeoutId = setTimeout(() => {
        setHasWaitExpired(true);
      }, SNAPSHOT_STATUS_SYNC_WAIT_MS);
      return () => clearTimeout(timeoutId);
    }, []);
    (0, import_element146.useEffect)(() => {
      if (!isPendingRef.current) {
        return;
      }
      const containsSnapshot = entityContainsSnapshot(
        "postType",
        postType2,
        postId2,
        snapshot
      );
      const isCollaborationEnabled = unlock(
        registry.select(store)
      ).isCollaborationEnabledForCurrentPost();
      const connectionStatus = unlock(
        registry.select(import_core_data31.store)
      ).getEntitySyncConnectionStatus("postType", postType2, postId2);
      let nextSnapshotStatus;
      if (containsSnapshot) {
        nextSnapshotStatus = "present";
      } else if (!isCollaborationEnabled) {
        nextSnapshotStatus = "missing";
      } else if ("disconnected" === connectionStatus?.status) {
        nextSnapshotStatus = "missing";
      } else if (hasWaitExpired) {
        nextSnapshotStatus = "missing";
      } else {
        return;
      }
      isPendingRef.current = false;
      setSnapshotStatus(nextSnapshotStatus);
    }, [
      syncStatus,
      hasWaitExpired,
      isCollaborationEnabledForPost,
      postType2,
      postId2
    ]);
    return snapshotStatus;
  }

  // packages/editor/build-module/components/provider/use-autosave-notice.mjs
  function showAutosaveExistsNotice({
    autosave: autosave2,
    createWarningNotice,
    registry,
    setCurrentRevisionId: setCurrentRevisionId2
  }) {
    const autosaveId = Number((0, import_url9.getQueryArg)(autosave2.editLink, "revision"));
    createWarningNotice(
      (0, import_i18n89.__)(
        "There is an autosave of this post that is more recent than the version below."
      ),
      {
        id: "autosave-exists",
        actions: [
          {
            label: (0, import_i18n89.__)("View the autosave"),
            ...autosaveId ? {
              onClick: () => {
                const { disableVisualRevisions } = registry.select(store).getEditorSettings();
                if (disableVisualRevisions) {
                  window.location.href = autosave2.editLink;
                  return;
                }
                setCurrentRevisionId2(autosaveId);
              }
            } : { url: autosave2.editLink }
          }
        ]
      }
    );
  }
  function useAutosaveNotice({ post: post2, recovery, settings }) {
    const registry = (0, import_data34.useRegistry)();
    const { createWarningNotice } = (0, import_data34.useDispatch)(import_notices13.store);
    const { setCurrentRevisionId: setCurrentRevisionId2 } = unlock((0, import_data34.useDispatch)(store));
    const snapshotStatus = useEntityContainsSnapshot({
      postType: post2.type,
      postId: post2.id,
      snapshot: recovery ? void 0 : settings.autosave?.crdtSnapshot
    });
    (0, import_element147.useLayoutEffect)(() => {
      if (recovery || !settings.autosave) {
        return;
      }
      if ("present" === snapshotStatus) {
        return;
      }
      if ("pending" === snapshotStatus) {
        return;
      }
      showAutosaveExistsNotice({
        autosave: settings.autosave,
        createWarningNotice,
        registry,
        setCurrentRevisionId: setCurrentRevisionId2
      });
    }, [snapshotStatus]);
  }

  // packages/editor/build-module/components/provider/use-block-editor-settings.mjs
  var import_element286 = __toESM(require_element(), 1);
  var import_data64 = __toESM(require_data(), 1);
  var import_core_data51 = __toESM(require_core_data(), 1);
  var import_i18n207 = __toESM(require_i18n(), 1);
  var import_preferences3 = __toESM(require_preferences(), 1);
  var import_compose47 = __toESM(require_compose(), 1);
  var import_blocks12 = __toESM(require_blocks(), 1);
  var import_block_editor21 = __toESM(require_block_editor(), 1);

  // packages/media-editor/build-module/components/media-editor-provider/index.mjs
  var import_element148 = __toESM(require_element(), 1);
  var import_jsx_runtime279 = __toESM(require_jsx_runtime(), 1);
  var MediaEditorContext = (0, import_element148.createContext)(
    void 0
  );
  function MediaEditorProvider({
    value,
    onChange,
    settings = {},
    children
  }) {
    const contextValue = {
      media: value,
      onChange,
      fields: settings.fields || []
    };
    return /* @__PURE__ */ (0, import_jsx_runtime279.jsx)(MediaEditorContext.Provider, { value: contextValue, children });
  }
  function useMediaEditorContext() {
    const context = (0, import_element148.useContext)(MediaEditorContext);
    if (!context) {
      throw new Error(
        "useMediaEditorContext must be used within MediaEditorProvider"
      );
    }
    return context;
  }

  // packages/media-editor/build-module/components/media-preview/index.mjs
  var import_components24 = __toESM(require_components(), 1);
  var import_element149 = __toESM(require_element(), 1);
  var import_i18n90 = __toESM(require_i18n(), 1);

  // packages/media-editor/build-module/utils/get-media-type.mjs
  function getMediaTypeFromMimeType(mimeType) {
    if (!mimeType) {
      return { type: "application" };
    }
    if (mimeType.startsWith("image/")) {
      return { type: "image" };
    }
    if (mimeType.startsWith("video/")) {
      return { type: "video" };
    }
    if (mimeType.startsWith("audio/")) {
      return { type: "audio" };
    }
    return { type: "application" };
  }

  // packages/media-editor/build-module/components/media-preview/index.mjs
  var import_jsx_runtime280 = __toESM(require_jsx_runtime(), 1);
  function MediaPreviewContent({
    mediaType,
    mediaUrl,
    altText,
    displayTitle,
    mimeType,
    onLoad,
    onError,
    loadingState
  }) {
    switch (mediaType.type) {
      case "image":
        return /* @__PURE__ */ (0, import_jsx_runtime280.jsx)(
          "img",
          {
            className: loadingState === "loaded" ? "loaded" : "",
            src: mediaUrl,
            alt: altText || "",
            onLoad,
            onError
          }
        );
      case "video":
        return /* @__PURE__ */ (0, import_jsx_runtime280.jsx)("video", { src: mediaUrl, controls: true, onError, children: displayTitle });
      case "audio":
        return /* @__PURE__ */ (0, import_jsx_runtime280.jsx)("audio", { src: mediaUrl, controls: true, onError, children: displayTitle });
      default:
        return /* @__PURE__ */ (0, import_jsx_runtime280.jsxs)("div", { className: "media-editor-preview__file-info", children: [
          /* @__PURE__ */ (0, import_jsx_runtime280.jsx)("p", { className: "media-editor-preview__file-name", children: displayTitle }),
          /* @__PURE__ */ (0, import_jsx_runtime280.jsx)("p", { className: "media-editor-preview__mime-type", children: mimeType }),
          /* @__PURE__ */ (0, import_jsx_runtime280.jsx)(
            "a",
            {
              href: mediaUrl,
              target: "_blank",
              rel: "noopener",
              className: "media-editor-preview__download-link",
              children: (0, import_i18n90.__)("View file")
            }
          )
        ] });
    }
  }
  function MediaPreview2(props) {
    const [loadingState, setLoadingState] = (0, import_element149.useState)("loading");
    const { media } = useMediaEditorContext();
    const {
      source_url: mediaUrl,
      mime_type: mimeType,
      alt_text: altText,
      title
    } = media || {};
    const mediaType = getMediaTypeFromMimeType(mimeType);
    if (!mediaUrl) {
      return /* @__PURE__ */ (0, import_jsx_runtime280.jsx)("div", { className: "media-editor-preview media-editor-preview--empty", children: /* @__PURE__ */ (0, import_jsx_runtime280.jsx)("p", { children: (0, import_i18n90.__)("No media file available.") }) });
    }
    if (loadingState === "error") {
      return /* @__PURE__ */ (0, import_jsx_runtime280.jsxs)("div", { className: "media-editor-preview media-editor-preview--error", children: [
        /* @__PURE__ */ (0, import_jsx_runtime280.jsx)("p", { children: (0, import_i18n90.__)("Failed to load media file.") }),
        /* @__PURE__ */ (0, import_jsx_runtime280.jsx)("p", { className: "media-editor-preview__url", children: mediaUrl })
      ] });
    }
    const displayTitle = typeof title === "string" ? title : title?.rendered || title?.raw;
    return /* @__PURE__ */ (0, import_jsx_runtime280.jsxs)(
      "div",
      {
        ...props,
        className: `media-editor-preview media-editor-preview--${mediaType.type}`,
        children: [
          mediaType.type === "image" && loadingState === "loading" && /* @__PURE__ */ (0, import_jsx_runtime280.jsx)("div", { className: "media-editor-preview__spinner", children: /* @__PURE__ */ (0, import_jsx_runtime280.jsx)(import_components24.Spinner, {}) }),
          /* @__PURE__ */ (0, import_jsx_runtime280.jsx)(
            MediaPreviewContent,
            {
              mediaType,
              mediaUrl,
              altText,
              displayTitle,
              mimeType,
              onLoad: () => setLoadingState("loaded"),
              onError: () => setLoadingState("error"),
              loadingState
            }
          )
        ]
      }
    );
  }

  // packages/dataviews/build-module/components/dataviews-context/index.mjs
  var import_element150 = __toESM(require_element(), 1);

  // packages/dataviews/build-module/constants.mjs
  var import_i18n91 = __toESM(require_i18n(), 1);
  var OPERATOR_IS_ANY2 = "isAny";
  var OPERATOR_IS_NONE = "isNone";
  var OPERATOR_IS_ALL = "isAll";
  var OPERATOR_IS_NOT_ALL = "isNotAll";
  var OPERATOR_BETWEEN = "between";
  var OPERATOR_IN_THE_PAST = "inThePast";
  var OPERATOR_OVER = "over";
  var OPERATOR_IS = "is";
  var OPERATOR_IS_NOT = "isNot";
  var OPERATOR_LESS_THAN = "lessThan";
  var OPERATOR_GREATER_THAN = "greaterThan";
  var OPERATOR_LESS_THAN_OR_EQUAL = "lessThanOrEqual";
  var OPERATOR_GREATER_THAN_OR_EQUAL = "greaterThanOrEqual";
  var OPERATOR_BEFORE = "before";
  var OPERATOR_AFTER = "after";
  var OPERATOR_BEFORE_INC = "beforeInc";
  var OPERATOR_AFTER_INC = "afterInc";
  var OPERATOR_CONTAINS = "contains";
  var OPERATOR_NOT_CONTAINS = "notContains";
  var OPERATOR_STARTS_WITH = "startsWith";
  var OPERATOR_ON = "on";
  var OPERATOR_NOT_ON = "notOn";
  var SORTING_DIRECTIONS = ["asc", "desc"];
  var sortArrows = { asc: "\u2191", desc: "\u2193" };
  var sortValues = { asc: "ascending", desc: "descending" };
  var sortLabels = {
    asc: (0, import_i18n91.__)("Sort ascending"),
    desc: (0, import_i18n91.__)("Sort descending")
  };
  var sortIcons = {
    asc: arrow_up_default,
    desc: arrow_down_default
  };
  var LAYOUT_TABLE = "table";
  var LAYOUT_GRID = "grid";
  var LAYOUT_LIST = "list";
  var LAYOUT_ACTIVITY = "activity";
  var LAYOUT_PICKER_GRID = "pickerGrid";
  var LAYOUT_PICKER_TABLE = "pickerTable";
  var LAYOUT_PICKER_ACTIVITY = "pickerActivity";
  var MEDIA_ASPECT_RATIOS = [
    "1/1",
    "4/3",
    "3/4",
    "3/2",
    "2/3",
    "16/9",
    "9/16"
  ];

  // packages/dataviews/build-module/components/dataviews-context/index.mjs
  var DataViewsContext = (0, import_element150.createContext)({
    view: { type: LAYOUT_TABLE },
    onChangeView: () => {
    },
    fields: [],
    data: [],
    paginationInfo: {
      totalItems: 0,
      totalPages: 0
    },
    selection: [],
    onChangeSelection: () => {
    },
    setOpenedFilter: () => {
    },
    openedFilter: null,
    getItemId: (item) => item.id,
    isItemClickable: () => true,
    renderItemLink: void 0,
    containerWidth: 0,
    containerRef: (0, import_element150.createRef)(),
    resizeObserverRef: () => {
    },
    defaultLayouts: { list: {}, grid: {}, table: {} },
    filters: [],
    isShowingFilter: false,
    setIsShowingFilter: () => {
    },
    hasInitiallyLoaded: false,
    config: {
      perPageSizes: []
    },
    intersectionObserver: null
  });
  DataViewsContext.displayName = "DataViewsContext";
  var dataviews_context_default = DataViewsContext;

  // packages/dataviews/build-module/components/dataviews-layouts/index.mjs
  var import_i18n113 = __toESM(require_i18n(), 1);

  // packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs
  var import_i18n99 = __toESM(require_i18n(), 1);
  var import_components30 = __toESM(require_components(), 1);
  var import_element159 = __toESM(require_element(), 1);
  var import_keycodes2 = __toESM(require_keycodes(), 1);

  // packages/dataviews/build-module/components/dataviews-selection-checkbox/index.mjs
  var import_components25 = __toESM(require_components(), 1);
  var import_i18n92 = __toESM(require_i18n(), 1);
  var import_jsx_runtime281 = __toESM(require_jsx_runtime(), 1);
  var SELECTION_CHECKBOX_CLASS = "dataviews-selection-checkbox";
  function DataViewsSelectionCheckbox({
    selection,
    onChangeSelection,
    item,
    getItemId: getItemId3,
    titleField: titleField2,
    disabled: disabled2,
    ...extraProps
  }) {
    const id = getItemId3(item);
    const isInSelectionArray = selection.includes(id);
    const checked2 = !disabled2 && isInSelectionArray;
    const selectionLabel = titleField2?.getValue?.({ item }) || (0, import_i18n92.__)("(no title)");
    return /* @__PURE__ */ (0, import_jsx_runtime281.jsx)(
      import_components25.CheckboxControl,
      {
        className: SELECTION_CHECKBOX_CLASS,
        "aria-label": selectionLabel,
        "aria-disabled": disabled2,
        checked: checked2,
        onChange: () => {
          if (disabled2) {
            return;
          }
          onChangeSelection(
            isInSelectionArray ? selection.filter((itemId) => id !== itemId) : [...selection, id]
          );
        },
        ...extraProps
      }
    );
  }

  // packages/dataviews/build-module/components/dataviews-item-actions/index.mjs
  var import_components26 = __toESM(require_components(), 1);
  var import_i18n93 = __toESM(require_i18n(), 1);
  var import_element151 = __toESM(require_element(), 1);
  var import_data35 = __toESM(require_data(), 1);
  var import_compose13 = __toESM(require_compose(), 1);

  // packages/kebab-case/build-module/index.mjs
  function kebabCase2(str3) {
    let input = str3?.toString?.() ?? "";
    input = input.replace(/['\u2019]/, "");
    return paramCase(input, {
      splitRegexp: [
        /(?!(?:1ST|2ND|3RD|[4-9]TH)(?![a-z]))([a-z0-9])([A-Z])/g,
        // fooBar => foo-bar, 3Bar => 3-bar
        /(?!(?:1st|2nd|3rd|[4-9]th)(?![a-z]))([0-9])([a-z])/g,
        // 3bar => 3-bar
        /([A-Za-z])([0-9])/g,
        // Foo3 => foo-3, foo3 => foo-3
        /([A-Z])([A-Z][a-z])/g
        // FOOBar => foo-bar
      ]
    });
  }

  // packages/dataviews/build-module/components/dataviews-item-actions/index.mjs
  var import_jsx_runtime282 = __toESM(require_jsx_runtime(), 1);
  function ButtonTrigger({
    action,
    onClick,
    items,
    variant
  }) {
    const label = typeof action.label === "string" ? action.label : action.label(items);
    return /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(
      import_components26.Button,
      {
        disabled: !!action.disabled,
        accessibleWhenDisabled: true,
        size: "compact",
        variant,
        onClick,
        children: label
      }
    );
  }
  function MenuItemTrigger({
    action,
    onClick,
    items
  }) {
    const label = typeof action.label === "string" ? action.label : action.label(items);
    return /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(menu_exports.Item, { disabled: action.disabled, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(menu_exports.ItemLabel, { children: label }) });
  }
  function ActionModal({
    action,
    items,
    closeModal: closeModal2
  }) {
    const label = typeof action.label === "string" ? action.label : action.label(items);
    const modalHeader = typeof action.modalHeader === "function" ? action.modalHeader(items) : action.modalHeader;
    return /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(
      import_components26.Modal,
      {
        title: modalHeader || label,
        __experimentalHideHeader: !!action.hideModalHeader,
        onRequestClose: closeModal2,
        focusOnMount: action.modalFocusOnMount ?? true,
        size: action.modalSize || "medium",
        overlayClassName: `dataviews-action-modal dataviews-action-modal__${kebabCase2(
          action.id
        )}`,
        children: /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(action.RenderModal, { items, closeModal: closeModal2 })
      }
    );
  }
  function ActionsMenuGroup({
    actions: actions2,
    item,
    registry,
    setActiveModalAction
  }) {
    const { primaryActions, regularActions } = (0, import_element151.useMemo)(() => {
      return actions2.reduce(
        (acc, action) => {
          (action.isPrimary ? acc.primaryActions : acc.regularActions).push(action);
          return acc;
        },
        {
          primaryActions: [],
          regularActions: []
        }
      );
    }, [actions2]);
    const renderActionGroup = (actionList) => actionList.map((action) => /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(
      MenuItemTrigger,
      {
        action,
        onClick: () => {
          if ("RenderModal" in action) {
            setActiveModalAction(action);
            return;
          }
          action.callback([item], { registry });
        },
        items: [item]
      },
      action.id
    ));
    return /* @__PURE__ */ (0, import_jsx_runtime282.jsxs)(menu_exports.Group, { children: [
      renderActionGroup(primaryActions),
      renderActionGroup(regularActions)
    ] });
  }
  function ItemActions({
    item,
    actions: actions2,
    isCompact
  }) {
    const registry = (0, import_data35.useRegistry)();
    const { primaryActions, eligibleActions } = (0, import_element151.useMemo)(() => {
      const _eligibleActions = actions2.filter(
        (action) => !action.isEligible || action.isEligible(item)
      );
      const _primaryActions = _eligibleActions.filter(
        (action) => action.isPrimary
      );
      return {
        primaryActions: _primaryActions,
        eligibleActions: _eligibleActions
      };
    }, [actions2, item]);
    const isMobileViewport = (0, import_compose13.useViewportMatch)("medium", "<");
    if (isCompact) {
      return /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(
        CompactItemActions,
        {
          item,
          actions: eligibleActions,
          isSmall: true,
          registry
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime282.jsxs)(
      Stack,
      {
        direction: "row",
        justify: "flex-end",
        className: "dataviews-item-actions",
        style: {
          flexShrink: 0,
          width: "auto"
        },
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(
            PrimaryActions,
            {
              item,
              actions: primaryActions,
              registry
            }
          ),
          (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu
          // there if there are any actions at all.
          isMobileViewport) && /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(
            CompactItemActions,
            {
              item,
              actions: eligibleActions,
              registry
            }
          )
        ]
      }
    );
  }
  function CompactItemActions({
    item,
    actions: actions2,
    isSmall,
    registry
  }) {
    const [activeModalAction, setActiveModalAction] = (0, import_element151.useState)(
      null
    );
    return /* @__PURE__ */ (0, import_jsx_runtime282.jsxs)(import_jsx_runtime282.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime282.jsxs)(menu_exports.Root, { disabled: !actions2.length, children: [
        /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(
          menu_exports.Trigger,
          {
            render: /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(
              import_components26.Button,
              {
                size: isSmall ? "small" : "compact",
                icon: more_vertical_default,
                label: (0, import_i18n93.__)("Actions"),
                accessibleWhenDisabled: true,
                disabled: !actions2.length,
                className: "dataviews-all-actions-button"
              }
            )
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(menu_exports.Popup, { positioner: /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(menu_exports.Positioner, { align: "end" }), children: /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(
          ActionsMenuGroup,
          {
            actions: actions2,
            item,
            registry,
            setActiveModalAction
          }
        ) })
      ] }),
      !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(
        ActionModal,
        {
          action: activeModalAction,
          items: [item],
          closeModal: () => setActiveModalAction(null)
        }
      )
    ] });
  }
  function PrimaryActions({
    item,
    actions: actions2,
    registry,
    buttonVariant
  }) {
    const [activeModalAction, setActiveModalAction] = (0, import_element151.useState)(null);
    const isMobileViewport = (0, import_compose13.useViewportMatch)("medium", "<");
    if (isMobileViewport) {
      return null;
    }
    if (!Array.isArray(actions2) || actions2.length === 0) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime282.jsxs)(import_jsx_runtime282.Fragment, { children: [
      actions2.map((action) => /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(
        ButtonTrigger,
        {
          action,
          onClick: () => {
            if ("RenderModal" in action) {
              setActiveModalAction(action);
              return;
            }
            action.callback([item], { registry });
          },
          items: [item],
          variant: buttonVariant
        },
        action.id
      )),
      !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(
        ActionModal,
        {
          action: activeModalAction,
          items: [item],
          closeModal: () => setActiveModalAction(null)
        }
      )
    ] });
  }

  // packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs
  var import_components27 = __toESM(require_components(), 1);
  var import_i18n95 = __toESM(require_i18n(), 1);
  var import_element152 = __toESM(require_element(), 1);
  var import_data36 = __toESM(require_data(), 1);
  var import_compose14 = __toESM(require_compose(), 1);

  // packages/dataviews/build-module/utils/get-footer-message.mjs
  var import_i18n94 = __toESM(require_i18n(), 1);
  function getFooterMessage(selectionCount, itemsCount, totalItems, onlyTotalCount = false) {
    if (selectionCount > 0) {
      return (0, import_i18n94.sprintf)(
        /* translators: %d: number of items. */
        (0, import_i18n94._n)("%d Item selected", "%d Items selected", selectionCount),
        selectionCount
      );
    }
    if (onlyTotalCount || totalItems <= itemsCount) {
      return (0, import_i18n94.sprintf)(
        /* translators: %d: number of items. */
        (0, import_i18n94._n)("%d Item", "%d Items", totalItems),
        totalItems
      );
    }
    return (0, import_i18n94.sprintf)(
      /* translators: %1$d: number of items. %2$d: total number of items. */
      (0, import_i18n94._n)("%1$d of %2$d Item", "%1$d of %2$d Items", totalItems),
      itemsCount,
      totalItems
    );
  }

  // packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs
  var import_jsx_runtime283 = __toESM(require_jsx_runtime(), 1);
  function hasAPossibleBulkAction(actions2, item) {
    return actions2.some(
      (action) => action.supportsBulk && (!action.isEligible || action.isEligible(item))
    );
  }
  function useHasAPossibleBulkAction(actions2, item) {
    return (0, import_element152.useMemo)(
      () => hasAPossibleBulkAction(actions2, item),
      [actions2, item]
    );
  }
  function useSomeItemHasAPossibleBulkAction(actions2, data) {
    return (0, import_element152.useMemo)(
      () => data.some((item) => hasAPossibleBulkAction(actions2, item)),
      [actions2, data]
    );
  }
  function BulkSelectionCheckbox({
    selection,
    onChangeSelection,
    data,
    actions: actions2,
    getItemId: getItemId3,
    disableSelectAll = false
  }) {
    const selectableItems = (0, import_element152.useMemo)(() => {
      return data.filter((item) => {
        return actions2.some(
          (action) => action.supportsBulk && (!action.isEligible || action.isEligible(item))
        );
      });
    }, [data, actions2]);
    const selectedItems = data.filter(
      (item) => selection.includes(getItemId3(item)) && selectableItems.includes(item)
    );
    const hasSelection = selection.length > 0;
    const areAllSelected = selectedItems.length === selectableItems.length;
    if (disableSelectAll) {
      return /* @__PURE__ */ (0, import_jsx_runtime283.jsx)(
        import_components27.CheckboxControl,
        {
          className: "dataviews-view-table-selection-checkbox",
          checked: hasSelection,
          disabled: !hasSelection,
          onChange: () => {
            onChangeSelection([]);
          },
          "aria-label": (0, import_i18n95.__)("Deselect all")
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime283.jsx)(
      import_components27.CheckboxControl,
      {
        className: "dataviews-view-table-selection-checkbox",
        checked: areAllSelected,
        indeterminate: !areAllSelected && !!selectedItems.length,
        onChange: () => {
          if (areAllSelected) {
            onChangeSelection([]);
          } else {
            onChangeSelection(
              selectableItems.map((item) => getItemId3(item))
            );
          }
        },
        "aria-label": areAllSelected ? (0, import_i18n95.__)("Deselect all") : (0, import_i18n95.__)("Select all")
      }
    );
  }

  // packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs
  var import_i18n96 = __toESM(require_i18n(), 1);
  var import_components28 = __toESM(require_components(), 1);
  var import_element153 = __toESM(require_element(), 1);

  // packages/dataviews/build-module/utils/get-hideable-fields.mjs
  function getHideableFields(view, fields2) {
    const togglableFields = [
      view?.titleField,
      view?.mediaField,
      view?.descriptionField
    ].filter(Boolean);
    return fields2.filter(
      (f2) => !togglableFields.includes(f2.id) && f2.type !== "media" && f2.enableHiding !== false
    );
  }

  // packages/dataviews/build-module/components/dataviews-layouts/utils/get-table-columns.mjs
  function getTableColumns(view, fields2) {
    return (view.fields ?? []).filter(
      (fieldId) => fields2.some((field) => field.id === fieldId)
    );
  }

  // packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs
  var import_jsx_runtime284 = __toESM(require_jsx_runtime(), 1);
  function WithMenuSeparators({ children }) {
    return import_element153.Children.toArray(children).filter(Boolean).map((child, i2) => /* @__PURE__ */ (0, import_jsx_runtime284.jsxs)(import_element153.Fragment, { children: [
      i2 > 0 && /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.Separator, {}),
      child
    ] }, i2));
  }
  var _HeaderMenu = (0, import_element153.forwardRef)(function HeaderMenu({
    fieldId,
    view,
    fields: fields2,
    onChangeView,
    onHide,
    setOpenedFilter,
    canMove = true,
    canInsertLeft = true,
    canInsertRight = true
  }, ref) {
    const isSorted = view.sort?.field === fieldId;
    let isHidable = false;
    let isSortable = false;
    let canAddFilter = false;
    let operators = [];
    const field = fields2.find((f2) => f2.id === fieldId);
    const { setIsShowingFilter } = (0, import_element153.useContext)(dataviews_context_default);
    if (!field) {
      return null;
    }
    isHidable = field.enableHiding !== false;
    isSortable = field.enableSorting !== false;
    const header = field.header;
    operators = !!field.filterBy && field.filterBy?.operators || [];
    canAddFilter = !view.filters?.some((_filter) => fieldId === _filter.field) && !!(field.hasElements || field.Edit) && field.filterBy !== false && !field.filterBy?.isPrimary;
    if (!isSortable && !canMove && !isHidable && !canAddFilter) {
      return header;
    }
    const visibleFieldIds = getTableColumns(view, fields2);
    const index3 = visibleFieldIds.indexOf(fieldId);
    const hiddenFields = getHideableFields(view, fields2).filter(
      (f2) => !visibleFieldIds.includes(f2.id)
    );
    const canInsert = (canInsertLeft || canInsertRight) && !!hiddenFields.length;
    const isRtl = (0, import_i18n96.isRTL)();
    return /* @__PURE__ */ (0, import_jsx_runtime284.jsxs)(menu_exports.Root, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime284.jsxs)(
        menu_exports.Trigger,
        {
          render: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(
            import_components28.Button,
            {
              size: "compact",
              className: "dataviews-view-table-header-button",
              ref,
              variant: "tertiary"
            }
          ),
          children: [
            header,
            view.sort && isSorted && /* @__PURE__ */ (0, import_jsx_runtime284.jsx)("span", { "aria-hidden": "true", children: sortArrows[view.sort.direction] })
          ]
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.Popup, { style: { minWidth: "240px" }, children: /* @__PURE__ */ (0, import_jsx_runtime284.jsxs)(WithMenuSeparators, { children: [
        isSortable && /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(
          menu_exports.RadioGroup,
          {
            value: isSorted && view.sort ? view.sort.direction : null,
            onValueChange: (direction) => {
              onChangeView({
                ...view,
                sort: {
                  field: fieldId,
                  direction
                },
                showLevels: false
              });
            },
            children: SORTING_DIRECTIONS.map(
              (direction) => /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(
                menu_exports.RadioItem,
                {
                  value: direction,
                  children: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.ItemLabel, { children: sortLabels[direction] })
                },
                direction
              )
            )
          }
        ),
        canAddFilter && /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(
          menu_exports.Item,
          {
            prefix: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.PrefixIcon, { icon: funnel_default }),
            onClick: () => {
              setOpenedFilter(fieldId);
              setIsShowingFilter(true);
              onChangeView({
                ...view,
                page: 1,
                filters: [
                  ...view.filters || [],
                  {
                    field: fieldId,
                    value: void 0,
                    operator: operators[0]
                  }
                ]
              });
            },
            children: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n96.__)("Add filter") })
          }
        ) }),
        (canMove || isHidable || canInsert) && field && /* @__PURE__ */ (0, import_jsx_runtime284.jsxs)(menu_exports.Group, { children: [
          canMove && /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(
            menu_exports.Item,
            {
              prefix: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.PrefixIcon, { icon: arrow_left_default }),
              disabled: isRtl ? index3 >= visibleFieldIds.length - 1 : index3 < 1,
              onClick: () => {
                const targetIndex = isRtl ? index3 + 1 : index3 - 1;
                const newFields = [
                  ...visibleFieldIds
                ];
                newFields.splice(index3, 1);
                newFields.splice(
                  targetIndex,
                  0,
                  fieldId
                );
                onChangeView({
                  ...view,
                  fields: newFields
                });
              },
              children: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n96.__)("Move left") })
            }
          ),
          canMove && /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(
            menu_exports.Item,
            {
              prefix: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.PrefixIcon, { icon: arrow_right_default }),
              disabled: isRtl ? index3 < 1 : index3 >= visibleFieldIds.length - 1,
              onClick: () => {
                const targetIndex = isRtl ? index3 - 1 : index3 + 1;
                const newFields = [
                  ...visibleFieldIds
                ];
                newFields.splice(index3, 1);
                newFields.splice(
                  targetIndex,
                  0,
                  fieldId
                );
                onChangeView({
                  ...view,
                  fields: newFields
                });
              },
              children: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n96.__)("Move right") })
            }
          ),
          canInsertLeft && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime284.jsxs)(menu_exports.SubmenuRoot, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.SubmenuTrigger, { children: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n96.__)("Insert left") }) }),
            /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.Popup, { children: hiddenFields.map((hiddenField) => {
              const insertIndex = isRtl ? index3 + 1 : index3;
              return /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(
                menu_exports.Item,
                {
                  onClick: () => {
                    onChangeView({
                      ...view,
                      fields: [
                        ...visibleFieldIds.slice(
                          0,
                          insertIndex
                        ),
                        hiddenField.id,
                        ...visibleFieldIds.slice(
                          insertIndex
                        )
                      ]
                    });
                  },
                  children: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.ItemLabel, { children: hiddenField.label })
                },
                hiddenField.id
              );
            }) })
          ] }),
          canInsertRight && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime284.jsxs)(menu_exports.SubmenuRoot, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.SubmenuTrigger, { children: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n96.__)("Insert right") }) }),
            /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.Popup, { children: hiddenFields.map((hiddenField) => {
              const insertIndex = isRtl ? index3 : index3 + 1;
              return /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(
                menu_exports.Item,
                {
                  onClick: () => {
                    onChangeView({
                      ...view,
                      fields: [
                        ...visibleFieldIds.slice(
                          0,
                          insertIndex
                        ),
                        hiddenField.id,
                        ...visibleFieldIds.slice(
                          insertIndex
                        )
                      ]
                    });
                  },
                  children: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.ItemLabel, { children: hiddenField.label })
                },
                hiddenField.id
              );
            }) })
          ] }),
          isHidable && field && /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(
            menu_exports.Item,
            {
              prefix: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.PrefixIcon, { icon: unseen_default }),
              onClick: () => {
                onHide(field);
                onChangeView({
                  ...view,
                  fields: visibleFieldIds.filter(
                    (id) => id !== fieldId
                  )
                });
              },
              children: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n96.__)("Hide column") })
            }
          )
        ] })
      ] }) })
    ] });
  });
  var ColumnHeaderMenu = _HeaderMenu;
  var column_header_menu_default = ColumnHeaderMenu;

  // packages/dataviews/build-module/components/dataviews-layouts/utils/item-click-wrapper.mjs
  var import_element154 = __toESM(require_element(), 1);
  var import_jsx_runtime285 = __toESM(require_jsx_runtime(), 1);
  function getClickableItemProps({
    item,
    isItemClickable: isItemClickable2,
    onClickItem,
    className
  }) {
    if (!isItemClickable2(item) || !onClickItem) {
      return { className };
    }
    return {
      className: className ? `${className} ${className}--clickable` : void 0,
      role: "button",
      tabIndex: 0,
      onClick: (event) => {
        event.stopPropagation();
        onClickItem(item);
      },
      onKeyDown: (event) => {
        if (event.key === "Enter" || event.key === "" || event.key === " ") {
          event.stopPropagation();
          onClickItem(item);
        }
      }
    };
  }
  function ItemClickWrapper({
    item,
    isItemClickable: isItemClickable2,
    onClickItem,
    renderItemLink,
    className,
    children,
    ...extraProps
  }) {
    if (!isItemClickable2(item)) {
      return /* @__PURE__ */ (0, import_jsx_runtime285.jsx)("div", { className, ...extraProps, children });
    }
    if (renderItemLink) {
      const renderedElement = renderItemLink({
        item,
        className: `${className} ${className}--clickable`,
        ...extraProps,
        children
      });
      return (0, import_element154.cloneElement)(renderedElement, {
        onClick: (event) => {
          event.stopPropagation();
          if (renderedElement.props.onClick) {
            renderedElement.props.onClick(event);
          }
        },
        onKeyDown: (event) => {
          if (event.key === "Enter" || event.key === "" || event.key === " ") {
            event.stopPropagation();
            if (renderedElement.props.onKeyDown) {
              renderedElement.props.onKeyDown(event);
            }
          }
        }
      });
    }
    const clickProps = getClickableItemProps({
      item,
      isItemClickable: isItemClickable2,
      onClickItem,
      className
    });
    return /* @__PURE__ */ (0, import_jsx_runtime285.jsx)("div", { ...clickProps, ...extraProps, children });
  }

  // packages/dataviews/build-module/components/dataviews-layouts/table/column-primary.mjs
  var import_jsx_runtime286 = __toESM(require_jsx_runtime(), 1);
  function ColumnPrimary({
    item,
    level,
    titleField: titleField2,
    mediaField,
    mediaAspectRatio,
    descriptionField: descriptionField3,
    onClickItem,
    renderItemLink,
    isItemClickable: isItemClickable2
  }) {
    let mediaSizes = "32px";
    if (mediaAspectRatio) {
      const [ratioWidth, ratioHeight] = mediaAspectRatio.split("/").map(Number);
      mediaSizes = `${Math.min(
        60,
        Math.round(32 * ratioWidth / ratioHeight)
      )}px`;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime286.jsxs)(Stack, { direction: "row", gap: "md", align: "flex-start", justify: "flex-start", children: [
      mediaField && /* @__PURE__ */ (0, import_jsx_runtime286.jsx)(
        ItemClickWrapper,
        {
          item,
          isItemClickable: isItemClickable2,
          onClickItem,
          renderItemLink,
          className: "dataviews-view-table__cell-content-wrapper dataviews-column-primary__media",
          "aria-label": isItemClickable2(item) && (!!onClickItem || !!renderItemLink) && !!titleField2 ? titleField2.getValue?.({ item }) : void 0,
          children: /* @__PURE__ */ (0, import_jsx_runtime286.jsx)(
            mediaField.render,
            {
              item,
              field: mediaField,
              config: { sizes: mediaSizes }
            }
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime286.jsxs)(
        Stack,
        {
          direction: "column",
          align: "flex-start",
          className: "dataviews-view-table__primary-column-content",
          children: [
            titleField2 && /* @__PURE__ */ (0, import_jsx_runtime286.jsxs)(
              ItemClickWrapper,
              {
                item,
                isItemClickable: isItemClickable2,
                onClickItem,
                renderItemLink,
                className: "dataviews-view-table__cell-content-wrapper dataviews-title-field",
                children: [
                  level !== void 0 && level > 0 && /* @__PURE__ */ (0, import_jsx_runtime286.jsxs)("span", { className: "dataviews-view-table__level", children: [
                    Array(level).fill("\u2014").join(" "),
                    "\xA0"
                  ] }),
                  /* @__PURE__ */ (0, import_jsx_runtime286.jsx)(titleField2.render, { item, field: titleField2 })
                ]
              }
            ),
            descriptionField3 && /* @__PURE__ */ (0, import_jsx_runtime286.jsx)(
              descriptionField3.render,
              {
                item,
                field: descriptionField3
              }
            )
          ]
        }
      )
    ] });
  }
  var column_primary_default = ColumnPrimary;

  // packages/dataviews/build-module/components/dataviews-layouts/table/use-scroll-state.mjs
  var import_element155 = __toESM(require_element(), 1);
  var import_i18n97 = __toESM(require_i18n(), 1);
  var isScrolledToEnd = (element) => {
    if ((0, import_i18n97.isRTL)()) {
      const scrollLeft = Math.abs(element.scrollLeft);
      return scrollLeft <= 1;
    }
    return element.scrollLeft + element.clientWidth >= element.scrollWidth - 1;
  };
  function useScrollState({
    scrollContainerRef,
    enabledHorizontal = false
  }) {
    const [isHorizontalScrollEnd, setIsHorizontalScrollEnd] = (0, import_element155.useState)(false);
    const [isVerticallyScrolled, setIsVerticallyScrolled] = (0, import_element155.useState)(false);
    const handleScroll = (0, import_element155.useCallback)(() => {
      const scrollContainer = scrollContainerRef.current;
      if (!scrollContainer) {
        return;
      }
      if (enabledHorizontal) {
        setIsHorizontalScrollEnd(isScrolledToEnd(scrollContainer));
      }
      setIsVerticallyScrolled(scrollContainer.scrollTop > 0);
    }, [scrollContainerRef, enabledHorizontal]);
    (0, import_element155.useEffect)(() => {
      if (typeof window === "undefined" || !scrollContainerRef.current) {
        return () => {
        };
      }
      const scrollContainer = scrollContainerRef.current;
      handleScroll();
      scrollContainer.addEventListener("scroll", handleScroll);
      window.addEventListener("resize", handleScroll);
      return () => {
        scrollContainer.removeEventListener("scroll", handleScroll);
        window.removeEventListener("resize", handleScroll);
      };
    }, [scrollContainerRef, enabledHorizontal, handleScroll]);
    return { isHorizontalScrollEnd, isVerticallyScrolled };
  }

  // packages/dataviews/build-module/components/dataviews-layouts/utils/get-data-by-group.mjs
  function getDataByGroup(data, groupByField) {
    return data.reduce((groups, item) => {
      const groupName = groupByField.getValue({ item });
      if (!groups.has(groupName)) {
        groups.set(groupName, []);
      }
      groups.get(groupName)?.push(item);
      return groups;
    }, /* @__PURE__ */ new Map());
  }

  // packages/dataviews/build-module/components/dataviews-layouts/utils/use-selection-props.mjs
  var import_element156 = __toESM(require_element(), 1);
  var import_keycodes = __toESM(require_keycodes(), 1);
  function getRange(orderedIds, fromIndex, toIndex) {
    return orderedIds.slice(
      Math.min(fromIndex, toIndex),
      Math.max(fromIndex, toIndex) + 1
    );
  }
  function getRangeSelection({
    anchorId,
    targetId,
    lastTargetId,
    orderedIds,
    selection
  }) {
    const targetIndex = orderedIds.indexOf(targetId);
    if (targetIndex === -1) {
      return selection;
    }
    const anchorIndex = anchorId === null ? -1 : orderedIds.indexOf(anchorId);
    const hasAnchor = anchorIndex !== -1;
    const rangeStart = hasAnchor ? anchorIndex : targetIndex;
    const lastTargetIndex = hasAnchor && lastTargetId !== null ? orderedIds.indexOf(lastTargetId) : -1;
    const lastRange = lastTargetIndex === -1 ? [] : getRange(orderedIds, rangeStart, lastTargetIndex);
    const base = selection.filter((id) => !lastRange.includes(id));
    return [
      .../* @__PURE__ */ new Set([
        ...base,
        ...getRange(orderedIds, rangeStart, targetIndex)
      ])
    ];
  }
  function getClosestSelectedId({
    targetId,
    orderedIds,
    selection
  }) {
    const targetIndex = orderedIds.indexOf(targetId);
    if (targetIndex === -1) {
      return null;
    }
    const selectedIds = new Set(selection);
    let closestId = null;
    let closestDistance = Infinity;
    orderedIds.forEach((id, index3) => {
      if (!selectedIds.has(id)) {
        return;
      }
      const distance2 = Math.abs(index3 - targetIndex);
      if (distance2 < closestDistance) {
        closestDistance = distance2;
        closestId = id;
      }
    });
    return closestId;
  }
  function useSelectionProps({
    data,
    getItemId: getItemId3,
    isItemSelectable,
    selection,
    onChangeSelection,
    selectionMode,
    shouldSelectOnClick
  }) {
    const isMultiselect = selectionMode === "multi";
    const allowDeselect = selectionMode !== "single-required";
    const gestureRef = (0, import_element156.useRef)(null);
    const anchorTo = (id) => {
      gestureRef.current = { anchorId: id, lastTargetId: null };
    };
    const isTouchDeviceRef = (0, import_element156.useRef)(false);
    (0, import_element156.useEffect)(() => {
      const markTouchDevice = () => {
        isTouchDeviceRef.current = true;
      };
      document.addEventListener("touchstart", markTouchDevice, {
        once: true
      });
      return () => document.removeEventListener("touchstart", markTouchDevice);
    }, []);
    const selectableIds = data.filter(isItemSelectable).map(getItemId3);
    const selectableIdSet = new Set(selectableIds);
    const hasSelectableItems = selectableIds.length > 0;
    const hasRangeGesture = hasSelectableItems && isMultiselect;
    const getSelectionProps = (id) => {
      const isSelectable = selectableIdSet.has(id);
      return {
        // When a plain click selects, that click is also what anchors the
        // range a following Shift+Click extends from. Modifier clicks never
        // reach here: `onClickCapture` stops them.
        ...shouldSelectOnClick && {
          onClick: () => {
            if (allowDeselect && selection.includes(id)) {
              onChangeSelection(
                selection.filter((itemId) => id !== itemId)
              );
            } else {
              onChangeSelection(
                isMultiselect ? [...selection, id] : [id]
              );
            }
            anchorTo(id);
          }
        },
        onMouseDown: (event) => {
          if (event.button === 0 && event.shiftKey && hasRangeGesture) {
            event.preventDefault();
          }
        },
        onClickCapture: (event) => {
          if (!hasRangeGesture) {
            return;
          }
          const isModifierKeyPressed = (0, import_keycodes.isAppleOS)() ? event.metaKey : event.ctrlKey;
          const isSelectionCheckboxClick = event.target instanceof Element && !!event.target.closest(`.${SELECTION_CHECKBOX_CLASS}`);
          if (!isModifierKeyPressed && !event.shiftKey) {
            if (isSelectable && isSelectionCheckboxClick) {
              anchorTo(id);
            }
            return;
          }
          if (isTouchDeviceRef.current || document.getSelection()?.type === "Range") {
            return;
          }
          event.stopPropagation();
          if (!isSelectionCheckboxClick) {
            event.preventDefault();
          }
          if (!isSelectable) {
            return;
          }
          if (event.shiftKey) {
            let gesture = gestureRef.current;
            if (!gesture || !selectableIdSet.has(gesture.anchorId)) {
              gesture = {
                anchorId: getClosestSelectedId({
                  targetId: id,
                  orderedIds: selectableIds,
                  selection
                }) ?? id,
                lastTargetId: null
              };
            }
            onChangeSelection(
              getRangeSelection({
                anchorId: gesture.anchorId,
                targetId: id,
                lastTargetId: gesture.lastTargetId,
                orderedIds: selectableIds,
                selection
              })
            );
            gestureRef.current = {
              anchorId: gesture.anchorId,
              lastTargetId: id
            };
          } else {
            onChangeSelection(
              selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id]
            );
            anchorTo(id);
          }
        }
      };
    };
    return { getSelectionProps };
  }

  // packages/dataviews/build-module/components/dataviews-view-config/properties-section.mjs
  var import_components29 = __toESM(require_components(), 1);
  var import_i18n98 = __toESM(require_i18n(), 1);
  var import_element157 = __toESM(require_element(), 1);
  var import_jsx_runtime287 = __toESM(require_jsx_runtime(), 1);
  function FieldItem3({
    field,
    isVisible: isVisible2,
    onToggleVisibility
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime287.jsx)(import_components29.__experimentalItem, { onClick: field.enableHiding ? onToggleVisibility : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime287.jsxs)(Stack, { direction: "row", gap: "sm", justify: "flex-start", align: "center", children: [
      /* @__PURE__ */ (0, import_jsx_runtime287.jsx)("div", { style: { height: 24, width: 24 }, children: isVisible2 && /* @__PURE__ */ (0, import_jsx_runtime287.jsx)(import_components29.Icon, { icon: check_default }) }),
      /* @__PURE__ */ (0, import_jsx_runtime287.jsx)("span", { className: "dataviews-view-config__label", children: field.label })
    ] }) });
  }
  function isDefined(item) {
    return !!item;
  }
  function PropertiesSection({
    showLabel = true
  }) {
    const { view, fields: fields2, onChangeView } = (0, import_element157.useContext)(dataviews_context_default);
    const regularFields = getHideableFields(view, fields2);
    if (!regularFields?.length) {
      return null;
    }
    const titleField2 = fields2.find((f2) => f2.id === view.titleField);
    const previewField = fields2.find((f2) => f2.id === view.mediaField);
    const descriptionField3 = fields2.find(
      (f2) => f2.id === view.descriptionField
    );
    const lockedFields = [
      {
        field: titleField2,
        isVisibleFlag: "showTitle"
      },
      {
        field: previewField,
        isVisibleFlag: "showMedia"
      },
      {
        field: descriptionField3,
        isVisibleFlag: "showDescription"
      }
    ].filter(({ field }) => isDefined(field));
    const visibleFieldIds = view.fields ?? [];
    const visibleRegularFieldsCount = regularFields.filter(
      (f2) => visibleFieldIds.includes(f2.id)
    ).length;
    const visibleLockedFields = lockedFields.filter(
      ({ isVisibleFlag }) => view[isVisibleFlag] ?? true
    );
    const totalVisibleFields = visibleLockedFields.length + visibleRegularFieldsCount;
    const isSingleVisibleLockedField = totalVisibleFields === 1 && visibleLockedFields.length === 1;
    return /* @__PURE__ */ (0, import_jsx_runtime287.jsxs)(Stack, { direction: "column", className: "dataviews-field-control", children: [
      showLabel && /* @__PURE__ */ (0, import_jsx_runtime287.jsx)(import_components29.BaseControl.VisualLabel, { children: (0, import_i18n98.__)("Properties") }),
      /* @__PURE__ */ (0, import_jsx_runtime287.jsx)(
        Stack,
        {
          direction: "column",
          className: "dataviews-view-config__properties",
          children: /* @__PURE__ */ (0, import_jsx_runtime287.jsxs)(import_components29.__experimentalItemGroup, { isBordered: true, isSeparated: true, size: "medium", children: [
            lockedFields.map(({ field, isVisibleFlag }) => {
              const isVisible2 = view[isVisibleFlag] ?? true;
              const fieldToRender = isSingleVisibleLockedField && isVisible2 ? { ...field, enableHiding: false } : field;
              return /* @__PURE__ */ (0, import_jsx_runtime287.jsx)(
                FieldItem3,
                {
                  field: fieldToRender,
                  isVisible: isVisible2,
                  onToggleVisibility: () => {
                    onChangeView({
                      ...view,
                      [isVisibleFlag]: !isVisible2
                    });
                  }
                },
                field.id
              );
            }),
            regularFields.map((field) => {
              const isVisible2 = visibleFieldIds.includes(field.id);
              const fieldToRender = totalVisibleFields === 1 && isVisible2 ? { ...field, enableHiding: false } : field;
              return /* @__PURE__ */ (0, import_jsx_runtime287.jsx)(
                FieldItem3,
                {
                  field: fieldToRender,
                  isVisible: isVisible2,
                  onToggleVisibility: () => {
                    onChangeView({
                      ...view,
                      fields: isVisible2 ? visibleFieldIds.filter(
                        (fieldId) => fieldId !== field.id
                      ) : [...visibleFieldIds, field.id]
                    });
                  }
                },
                field.id
              );
            })
          ] })
        }
      )
    ] });
  }

  // packages/dataviews/build-module/hooks/use-delayed-loading.mjs
  var import_element158 = __toESM(require_element(), 1);
  function useDelayedLoading(isLoading, options = { delay: 400 }) {
    const [showLoader, setShowLoader] = (0, import_element158.useState)(false);
    (0, import_element158.useEffect)(() => {
      if (!isLoading) {
        return;
      }
      const timeout = setTimeout(() => {
        setShowLoader(true);
      }, options.delay);
      return () => {
        clearTimeout(timeout);
        setShowLoader(false);
      };
    }, [isLoading, options.delay]);
    return showLoader;
  }

  // packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs
  var import_jsx_runtime288 = __toESM(require_jsx_runtime(), 1);
  function getEffectiveAlign(explicitAlign, fieldType) {
    if (explicitAlign) {
      return explicitAlign;
    }
    if (fieldType === "integer" || fieldType === "number") {
      return "end";
    }
    return void 0;
  }
  function TableColumnField({
    item,
    fields: fields2,
    column,
    align
  }) {
    const field = fields2.find((f2) => f2.id === column);
    if (!field) {
      return null;
    }
    const className = clsx_default("dataviews-view-table__cell-content-wrapper", {
      "dataviews-view-table__cell-align-end": align === "end",
      "dataviews-view-table__cell-align-center": align === "center"
    });
    return /* @__PURE__ */ (0, import_jsx_runtime288.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(field.render, { item, field }) });
  }
  function TableRow({
    hasBulkActions,
    item,
    level,
    actions: actions2,
    fields: fields2,
    id,
    view,
    titleField: titleField2,
    mediaField,
    mediaAspectRatio,
    descriptionField: descriptionField3,
    selection,
    getItemId: getItemId3,
    isItemClickable: isItemClickable2,
    onClickItem,
    renderItemLink,
    onChangeSelection,
    onMouseDown,
    onClickCapture,
    isActionsColumnSticky,
    posinset
  }) {
    const { paginationInfo } = (0, import_element159.useContext)(dataviews_context_default);
    const hasPossibleBulkAction = useHasAPossibleBulkAction(actions2, item);
    const isSelected2 = hasPossibleBulkAction && selection.includes(id);
    const {
      showTitle = true,
      showMedia = true,
      showDescription = true,
      infiniteScrollEnabled
    } = view;
    const columns = getTableColumns(view, fields2);
    const hasPrimaryColumn = titleField2 && showTitle || mediaField && showMedia || descriptionField3 && showDescription;
    return /* @__PURE__ */ (0, import_jsx_runtime288.jsxs)(
      "tr",
      {
        className: clsx_default("dataviews-view-table__row", {
          "is-selected": hasPossibleBulkAction && isSelected2,
          "has-bulk-actions": hasPossibleBulkAction
        }),
        "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0,
        "aria-posinset": posinset,
        role: infiniteScrollEnabled ? "article" : void 0,
        onClickCapture,
        onMouseDown: (event) => {
          const isMetaClick = (0, import_keycodes2.isAppleOS)() ? event.metaKey : event.ctrlKey;
          if (event.button === 0 && isMetaClick && window.navigator.userAgent.toLowerCase().includes("firefox")) {
            event.preventDefault();
          }
          onMouseDown(event);
        },
        children: [
          hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime288.jsx)("td", { className: "dataviews-view-table__checkbox-column", children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
            DataViewsSelectionCheckbox,
            {
              item,
              selection,
              onChangeSelection,
              getItemId: getItemId3,
              titleField: titleField2,
              disabled: !hasPossibleBulkAction
            }
          ) }) }),
          hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime288.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
            column_primary_default,
            {
              item,
              level,
              titleField: showTitle ? titleField2 : void 0,
              mediaField: showMedia ? mediaField : void 0,
              mediaAspectRatio,
              descriptionField: showDescription ? descriptionField3 : void 0,
              isItemClickable: isItemClickable2,
              onClickItem,
              renderItemLink
            }
          ) }),
          columns.map((column) => {
            const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {};
            const field = fields2.find((f2) => f2.id === column);
            const effectiveAlign = getEffectiveAlign(align, field?.type);
            return /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
              "td",
              {
                style: {
                  width,
                  maxWidth,
                  minWidth
                },
                children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
                  TableColumnField,
                  {
                    fields: fields2,
                    item,
                    column,
                    align: effectiveAlign
                  }
                )
              },
              column
            );
          }),
          !!actions2?.length && // Disable reason: we are not making the element interactive,
          // but preventing any click events from bubbling up to the
          // table row. This allows us to add a click handler to the row
          // itself (to toggle row selection) without erroneously
          // intercepting click events from ItemActions.
          /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
            "td",
            {
              className: clsx_default("dataviews-view-table__actions-column", {
                "dataviews-view-table__actions-column--sticky": true,
                "dataviews-view-table__actions-column--stuck": isActionsColumnSticky
              }),
              onClick: (e2) => e2.stopPropagation(),
              children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(ItemActions, { item, actions: actions2 })
            }
          )
        ]
      }
    );
  }
  function ViewTable({
    actions: actions2,
    data,
    fields: fields2,
    getItemId: getItemId3,
    getItemLevel,
    isLoading = false,
    onChangeView,
    onChangeSelection,
    selection,
    setOpenedFilter,
    onClickItem,
    isItemClickable: isItemClickable2,
    renderItemLink,
    view,
    className,
    empty
  }) {
    const { containerRef } = (0, import_element159.useContext)(dataviews_context_default);
    const isDelayedLoading = useDelayedLoading(isLoading);
    const groupField = view.groupBy?.field ? fields2.find((f2) => f2.id === view.groupBy?.field) : null;
    const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
    const orderedData = dataByGroup ? Array.from(dataByGroup.values()).flat() : data;
    const { getSelectionProps } = useSelectionProps({
      data: orderedData,
      getItemId: getItemId3,
      isItemSelectable: (item) => hasAPossibleBulkAction(actions2, item),
      selection,
      onChangeSelection,
      selectionMode: "multi",
      shouldSelectOnClick: false
    });
    const headerMenuRefs = (0, import_element159.useRef)(/* @__PURE__ */ new Map());
    const headerMenuToFocusRef = (0, import_element159.useRef)(void 0);
    const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element159.useState)();
    const [contextMenuAnchor, setContextMenuAnchor] = (0, import_element159.useState)(null);
    (0, import_element159.useEffect)(() => {
      if (headerMenuToFocusRef.current) {
        headerMenuToFocusRef.current.focus();
        headerMenuToFocusRef.current = void 0;
      }
    });
    const tableNoticeId = (0, import_element159.useId)();
    const { isHorizontalScrollEnd, isVerticallyScrolled } = useScrollState({
      scrollContainerRef: containerRef,
      enabledHorizontal: !!actions2?.length
    });
    const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions2, data);
    if (nextHeaderMenuToFocus) {
      headerMenuToFocusRef.current = nextHeaderMenuToFocus;
      setNextHeaderMenuToFocus(void 0);
      return;
    }
    const onHide = (field) => {
      const hidden = headerMenuRefs.current.get(field.id);
      const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0;
      setNextHeaderMenuToFocus(fallback?.node);
    };
    const handleHeaderContextMenu = (event) => {
      event.preventDefault();
      event.stopPropagation();
      const virtualAnchor = {
        getBoundingClientRect: () => ({
          x: event.clientX,
          y: event.clientY,
          top: event.clientY,
          left: event.clientX,
          right: event.clientX,
          bottom: event.clientY,
          width: 0,
          height: 0,
          toJSON: () => ({})
        })
      };
      window.requestAnimationFrame(() => {
        setContextMenuAnchor(virtualAnchor);
      });
    };
    const hasData = !!data?.length;
    const titleField2 = fields2.find((field) => field.id === view.titleField);
    const mediaField = fields2.find((field) => field.id === view.mediaField);
    const descriptionField3 = fields2.find(
      (field) => field.id === view.descriptionField
    );
    const { showTitle = true, showMedia = true, showDescription = true } = view;
    const hasPrimaryColumn = titleField2 && showTitle || mediaField && showMedia || descriptionField3 && showDescription;
    const columns = getTableColumns(view, fields2);
    const headerMenuRef = (column, index3) => (node) => {
      if (node) {
        headerMenuRefs.current.set(column, {
          node,
          fallback: columns[index3 > 0 ? index3 - 1 : 1]
        });
      } else {
        headerMenuRefs.current.delete(column);
      }
    };
    const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
    const isRtl = (0, import_i18n99.isRTL)();
    const mediaAspectRatio = view.layout?.aspectRatio && MEDIA_ASPECT_RATIOS.includes(view.layout.aspectRatio) ? view.layout.aspectRatio : void 0;
    const tableStyle = {
      "--wp-dataviews-media-aspect-ratio": mediaAspectRatio ?? "1/1"
    };
    if (!hasData) {
      return /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
        "div",
        {
          className: clsx_default("dataviews-no-results", {
            "is-refreshing": isDelayedLoading
          }),
          id: tableNoticeId,
          children: empty
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime288.jsxs)(import_jsx_runtime288.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime288.jsxs)(
        "table",
        {
          className: clsx_default("dataviews-view-table", className, {
            [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes(
              view.layout.density
            ),
            "has-bulk-actions": hasBulkActions,
            "is-refreshing": !isInfiniteScroll && isDelayedLoading,
            "has-media-aspect-ratio": !!mediaAspectRatio
          }),
          style: tableStyle,
          "aria-busy": isLoading,
          "aria-describedby": tableNoticeId,
          role: isInfiniteScroll ? "feed" : void 0,
          inert: !isInfiniteScroll && isLoading ? "true" : void 0,
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime288.jsxs)("colgroup", { children: [
              hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime288.jsx)("col", { className: "dataviews-view-table__col-checkbox" }),
              hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime288.jsx)("col", { className: "dataviews-view-table__col-first-data" }),
              columns.map((column, index3) => /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
                "col",
                {
                  className: clsx_default(
                    `dataviews-view-table__col-${column}`,
                    {
                      "dataviews-view-table__col-expand": !hasPrimaryColumn && index3 === columns.length - 1
                    }
                  )
                },
                `col-${column}`
              )),
              !!actions2?.length && /* @__PURE__ */ (0, import_jsx_runtime288.jsx)("col", { className: "dataviews-view-table__col-actions" })
            ] }),
            contextMenuAnchor && /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
              import_components30.Popover,
              {
                anchor: contextMenuAnchor,
                onClose: () => setContextMenuAnchor(null),
                placement: "bottom-start",
                children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(PropertiesSection, { showLabel: false })
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
              "thead",
              {
                className: clsx_default({
                  "dataviews-view-table__thead--stuck": isVerticallyScrolled
                }),
                onContextMenu: handleHeaderContextMenu,
                children: /* @__PURE__ */ (0, import_jsx_runtime288.jsxs)("tr", { className: "dataviews-view-table__row", children: [
                  hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
                    "th",
                    {
                      className: "dataviews-view-table__checkbox-column",
                      scope: "col",
                      onContextMenu: handleHeaderContextMenu,
                      children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
                        BulkSelectionCheckbox,
                        {
                          selection,
                          onChangeSelection,
                          data,
                          actions: actions2,
                          getItemId: getItemId3
                        }
                      )
                    }
                  ),
                  hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime288.jsx)("th", { scope: "col", children: titleField2 && /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
                    column_header_menu_default,
                    {
                      ref: headerMenuRef(
                        titleField2.id,
                        0
                      ),
                      fieldId: titleField2.id,
                      view,
                      fields: fields2,
                      onChangeView,
                      onHide,
                      setOpenedFilter,
                      canMove: false,
                      canInsertLeft: isRtl ? view.layout?.enableMoving ?? true : false,
                      canInsertRight: isRtl ? false : view.layout?.enableMoving ?? true
                    }
                  ) }),
                  columns.map((column, index3) => {
                    const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {};
                    const field = fields2.find(
                      (f2) => f2.id === column
                    );
                    const effectiveAlign = getEffectiveAlign(
                      align,
                      field?.type
                    );
                    const canInsertOrMove = view.layout?.enableMoving ?? true;
                    return /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
                      "th",
                      {
                        style: {
                          width,
                          maxWidth,
                          minWidth,
                          textAlign: effectiveAlign
                        },
                        "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0,
                        scope: "col",
                        children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
                          column_header_menu_default,
                          {
                            ref: headerMenuRef(column, index3),
                            fieldId: column,
                            view,
                            fields: fields2,
                            onChangeView,
                            onHide,
                            setOpenedFilter,
                            canMove: canInsertOrMove,
                            canInsertLeft: canInsertOrMove,
                            canInsertRight: canInsertOrMove
                          }
                        )
                      },
                      column
                    );
                  }),
                  !!actions2?.length && /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
                    "th",
                    {
                      className: clsx_default(
                        "dataviews-view-table__actions-column",
                        {
                          "dataviews-view-table__actions-column--sticky": true,
                          "dataviews-view-table__actions-column--stuck": !isHorizontalScrollEnd
                        }
                      ),
                      children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)("span", { className: "dataviews-view-table-header", children: (0, import_i18n99.__)("Actions") })
                    }
                  )
                ] })
              }
            ),
            hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map(
              ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime288.jsxs)("tbody", { children: [
                /* @__PURE__ */ (0, import_jsx_runtime288.jsx)("tr", { className: "dataviews-view-table__group-header-row", children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
                  "td",
                  {
                    colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + (hasBulkActions ? 1 : 0) + (actions2?.length ? 1 : 0),
                    className: "dataviews-view-table__group-header-cell",
                    children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n99.sprintf)(
                      // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
                      (0, import_i18n99.__)("%1$s: %2$s"),
                      groupField.label,
                      groupName
                    )
                  }
                ) }),
                groupItems.map((item, index3) => {
                  const id = getItemId3(item) || index3.toString();
                  return /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
                    TableRow,
                    {
                      item,
                      level: view.showLevels && typeof getItemLevel === "function" ? getItemLevel(item) : void 0,
                      hasBulkActions,
                      actions: actions2,
                      fields: fields2,
                      id,
                      view,
                      titleField: titleField2,
                      mediaField,
                      mediaAspectRatio,
                      descriptionField: descriptionField3,
                      selection,
                      getItemId: getItemId3,
                      onChangeSelection,
                      ...getSelectionProps(id),
                      onClickItem,
                      renderItemLink,
                      isItemClickable: isItemClickable2,
                      isActionsColumnSticky: !isHorizontalScrollEnd
                    },
                    getItemId3(item)
                  );
                })
              ] }, `group-${groupName}`)
            ) : /* @__PURE__ */ (0, import_jsx_runtime288.jsx)("tbody", { children: hasData && data.map((item, index3) => {
              const id = getItemId3(item) || index3.toString();
              return /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(
                TableRow,
                {
                  item,
                  level: view.showLevels && typeof getItemLevel === "function" ? getItemLevel(item) : void 0,
                  hasBulkActions,
                  actions: actions2,
                  fields: fields2,
                  id,
                  view,
                  titleField: titleField2,
                  mediaField,
                  mediaAspectRatio,
                  descriptionField: descriptionField3,
                  selection,
                  getItemId: getItemId3,
                  onChangeSelection,
                  ...getSelectionProps(id),
                  onClickItem,
                  renderItemLink,
                  isItemClickable: isItemClickable2,
                  isActionsColumnSticky: !isHorizontalScrollEnd,
                  posinset: isInfiniteScroll ? index3 + 1 : void 0
                },
                getItemId3(item)
              );
            }) })
          ]
        }
      ),
      isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime288.jsx)("div", { className: "dataviews-loading", id: tableNoticeId, children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(import_components30.Spinner, {}) }) })
    ] });
  }
  var table_default = ViewTable;

  // packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs
  var import_components33 = __toESM(require_components(), 1);
  var import_i18n102 = __toESM(require_i18n(), 1);

  // packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs
  var import_components32 = __toESM(require_components(), 1);
  var import_i18n101 = __toESM(require_i18n(), 1);
  var import_compose15 = __toESM(require_compose(), 1);
  var import_element163 = __toESM(require_element(), 1);

  // packages/dataviews/build-module/components/dataviews-layouts/grid/preview-size-picker.mjs
  var import_components31 = __toESM(require_components(), 1);
  var import_i18n100 = __toESM(require_i18n(), 1);
  var import_element160 = __toESM(require_element(), 1);
  var import_jsx_runtime289 = __toESM(require_jsx_runtime(), 1);
  var imageSizes = [
    {
      value: 120,
      breakpoint: 1
    },
    {
      value: 170,
      breakpoint: 1
    },
    {
      value: 230,
      breakpoint: 1
    },
    {
      value: 290,
      breakpoint: 1112
      // at minimum image width, 4 images display at this container size
    },
    {
      value: 350,
      breakpoint: 1636
      // at minimum image width, 6 images display at this container size
    },
    {
      value: 430,
      breakpoint: 588
      // at minimum image width, 2 images display at this container size
    }
  ];
  var DEFAULT_PREVIEW_SIZE = imageSizes[2].value;
  function useGridColumns() {
    const context = (0, import_element160.useContext)(dataviews_context_default);
    const view = context.view;
    return (0, import_element160.useMemo)(() => {
      const containerWidth = context.containerWidth;
      const gap = 32;
      const previewSize = view.layout?.previewSize ?? DEFAULT_PREVIEW_SIZE;
      const columns = Math.floor(
        (containerWidth + gap) / (previewSize + gap)
      );
      return Math.max(1, columns);
    }, [context.containerWidth, view.layout?.previewSize]);
  }

  // packages/dataviews/build-module/components/dataviews-layouts/utils/grid-items.mjs
  var import_element161 = __toESM(require_element(), 1);
  var import_jsx_runtime290 = __toESM(require_jsx_runtime(), 1);
  var GridItems = (0, import_element161.forwardRef)(({ className, previewSize, style, ...props }, ref) => {
    return /* @__PURE__ */ (0, import_jsx_runtime290.jsx)(
      "div",
      {
        ref,
        className: clsx_default("dataviews-view-grid-items", className),
        style: {
          gridTemplateColumns: previewSize && `repeat(auto-fill, minmax(${previewSize}px, 1fr))`,
          ...style
        },
        ...props
      }
    );
  });

  // packages/dataviews/build-module/components/dataviews-layouts/utils/use-infinite-scroll.mjs
  var import_element162 = __toESM(require_element(), 1);
  function useIntersectionObserver(elementRef, posinset) {
    const { intersectionObserver } = (0, import_element162.useContext)(dataviews_context_default);
    (0, import_element162.useEffect)(() => {
      const element = elementRef.current;
      if (!element || posinset === void 0 || !intersectionObserver) {
        return;
      }
      intersectionObserver.observe(element);
      return () => {
        intersectionObserver.unobserve(element);
      };
    }, [elementRef, intersectionObserver, posinset]);
  }
  function usePlaceholdersNeeded(data, isInfiniteScroll, gridColumns) {
    const hasData = !!data?.length;
    const firstItemPosition = hasData && isInfiniteScroll ? data[0].position : void 0;
    return firstItemPosition && gridColumns ? (firstItemPosition - 1) % gridColumns : 0;
  }

  // packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs
  var import_jsx_runtime291 = __toESM(require_jsx_runtime(), 1);
  function chunk(array, size4) {
    const chunks = [];
    for (let i2 = 0, j2 = array.length; i2 < j2; i2 += size4) {
      chunks.push(array.slice(i2, i2 + size4));
    }
    return chunks;
  }
  var GridItem = (0, import_element163.forwardRef)(
    function GridItem2({
      view,
      selection,
      onChangeSelection,
      onClickItem,
      isItemClickable: isItemClickable2,
      renderItemLink,
      getItemId: getItemId3,
      item,
      actions: actions2,
      mediaField,
      titleField: titleField2,
      descriptionField: descriptionField3,
      regularFields,
      badgeFields,
      hasBulkActions,
      config: config2,
      posinset,
      setsize,
      ...props
    }, forwardedRef) {
      const {
        showTitle = true,
        showMedia = true,
        showDescription = true
      } = view;
      const hasBulkAction = useHasAPossibleBulkAction(actions2, item);
      const id = getItemId3(item);
      const elementRef = (0, import_element163.useRef)(null);
      const setRefs = (0, import_element163.useCallback)(
        (node) => {
          elementRef.current = node;
          if (typeof forwardedRef === "function") {
            forwardedRef(node);
          } else if (forwardedRef) {
            forwardedRef.current = node;
          }
        },
        [forwardedRef]
      );
      useIntersectionObserver(elementRef, posinset);
      const instanceId = (0, import_compose15.useInstanceId)(GridItem2);
      const isSelected2 = selection.includes(id);
      const mediaPlaceholder = /* @__PURE__ */ (0, import_jsx_runtime291.jsx)("span", { className: "dataviews-view-grid__media-placeholder" });
      const rendersMediaField = showMedia && mediaField?.render;
      const renderedMediaField = rendersMediaField ? /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
        mediaField.render,
        {
          item,
          field: mediaField,
          config: config2
        }
      ) : mediaPlaceholder;
      const renderedTitleField = showTitle && titleField2?.render ? /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(titleField2.render, { item, field: titleField2 }) : null;
      let mediaA11yProps;
      let titleA11yProps;
      if (isItemClickable2(item) && onClickItem) {
        if (renderedTitleField) {
          mediaA11yProps = {
            "aria-labelledby": `dataviews-view-grid__title-field-${instanceId}`
          };
          titleA11yProps = {
            id: `dataviews-view-grid__title-field-${instanceId}`
          };
        } else {
          mediaA11yProps = {
            "aria-label": titleField2?.getValueFormatted({
              item,
              field: titleField2
            }) || (0, import_i18n101.__)("Navigate to item")
          };
        }
      }
      return /* @__PURE__ */ (0, import_jsx_runtime291.jsxs)(
        Stack,
        {
          direction: "column",
          ...props,
          ref: setRefs,
          "aria-setsize": setsize,
          "aria-posinset": posinset,
          className: clsx_default(
            props.className,
            "dataviews-view-grid__row__gridcell",
            "dataviews-view-grid__card",
            {
              "is-selected": hasBulkAction && isSelected2
            }
          ),
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
              ItemClickWrapper,
              {
                item,
                isItemClickable: isItemClickable2,
                onClickItem,
                renderItemLink,
                className: clsx_default("dataviews-view-grid__media", {
                  "dataviews-view-grid__media--placeholder": !rendersMediaField
                }),
                ...mediaA11yProps,
                children: renderedMediaField
              }
            ),
            hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
              DataViewsSelectionCheckbox,
              {
                item,
                selection,
                onChangeSelection,
                getItemId: getItemId3,
                titleField: titleField2,
                disabled: !hasBulkAction
              }
            ),
            !!actions2?.length && /* @__PURE__ */ (0, import_jsx_runtime291.jsx)("div", { className: "dataviews-view-grid__media-actions", children: /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
              ItemActions,
              {
                item,
                actions: actions2,
                isCompact: true
              }
            ) }),
            showTitle && /* @__PURE__ */ (0, import_jsx_runtime291.jsx)("div", { className: "dataviews-view-grid__title-actions", children: /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
              ItemClickWrapper,
              {
                item,
                isItemClickable: isItemClickable2,
                onClickItem,
                renderItemLink,
                className: "dataviews-view-grid__title-field dataviews-title-field",
                ...titleA11yProps,
                title: titleField2?.getValueFormatted({
                  item,
                  field: titleField2
                }) || void 0,
                children: renderedTitleField
              }
            ) }),
            /* @__PURE__ */ (0, import_jsx_runtime291.jsxs)(Stack, { direction: "column", gap: "xs", children: [
              showDescription && descriptionField3?.render && /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                descriptionField3.render,
                {
                  item,
                  field: descriptionField3
                }
              ),
              !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                Stack,
                {
                  direction: "row",
                  className: "dataviews-view-grid__badge-fields",
                  gap: "sm",
                  wrap: "wrap",
                  align: "top",
                  justify: "flex-start",
                  children: badgeFields.map((field) => {
                    return (
                      /* @ts-expect-error `Badge` is text-only, but a badge field renders whatever its `render` returns. */
                      /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                        Badge,
                        {
                          className: "dataviews-view-grid__field-value",
                          children: /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                            field.render,
                            {
                              item,
                              field
                            }
                          )
                        },
                        field.id
                      )
                    );
                  })
                }
              ),
              !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                Stack,
                {
                  direction: "column",
                  className: "dataviews-view-grid__fields",
                  gap: "xs",
                  children: regularFields.map((field) => {
                    return /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                      import_components32.Flex,
                      {
                        className: "dataviews-view-grid__field",
                        gap: 1,
                        justify: "flex-start",
                        expanded: true,
                        style: { height: "auto" },
                        direction: "row",
                        children: /* @__PURE__ */ (0, import_jsx_runtime291.jsxs)(import_jsx_runtime291.Fragment, { children: [
                          /* @__PURE__ */ (0, import_jsx_runtime291.jsxs)(tooltip_exports.Root, { children: [
                            /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                              tooltip_exports.Trigger,
                              {
                                render: /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(import_components32.FlexItem, { className: "dataviews-view-grid__field-name", children: field.header })
                              }
                            ),
                            /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(tooltip_exports.Popup, { children: field.label })
                          ] }),
                          /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                            import_components32.FlexItem,
                            {
                              className: "dataviews-view-grid__field-value",
                              style: { maxHeight: "none" },
                              children: /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                                field.render,
                                {
                                  item,
                                  field
                                }
                              )
                            }
                          )
                        ] })
                      },
                      field.id
                    );
                  })
                }
              )
            ] })
          ]
        }
      );
    }
  );
  function CompositeGrid({
    data,
    isInfiniteScroll,
    className,
    inert,
    isLoading,
    view,
    fields: fields2,
    selection,
    onChangeSelection,
    onClickItem,
    isItemClickable: isItemClickable2,
    renderItemLink,
    getItemId: getItemId3,
    actions: actions2,
    getSelectionProps
  }) {
    const { paginationInfo, resizeObserverRef } = (0, import_element163.useContext)(dataviews_context_default);
    const gridColumns = useGridColumns();
    const gridStyle = {
      "--wp-dataviews-media-aspect-ratio": view.layout?.aspectRatio && MEDIA_ASPECT_RATIOS.includes(view.layout.aspectRatio) ? view.layout.aspectRatio : "1/1"
    };
    const isMediaContain = view.layout?.mediaFit === "contain";
    const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions2, data);
    const titleField2 = fields2.find(
      (field) => field.id === view?.titleField
    );
    const mediaField = fields2.find(
      (field) => field.id === view?.mediaField
    );
    const descriptionField3 = fields2.find(
      (field) => field.id === view?.descriptionField
    );
    const otherFields = view.fields ?? [];
    const { regularFields, badgeFields } = otherFields.reduce(
      (accumulator, fieldId) => {
        const field = fields2.find((f2) => f2.id === fieldId);
        if (!field) {
          return accumulator;
        }
        const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields";
        accumulator[key].push(field);
        return accumulator;
      },
      { regularFields: [], badgeFields: [] }
    );
    const size4 = "900px";
    const totalRows = Math.ceil(data.length / gridColumns);
    const placeholdersNeeded = usePlaceholdersNeeded(
      data,
      isInfiniteScroll,
      gridColumns
    );
    return /* @__PURE__ */ (0, import_jsx_runtime291.jsxs)(import_jsx_runtime291.Fragment, {
      // Render infinite scroll layout (no rows, feed semantics)
      children: [
        isInfiniteScroll && /* @__PURE__ */ (0, import_jsx_runtime291.jsxs)(
          import_components32.Composite,
          {
            render: /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
              GridItems,
              {
                className: clsx_default(
                  "dataviews-view-grid-infinite-scroll",
                  className,
                  {
                    [`has-${view.layout?.density}-density`]: view.layout?.density && [
                      "compact",
                      "comfortable"
                    ].includes(view.layout.density),
                    "has-media-fit-contain": isMediaContain
                  }
                ),
                previewSize: view.layout?.previewSize,
                style: gridStyle,
                "aria-busy": isLoading,
                ref: resizeObserverRef
              }
            ),
            role: "feed",
            focusWrap: true,
            inert,
            children: [
              Array.from({ length: placeholdersNeeded }).map(
                (_, index3) => /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                  import_components32.Composite.Item,
                  {
                    render: (props) => /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                      Stack,
                      {
                        ...props,
                        direction: "column",
                        role: "article",
                        className: "dataviews-view-grid__row__gridcell dataviews-view-grid__card dataviews-view-grid__placeholder"
                      }
                    ),
                    "aria-hidden": true,
                    tabIndex: -1
                  },
                  `placeholder-${index3}`
                )
              ),
              data.map((item) => {
                const itemId = getItemId3(item);
                const selectionProps = getSelectionProps(itemId);
                const stablePosition = item.position;
                return /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                  import_components32.Composite.Item,
                  {
                    render: (props) => /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                      GridItem,
                      {
                        ...props,
                        id: itemId,
                        role: "article",
                        view,
                        selection,
                        onChangeSelection,
                        onClickItem,
                        isItemClickable: isItemClickable2,
                        renderItemLink,
                        getItemId: getItemId3,
                        item,
                        actions: actions2,
                        onMouseDown: (event) => {
                          props.onMouseDown?.(event);
                          selectionProps.onMouseDown(
                            event
                          );
                        },
                        onClickCapture: (event) => {
                          props.onClickCapture?.(event);
                          selectionProps.onClickCapture(
                            event
                          );
                        },
                        mediaField,
                        titleField: titleField2,
                        descriptionField: descriptionField3,
                        regularFields,
                        badgeFields,
                        hasBulkActions,
                        posinset: stablePosition,
                        setsize: paginationInfo.totalItems,
                        config: {
                          sizes: size4
                        }
                      }
                    )
                  },
                  itemId
                );
              })
            ]
          }
        ),
        // Render standard grid layout (with rows, grid semantics)
        !isInfiniteScroll && /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
          import_components32.Composite,
          {
            role: "grid",
            style: gridStyle,
            className: clsx_default("dataviews-view-grid", className, {
              [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes(
                view.layout.density
              ),
              "has-media-fit-contain": isMediaContain
            }),
            focusWrap: true,
            "aria-busy": isLoading,
            "aria-rowcount": totalRows,
            ref: resizeObserverRef,
            inert,
            children: chunk(data, gridColumns).map((row, i2) => /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
              import_components32.Composite.Row,
              {
                render: /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                  "div",
                  {
                    role: "row",
                    "aria-rowindex": i2 + 1,
                    "aria-label": (0, import_i18n101.sprintf)(
                      /* translators: %d: The row number in the grid */
                      (0, import_i18n101.__)("Row %d"),
                      i2 + 1
                    ),
                    className: "dataviews-view-grid__row",
                    style: {
                      gridTemplateColumns: `repeat( ${gridColumns}, minmax(0, 1fr) )`
                    }
                  }
                ),
                children: row.map((item) => {
                  const itemId = getItemId3(item);
                  const selectionProps = getSelectionProps(itemId);
                  return /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                    import_components32.Composite.Item,
                    {
                      render: (props) => /* @__PURE__ */ (0, import_jsx_runtime291.jsx)(
                        GridItem,
                        {
                          ...props,
                          id: itemId,
                          role: "gridcell",
                          view,
                          selection,
                          onChangeSelection,
                          onClickItem,
                          isItemClickable: isItemClickable2,
                          renderItemLink,
                          getItemId: getItemId3,
                          item,
                          actions: actions2,
                          onMouseDown: (event) => {
                            props.onMouseDown?.(
                              event
                            );
                            selectionProps.onMouseDown(
                              event
                            );
                          },
                          onClickCapture: (event) => {
                            props.onClickCapture?.(
                              event
                            );
                            selectionProps.onClickCapture(
                              event
                            );
                          },
                          mediaField,
                          titleField: titleField2,
                          descriptionField: descriptionField3,
                          regularFields,
                          badgeFields,
                          hasBulkActions,
                          config: {
                            sizes: size4
                          }
                        }
                      )
                    },
                    itemId
                  );
                })
              },
              i2
            ))
          }
        )
      ]
    });
  }

  // packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs
  var import_jsx_runtime292 = __toESM(require_jsx_runtime(), 1);
  function ViewGrid({
    actions: actions2,
    data,
    fields: fields2,
    getItemId: getItemId3,
    isLoading,
    onChangeSelection,
    onClickItem,
    isItemClickable: isItemClickable2,
    renderItemLink,
    selection,
    view,
    className,
    empty
  }) {
    const isDelayedLoading = useDelayedLoading(!!isLoading);
    const hasData = !!data?.length;
    const groupField = view.groupBy?.field ? fields2.find((f2) => f2.id === view.groupBy?.field) : null;
    const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
    const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
    const orderedData = dataByGroup ? Array.from(dataByGroup.values()).flat() : data;
    const { getSelectionProps } = useSelectionProps({
      data: orderedData,
      getItemId: getItemId3,
      isItemSelectable: (item) => hasAPossibleBulkAction(actions2, item),
      selection,
      onChangeSelection,
      selectionMode: "multi",
      shouldSelectOnClick: false
    });
    if (!hasData) {
      return /* @__PURE__ */ (0, import_jsx_runtime292.jsx)(
        "div",
        {
          className: clsx_default("dataviews-no-results", {
            "is-refreshing": isDelayedLoading
          }),
          children: empty
        }
      );
    }
    const gridProps = {
      className: clsx_default(className, {
        "is-refreshing": !isInfiniteScroll && isDelayedLoading
      }),
      inert: !isInfiniteScroll && !!isLoading ? "true" : void 0,
      isLoading,
      view,
      fields: fields2,
      selection,
      onChangeSelection,
      onClickItem,
      isItemClickable: isItemClickable2,
      renderItemLink,
      getItemId: getItemId3,
      actions: actions2,
      getSelectionProps
    };
    return /* @__PURE__ */ (0, import_jsx_runtime292.jsxs)(import_jsx_runtime292.Fragment, {
      // Render multiple groups.
      children: [
        hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime292.jsx)(Stack, { direction: "column", gap: "lg", children: Array.from(dataByGroup.entries()).map(
          ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime292.jsxs)(
            Stack,
            {
              direction: "column",
              gap: "sm",
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime292.jsx)("h3", { className: "dataviews-view-grid__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n102.sprintf)(
                  // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
                  (0, import_i18n102.__)("%1$s: %2$s"),
                  groupField.label,
                  groupName
                ) }),
                /* @__PURE__ */ (0, import_jsx_runtime292.jsx)(
                  CompositeGrid,
                  {
                    ...gridProps,
                    data: groupItems,
                    isInfiniteScroll: false
                  }
                )
              ]
            },
            groupName
          )
        ) }),
        // Render a single grid with all data.
        !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime292.jsx)(
          CompositeGrid,
          {
            ...gridProps,
            data,
            isInfiniteScroll: !!isInfiniteScroll
          }
        ),
        isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime292.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime292.jsx)(import_components33.Spinner, {}) })
      ]
    });
  }
  var grid_default = ViewGrid;

  // packages/dataviews/build-module/components/dataviews-layouts/list/index.mjs
  var import_compose16 = __toESM(require_compose(), 1);
  var import_components34 = __toESM(require_components(), 1);
  var import_element164 = __toESM(require_element(), 1);
  var import_i18n103 = __toESM(require_i18n(), 1);
  var import_data37 = __toESM(require_data(), 1);
  var import_jsx_runtime293 = __toESM(require_jsx_runtime(), 1);
  function generateItemWrapperCompositeId(idPrefix) {
    return `${idPrefix}-item-wrapper`;
  }
  function generatePrimaryActionCompositeId(idPrefix, primaryActionId) {
    return `${idPrefix}-primary-action-${primaryActionId}`;
  }
  function generateDropdownTriggerCompositeId(idPrefix) {
    return `${idPrefix}-dropdown`;
  }
  function PrimaryActionGridCell({
    idPrefix,
    primaryAction,
    item
  }) {
    const registry = (0, import_data37.useRegistry)();
    const [isModalOpen, setIsModalOpen] = (0, import_element164.useState)(false);
    const compositeItemId = generatePrimaryActionCompositeId(
      idPrefix,
      primaryAction.id
    );
    const label = typeof primaryAction.label === "string" ? primaryAction.label : primaryAction.label([item]);
    return "RenderModal" in primaryAction ? /* @__PURE__ */ (0, import_jsx_runtime293.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
      import_components34.Composite.Item,
      {
        id: compositeItemId,
        render: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
          import_components34.Button,
          {
            disabled: !!primaryAction.disabled,
            accessibleWhenDisabled: true,
            text: label,
            size: "small",
            onClick: () => setIsModalOpen(true)
          }
        ),
        children: isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
          ActionModal,
          {
            action: primaryAction,
            items: [item],
            closeModal: () => setIsModalOpen(false)
          }
        )
      }
    ) }, primaryAction.id) : /* @__PURE__ */ (0, import_jsx_runtime293.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
      import_components34.Composite.Item,
      {
        id: compositeItemId,
        render: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
          import_components34.Button,
          {
            disabled: !!primaryAction.disabled,
            accessibleWhenDisabled: true,
            size: "small",
            onClick: () => {
              primaryAction.callback([item], { registry });
            },
            children: label
          }
        )
      }
    ) }, primaryAction.id);
  }
  function ListItem({
    view,
    actions: actions2,
    idPrefix,
    isSelected: isSelected2,
    item,
    titleField: titleField2,
    mediaField,
    descriptionField: descriptionField3,
    selectionProps,
    otherFields,
    onDropdownTriggerKeyDown,
    posinset
  }) {
    const {
      showTitle = true,
      showMedia = true,
      showDescription = true,
      infiniteScrollEnabled
    } = view;
    const itemRef = (0, import_element164.useRef)(null);
    const labelId = `${idPrefix}-label`;
    const descriptionId = `${idPrefix}-description`;
    const registry = (0, import_data37.useRegistry)();
    const [isHovered, setIsHovered] = (0, import_element164.useState)(false);
    const [activeModalAction, setActiveModalAction] = (0, import_element164.useState)(
      null
    );
    const handleHover = ({ type }) => {
      const isHover = type === "mouseenter";
      setIsHovered(isHover);
    };
    const { paginationInfo } = (0, import_element164.useContext)(dataviews_context_default);
    (0, import_element164.useEffect)(() => {
      if (isSelected2) {
        itemRef.current?.scrollIntoView({
          behavior: "auto",
          block: "nearest",
          inline: "nearest"
        });
      }
    }, [isSelected2]);
    const { primaryAction, eligibleActions } = (0, import_element164.useMemo)(() => {
      const _eligibleActions = actions2.filter(
        (action) => !action.isEligible || action.isEligible(item)
      );
      const _primaryActions = _eligibleActions.filter(
        (action) => action.isPrimary
      );
      return {
        primaryAction: _primaryActions[0],
        eligibleActions: _eligibleActions
      };
    }, [actions2, item]);
    const hasOnlyOnePrimaryAction = primaryAction && actions2.length === 1;
    const renderedMediaField = showMedia && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime293.jsx)("div", { className: "dataviews-view-list__media-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
      mediaField.render,
      {
        item,
        field: mediaField,
        config: { sizes: "52px" }
      }
    ) }) : null;
    const renderedTitleField = showTitle && titleField2?.render ? /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(titleField2.render, { item, field: titleField2 }) : null;
    const renderDescription = showDescription && descriptionField3?.render;
    const hasOnlyMediaAndTitle = !!renderedMediaField && !renderDescription && !otherFields.length;
    const usedActions = eligibleActions?.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime293.jsxs)(
      Stack,
      {
        direction: "row",
        gap: "md",
        className: "dataviews-view-list__item-actions",
        children: [
          primaryAction && /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
            PrimaryActionGridCell,
            {
              idPrefix,
              primaryAction,
              item
            }
          ),
          !hasOnlyOnePrimaryAction && /* @__PURE__ */ (0, import_jsx_runtime293.jsxs)("div", { role: "gridcell", children: [
            /* @__PURE__ */ (0, import_jsx_runtime293.jsxs)(menu_exports.Root, { disabled: !actions2.length, children: [
              /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
                menu_exports.Trigger,
                {
                  render: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
                    import_components34.Composite.Item,
                    {
                      id: generateDropdownTriggerCompositeId(
                        idPrefix
                      ),
                      accessibleWhenDisabled: true,
                      render: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
                        import_components34.Button,
                        {
                          size: "small",
                          icon: more_vertical_default,
                          label: (0, import_i18n103.__)("Actions"),
                          accessibleWhenDisabled: true,
                          disabled: !actions2.length,
                          onKeyDownCapture: onDropdownTriggerKeyDown
                        }
                      )
                    }
                  )
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
                menu_exports.Popup,
                {
                  positioner: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(menu_exports.Positioner, { align: "end" }),
                  children: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
                    ActionsMenuGroup,
                    {
                      actions: eligibleActions,
                      item,
                      registry,
                      setActiveModalAction
                    }
                  )
                }
              )
            ] }),
            !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
              ActionModal,
              {
                action: activeModalAction,
                items: [item],
                closeModal: () => setActiveModalAction(null)
              }
            )
          ] })
        ]
      }
    );
    return /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
      import_components34.Composite.Row,
      {
        ref: itemRef,
        render: (
          /* aria-posinset breaks Composite.Row if passed to it directly. */
          /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
            "div",
            {
              "aria-posinset": posinset,
              "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0
            }
          )
        ),
        role: infiniteScrollEnabled ? "article" : "row",
        className: clsx_default({
          "is-selected": isSelected2,
          "is-hovered": isHovered
        }),
        onMouseEnter: handleHover,
        onMouseLeave: handleHover,
        children: /* @__PURE__ */ (0, import_jsx_runtime293.jsxs)(
          Stack,
          {
            direction: "row",
            className: "dataviews-view-list__item-wrapper",
            children: [
              /* @__PURE__ */ (0, import_jsx_runtime293.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
                import_components34.Composite.Item,
                {
                  id: generateItemWrapperCompositeId(idPrefix),
                  "aria-pressed": isSelected2,
                  "aria-labelledby": labelId,
                  "aria-describedby": descriptionId,
                  className: "dataviews-view-list__item",
                  ...selectionProps
                }
              ) }),
              /* @__PURE__ */ (0, import_jsx_runtime293.jsxs)(
                Stack,
                {
                  direction: "row",
                  gap: "md",
                  justify: "start",
                  align: hasOnlyMediaAndTitle ? "center" : "flex-start",
                  style: { flex: 1, minWidth: 0 },
                  children: [
                    renderedMediaField,
                    /* @__PURE__ */ (0, import_jsx_runtime293.jsxs)(
                      Stack,
                      {
                        direction: "column",
                        gap: "xs",
                        className: "dataviews-view-list__field-wrapper",
                        children: [
                          /* @__PURE__ */ (0, import_jsx_runtime293.jsxs)(Stack, { direction: "row", align: "center", children: [
                            /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
                              "div",
                              {
                                className: "dataviews-title-field dataviews-view-list__title-field",
                                id: labelId,
                                children: renderedTitleField
                              }
                            ),
                            usedActions
                          ] }),
                          renderDescription && /* @__PURE__ */ (0, import_jsx_runtime293.jsx)("div", { className: "dataviews-view-list__field", children: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
                            descriptionField3.render,
                            {
                              item,
                              field: descriptionField3
                            }
                          ) }),
                          /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
                            "div",
                            {
                              className: "dataviews-view-list__fields",
                              id: descriptionId,
                              children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime293.jsxs)(
                                "div",
                                {
                                  className: "dataviews-view-list__field",
                                  children: [
                                    /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
                                      VisuallyHidden,
                                      {
                                        className: "dataviews-view-list__field-label",
                                        render: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)("span", {}),
                                        children: field.label
                                      }
                                    ),
                                    /* @__PURE__ */ (0, import_jsx_runtime293.jsx)("span", { className: "dataviews-view-list__field-value", children: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
                                      field.render,
                                      {
                                        item,
                                        field
                                      }
                                    ) })
                                  ]
                                },
                                field.id
                              ))
                            }
                          )
                        ]
                      }
                    )
                  ]
                }
              )
            ]
          }
        )
      }
    );
  }
  function isDefined2(item) {
    return !!item;
  }
  function ViewList(props) {
    const {
      actions: actions2,
      data,
      fields: fields2,
      getItemId: getItemId3,
      isLoading,
      onChangeSelection,
      selection,
      view,
      className,
      empty
    } = props;
    const baseId = (0, import_compose16.useInstanceId)(ViewList, "view-list");
    const isDelayedLoading = useDelayedLoading(!!isLoading);
    const { paginationInfo } = (0, import_element164.useContext)(dataviews_context_default);
    const selectedItem = data?.findLast(
      (item) => selection.includes(getItemId3(item))
    );
    const titleField2 = fields2.find((field) => field.id === view.titleField);
    const mediaField = fields2.find((field) => field.id === view.mediaField);
    const descriptionField3 = fields2.find(
      (field) => field.id === view.descriptionField
    );
    const otherFields = (view?.fields ?? []).map((fieldId) => fields2.find((f2) => fieldId === f2.id)).filter(isDefined2);
    const { getSelectionProps } = useSelectionProps({
      data,
      getItemId: getItemId3,
      isItemSelectable: () => true,
      selection,
      onChangeSelection,
      selectionMode: "single-required",
      shouldSelectOnClick: true
    });
    const generateCompositeItemIdPrefix = (0, import_element164.useCallback)(
      (item) => `${baseId}-${getItemId3(item)}`,
      [baseId, getItemId3]
    );
    const isActiveCompositeItem = (0, import_element164.useCallback)(
      (item, idToCheck) => {
        return idToCheck.startsWith(
          generateCompositeItemIdPrefix(item)
        );
      },
      [generateCompositeItemIdPrefix]
    );
    const [activeCompositeId, setActiveCompositeId] = (0, import_element164.useState)(void 0);
    const compositeRef = (0, import_element164.useRef)(null);
    (0, import_element164.useEffect)(() => {
      if (selectedItem) {
        setActiveCompositeId(
          generateItemWrapperCompositeId(
            generateCompositeItemIdPrefix(selectedItem)
          )
        );
      }
    }, [selectedItem, generateCompositeItemIdPrefix]);
    const activeItemIndex = data.findIndex(
      (item) => isActiveCompositeItem(item, activeCompositeId ?? "")
    );
    const previousActiveItemIndex = (0, import_compose16.usePrevious)(activeItemIndex);
    const isActiveIdInList = activeItemIndex !== -1;
    const selectCompositeItem = (0, import_element164.useCallback)(
      (targetIndex, generateCompositeId) => {
        const clampedIndex = Math.min(
          data.length - 1,
          Math.max(0, targetIndex)
        );
        if (!data[clampedIndex]) {
          return;
        }
        const itemIdPrefix = generateCompositeItemIdPrefix(
          data[clampedIndex]
        );
        const targetCompositeItemId = generateCompositeId(itemIdPrefix);
        setActiveCompositeId(targetCompositeItemId);
        if (compositeRef.current?.contains(
          compositeRef.current.ownerDocument.activeElement
        )) {
          document.getElementById(targetCompositeItemId)?.focus();
        }
      },
      [data, generateCompositeItemIdPrefix]
    );
    (0, import_element164.useEffect)(() => {
      const wasActiveIdInList = previousActiveItemIndex !== void 0 && previousActiveItemIndex !== -1;
      if (!isActiveIdInList && wasActiveIdInList) {
        selectCompositeItem(
          previousActiveItemIndex,
          generateItemWrapperCompositeId
        );
      }
    }, [isActiveIdInList, selectCompositeItem, previousActiveItemIndex]);
    const onDropdownTriggerKeyDown = (0, import_element164.useCallback)(
      (event) => {
        if (event.key === "ArrowDown") {
          event.preventDefault();
          event.stopPropagation();
          selectCompositeItem(
            activeItemIndex + 1,
            generateDropdownTriggerCompositeId
          );
        }
        if (event.key === "ArrowUp") {
          event.preventDefault();
          event.stopPropagation();
          selectCompositeItem(
            activeItemIndex - 1,
            generateDropdownTriggerCompositeId
          );
        }
      },
      [selectCompositeItem, activeItemIndex]
    );
    const hasData = !!data?.length;
    const groupField = view.groupBy?.field ? fields2.find((field) => field.id === view.groupBy?.field) : null;
    const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null;
    const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
    const hasMoreItems = isInfiniteScroll && (view.startPosition ?? 1) + (view.perPage ?? 0) < paginationInfo.totalItems;
    const listClassName = clsx_default("dataviews-view-list", className, {
      [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes(view.layout.density),
      "is-refreshing": !isInfiniteScroll && isDelayedLoading
    });
    const compositeProps = {
      ref: compositeRef,
      id: baseId,
      render: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)("div", {}),
      activeId: activeCompositeId,
      setActiveId: setActiveCompositeId,
      inert: !isInfiniteScroll && !!isLoading ? "true" : void 0
    };
    if (!hasData) {
      return /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
        "div",
        {
          className: clsx_default("dataviews-no-results", {
            "is-refreshing": isDelayedLoading
          }),
          children: empty
        }
      );
    }
    if (hasData && groupField && dataByGroup) {
      return /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
        import_components34.Composite,
        {
          ...compositeProps,
          className: "dataviews-view-list__group",
          role: "grid",
          children: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(Stack, { direction: "column", gap: "lg", className: listClassName, children: Array.from(dataByGroup.entries()).map(
            ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime293.jsxs)(Stack, { direction: "column", children: [
              /* @__PURE__ */ (0, import_jsx_runtime293.jsx)("h3", { className: "dataviews-view-list__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n103.sprintf)(
                // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
                (0, import_i18n103.__)("%1$s: %2$s"),
                groupField.label,
                groupName
              ) }),
              groupItems.map((item) => {
                const id = generateCompositeItemIdPrefix(item);
                return /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
                  ListItem,
                  {
                    view,
                    idPrefix: id,
                    actions: actions2,
                    item,
                    isSelected: item === selectedItem,
                    selectionProps: getSelectionProps(
                      getItemId3(item)
                    ),
                    mediaField,
                    titleField: titleField2,
                    descriptionField: descriptionField3,
                    otherFields,
                    onDropdownTriggerKeyDown
                  },
                  id
                );
              })
            ] }, groupName)
          ) })
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime293.jsxs)(import_jsx_runtime293.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
        import_components34.Composite,
        {
          ...compositeProps,
          className: listClassName,
          role: view.infiniteScrollEnabled ? "feed" : "grid",
          children: data.map((item, index3) => {
            const id = generateCompositeItemIdPrefix(item);
            return /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
              ListItem,
              {
                view,
                idPrefix: id,
                actions: actions2,
                item,
                isSelected: item === selectedItem,
                selectionProps: getSelectionProps(
                  getItemId3(item)
                ),
                mediaField,
                titleField: titleField2,
                descriptionField: descriptionField3,
                otherFields,
                onDropdownTriggerKeyDown,
                posinset: view.infiniteScrollEnabled ? index3 + 1 : void 0
              },
              id
            );
          })
        }
      ),
      (hasMoreItems || isInfiniteScroll && isLoading) && // Keep the spinner's height reserved while loading more so the
      // scroll position doesn't bounce. Hidden, and silent to a11y,
      // while idle.
      /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(
        "p",
        {
          className: "dataviews-loading-more",
          "aria-hidden": !isLoading,
          children: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)(import_components34.Spinner, {})
        }
      )
    ] });
  }

  // packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs
  var import_components35 = __toESM(require_components(), 1);

  // packages/dataviews/build-module/components/dataviews-layouts/activity/activity-group.mjs
  var import_i18n104 = __toESM(require_i18n(), 1);
  var import_element165 = __toESM(require_element(), 1);
  var import_jsx_runtime294 = __toESM(require_jsx_runtime(), 1);
  function ActivityGroup({
    groupName,
    groupData,
    groupField,
    showLabel = true,
    children
  }) {
    const groupHeader = showLabel ? (0, import_element165.createInterpolateElement)(
      // translators: %s: The label of the field e.g. "Status".
      (0, import_i18n104.sprintf)((0, import_i18n104.__)("%s: <groupName />"), groupField.label).trim(),
      {
        groupName: /* @__PURE__ */ (0, import_jsx_runtime294.jsx)(
          groupField.render,
          {
            item: groupData[0],
            field: groupField
          }
        )
      }
    ) : /* @__PURE__ */ (0, import_jsx_runtime294.jsx)(groupField.render, { item: groupData[0], field: groupField });
    return /* @__PURE__ */ (0, import_jsx_runtime294.jsxs)(
      Stack,
      {
        direction: "column",
        className: "dataviews-view-activity__group",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime294.jsx)("h3", { className: "dataviews-view-activity__group-header", children: groupHeader }),
          children
        ]
      },
      groupName
    );
  }

  // packages/dataviews/build-module/components/dataviews-layouts/activity/activity-item.mjs
  var import_element166 = __toESM(require_element(), 1);
  var import_data38 = __toESM(require_data(), 1);
  var import_compose17 = __toESM(require_compose(), 1);
  var import_jsx_runtime295 = __toESM(require_jsx_runtime(), 1);
  function ActivityItem(props) {
    const {
      view,
      actions: actions2,
      item,
      titleField: titleField2,
      mediaField,
      descriptionField: descriptionField3,
      otherFields,
      posinset,
      onClickItem,
      renderItemLink,
      isItemClickable: isItemClickable2
    } = props;
    const {
      showTitle = true,
      showMedia = true,
      showDescription = true,
      infiniteScrollEnabled
    } = view;
    const itemRef = (0, import_element166.useRef)(null);
    const registry = (0, import_data38.useRegistry)();
    const { paginationInfo } = (0, import_element166.useContext)(dataviews_context_default);
    const { primaryActions, eligibleActions } = (0, import_element166.useMemo)(() => {
      const _eligibleActions = actions2.filter(
        (action) => !action.isEligible || action.isEligible(item)
      );
      const _primaryActions = _eligibleActions.filter(
        (action) => action.isPrimary
      );
      return {
        primaryActions: _primaryActions,
        eligibleActions: _eligibleActions
      };
    }, [actions2, item]);
    const isMobileViewport = (0, import_compose17.useViewportMatch)("medium", "<");
    const density = view.layout?.density ?? "balanced";
    const mediaContent = showMedia && density !== "compact" && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(
      mediaField.render,
      {
        item,
        field: mediaField,
        config: {
          sizes: density === "comfortable" ? "32px" : "24px"
        }
      }
    ) : null;
    const renderedMediaField = /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("div", { className: "dataviews-view-activity__item-type-icon", children: mediaContent || /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(
      "span",
      {
        className: "dataviews-view-activity__item-bullet",
        "aria-hidden": "true"
      }
    ) });
    const renderedTitleField = showTitle && titleField2?.render ? /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(titleField2.render, { item, field: titleField2 }) : null;
    const verticalGap = (0, import_element166.useMemo)(() => {
      switch (density) {
        case "comfortable":
          return "md";
        default:
          return "sm";
      }
    }, [density]);
    return /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(
      "div",
      {
        ref: itemRef,
        role: infiniteScrollEnabled ? "article" : void 0,
        "aria-posinset": posinset,
        "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0,
        className: clsx_default(
          "dataviews-view-activity__item",
          density === "compact" && "is-compact",
          density === "balanced" && "is-balanced",
          density === "comfortable" && "is-comfortable"
        ),
        children: /* @__PURE__ */ (0, import_jsx_runtime295.jsxs)(Stack, { direction: "row", gap: "lg", justify: "start", align: "flex-start", children: [
          /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(
            Stack,
            {
              direction: "column",
              gap: "xs",
              align: "center",
              className: "dataviews-view-activity__item-type",
              children: renderedMediaField
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime295.jsxs)(
            Stack,
            {
              direction: "column",
              gap: verticalGap,
              align: "flex-start",
              className: "dataviews-view-activity__item-content",
              children: [
                renderedTitleField && /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(
                  ItemClickWrapper,
                  {
                    item,
                    isItemClickable: isItemClickable2,
                    onClickItem,
                    renderItemLink,
                    className: "dataviews-view-activity__item-title",
                    children: renderedTitleField
                  }
                ),
                showDescription && descriptionField3 && /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("div", { className: "dataviews-view-activity__item-description", children: /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(
                  descriptionField3.render,
                  {
                    item,
                    field: descriptionField3
                  }
                ) }),
                /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("div", { className: "dataviews-view-activity__item-fields", children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime295.jsxs)(
                  "div",
                  {
                    className: "dataviews-view-activity__item-field",
                    children: [
                      /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(
                        VisuallyHidden,
                        {
                          className: "dataviews-view-activity__item-field-label",
                          render: /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("span", {}),
                          children: field.label
                        }
                      ),
                      /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("span", { className: "dataviews-view-activity__item-field-value", children: /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(
                        field.render,
                        {
                          item,
                          field
                        }
                      ) })
                    ]
                  },
                  field.id
                )) }),
                !!primaryActions?.length && /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(
                  PrimaryActions,
                  {
                    item,
                    actions: primaryActions,
                    registry,
                    buttonVariant: "secondary"
                  }
                )
              ]
            }
          ),
          (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu
          // there if there are any actions at all.
          isMobileViewport && // At the same time, only show the menu if there are actions to show.
          eligibleActions.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("div", { className: "dataviews-view-activity__item-actions", children: /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(
            ItemActions,
            {
              item,
              actions: eligibleActions,
              isCompact: true
            }
          ) })
        ] })
      }
    );
  }
  var activity_item_default = ActivityItem;

  // packages/dataviews/build-module/components/dataviews-layouts/activity/activity-items.mjs
  var import_react58 = __toESM(require_react(), 1);
  function isDefined3(item) {
    return !!item;
  }
  function ActivityItems(props) {
    const { data, fields: fields2, getItemId: getItemId3, view } = props;
    const titleField2 = fields2.find((field) => field.id === view.titleField);
    const mediaField = fields2.find((field) => field.id === view.mediaField);
    const descriptionField3 = fields2.find(
      (field) => field.id === view.descriptionField
    );
    const otherFields = (view?.fields ?? []).map((fieldId) => fields2.find((f2) => fieldId === f2.id)).filter(isDefined3);
    return data.map((item, index3) => {
      return /* @__PURE__ */ (0, import_react58.createElement)(
        activity_item_default,
        {
          ...props,
          key: getItemId3(item),
          item,
          mediaField,
          titleField: titleField2,
          descriptionField: descriptionField3,
          otherFields,
          posinset: view.infiniteScrollEnabled ? index3 + 1 : void 0
        }
      );
    });
  }

  // packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs
  var import_jsx_runtime296 = __toESM(require_jsx_runtime(), 1);
  function ViewActivity(props) {
    const { empty, data, fields: fields2, isLoading, view, className } = props;
    const isDelayedLoading = useDelayedLoading(!!isLoading);
    const hasData = !!data?.length;
    const groupField = view.groupBy?.field ? fields2.find((field) => field.id === view.groupBy?.field) : null;
    const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null;
    const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
    if (!hasData) {
      return /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(
        "div",
        {
          className: clsx_default("dataviews-no-results", {
            "is-refreshing": isDelayedLoading
          }),
          children: empty
        }
      );
    }
    const isInert = !isInfiniteScroll && !!isLoading;
    const wrapperClassName = clsx_default("dataviews-view-activity", className, {
      "is-refreshing": !isInfiniteScroll && isDelayedLoading
    });
    const groupedEntries = dataByGroup ? Array.from(dataByGroup.entries()) : [];
    if (hasData && groupField && dataByGroup) {
      return /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(
        Stack,
        {
          direction: "column",
          gap: "sm",
          className: wrapperClassName,
          inert: isInert ? "true" : void 0,
          children: groupedEntries.map(
            ([groupName, groupData]) => /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(
              ActivityGroup,
              {
                groupName,
                groupData,
                groupField,
                showLabel: view.groupBy?.showLabel !== false,
                children: /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(
                  ActivityItems,
                  {
                    ...props,
                    data: groupData
                  }
                )
              },
              groupName
            )
          )
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime296.jsxs)(import_jsx_runtime296.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(
        "div",
        {
          className: wrapperClassName,
          role: view.infiniteScrollEnabled ? "feed" : void 0,
          inert: isInert ? "true" : void 0,
          children: /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(ActivityItems, { ...props })
        }
      ),
      isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime296.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(import_components35.Spinner, {}) })
    ] });
  }

  // packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs
  var import_components38 = __toESM(require_components(), 1);
  var import_i18n107 = __toESM(require_i18n(), 1);
  var import_compose18 = __toESM(require_compose(), 1);
  var import_element169 = __toESM(require_element(), 1);

  // packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs
  var import_components37 = __toESM(require_components(), 1);
  var import_data39 = __toESM(require_data(), 1);
  var import_element168 = __toESM(require_element(), 1);
  var import_i18n106 = __toESM(require_i18n(), 1);

  // packages/dataviews/build-module/components/dataviews-pagination/index.mjs
  var import_components36 = __toESM(require_components(), 1);
  var import_element167 = __toESM(require_element(), 1);
  var import_i18n105 = __toESM(require_i18n(), 1);
  var import_jsx_runtime297 = __toESM(require_jsx_runtime(), 1);
  function hasPaginationControls(view, paginationInfo) {
    return !view.infiniteScrollEnabled && paginationInfo.totalItems > 0 && paginationInfo.totalPages > 1;
  }
  function DataViewsPageSelect({ className }) {
    const { view, onChangeView, paginationInfo } = (0, import_element167.useContext)(dataviews_context_default);
    if (!hasPaginationControls(view, paginationInfo)) {
      return null;
    }
    const { totalPages } = paginationInfo;
    const currentPage = view.page ?? 1;
    const pageSelectOptions = Array.from(Array(totalPages)).map(
      (_, i2) => {
        const page = i2 + 1;
        return {
          value: page.toString(),
          label: page.toString(),
          "aria-label": currentPage === page ? (0, import_i18n105.sprintf)(
            // translators: 1: current page number. 2: total number of pages.
            (0, import_i18n105.__)("Page %1$d of %2$d"),
            currentPage,
            totalPages
          ) : page.toString()
        };
      }
    );
    return /* @__PURE__ */ (0, import_jsx_runtime297.jsx)(
      Stack,
      {
        direction: "row",
        justify: "flex-start",
        align: "center",
        gap: "xs",
        className: clsx_default("dataviews-pagination__page-select", className),
        children: (0, import_element167.createInterpolateElement)(
          (0, import_i18n105.sprintf)(
            // translators: 1: Current page number, 2: Total number of pages.
            (0, import_i18n105._x)("<div>Page</div>%1$s<div>of %2$d</div>", "paging"),
            "<CurrentPage />",
            totalPages
          ),
          {
            div: /* @__PURE__ */ (0, import_jsx_runtime297.jsx)("div", { "aria-hidden": true }),
            // @ts-expect-error — Tag injected via sprintf argument, not visible in format string.
            CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime297.jsx)(
              import_components36.SelectControl,
              {
                "aria-label": (0, import_i18n105.__)("Current page"),
                value: currentPage.toString(),
                options: pageSelectOptions,
                onChange: (newValue) => {
                  onChangeView({
                    ...view,
                    page: +newValue
                  });
                },
                size: "small",
                variant: "minimal"
              }
            )
          }
        )
      }
    );
  }
  function DataViewsPageNavigation({
    className
  }) {
    const { view, onChangeView, paginationInfo } = (0, import_element167.useContext)(dataviews_context_default);
    if (!hasPaginationControls(view, paginationInfo)) {
      return null;
    }
    const { totalPages } = paginationInfo;
    const currentPage = view.page ?? 1;
    return /* @__PURE__ */ (0, import_jsx_runtime297.jsxs)(
      Stack,
      {
        direction: "row",
        gap: "xs",
        align: "center",
        className: clsx_default(
          "dataviews-pagination__page-navigation",
          className
        ),
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime297.jsx)(
            import_components36.Button,
            {
              onClick: () => onChangeView({
                ...view,
                page: currentPage - 1
              }),
              disabled: currentPage === 1,
              accessibleWhenDisabled: true,
              label: (0, import_i18n105.__)("Previous page"),
              icon: (0, import_i18n105.isRTL)() ? next_default : previous_default,
              showTooltip: true,
              size: "compact",
              tooltipPosition: "top"
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime297.jsx)(
            import_components36.Button,
            {
              onClick: () => onChangeView({ ...view, page: currentPage + 1 }),
              disabled: currentPage >= totalPages,
              accessibleWhenDisabled: true,
              label: (0, import_i18n105.__)("Next page"),
              icon: (0, import_i18n105.isRTL)() ? previous_default : next_default,
              showTooltip: true,
              size: "compact",
              tooltipPosition: "top"
            }
          )
        ]
      }
    );
  }
  function DataViewsPagination({
    children,
    className
  }) {
    const { view, paginationInfo } = (0, import_element167.useContext)(dataviews_context_default);
    if (!hasPaginationControls(view, paginationInfo)) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime297.jsx)(
      Stack,
      {
        direction: "row",
        className: clsx_default("dataviews-pagination", className),
        justify: "end",
        align: "center",
        gap: "xl",
        children: children ?? /* @__PURE__ */ (0, import_jsx_runtime297.jsxs)(import_jsx_runtime297.Fragment, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime297.jsx)(DataViewsPageSelect, {}),
          /* @__PURE__ */ (0, import_jsx_runtime297.jsx)(DataViewsPageNavigation, {})
        ] })
      }
    );
  }
  var dataviews_pagination_default = (0, import_element167.memo)(DataViewsPagination);

  // packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs
  var import_jsx_runtime298 = __toESM(require_jsx_runtime(), 1);
  var EMPTY_ARRAY6 = [];
  function useIsMultiselectPicker(actions2) {
    return (0, import_element168.useMemo)(() => {
      return !!actions2?.length && actions2?.every((action) => action.supportsBulk);
    }, [actions2]);
  }
  function BulkSelectionCheckbox2({
    selection,
    selectedItems,
    onChangeSelection,
    data,
    getItemId: getItemId3,
    disableSelectAll = false
  }) {
    const hasSelection = selection.length > 0;
    const areAllSelected = selectedItems.length === data.length;
    if (disableSelectAll) {
      return /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(
        import_components37.CheckboxControl,
        {
          className: "dataviews-view-table-selection-checkbox",
          checked: hasSelection,
          disabled: !hasSelection,
          onChange: () => {
            onChangeSelection([]);
          },
          "aria-label": (0, import_i18n106.__)("Deselect all")
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(
      import_components37.CheckboxControl,
      {
        className: "dataviews-view-table-selection-checkbox",
        checked: areAllSelected,
        indeterminate: !areAllSelected && !!selectedItems.length,
        onChange: () => {
          if (areAllSelected) {
            onChangeSelection(
              selection.filter(
                (id) => !data.some(
                  (item) => id === getItemId3(item)
                )
              )
            );
          } else {
            const selectionSet = /* @__PURE__ */ new Set([
              ...selection,
              ...data.map((item) => getItemId3(item))
            ]);
            onChangeSelection(Array.from(selectionSet));
          }
        },
        "aria-label": areAllSelected ? (0, import_i18n106.__)("Deselect all") : (0, import_i18n106.__)("Select all")
      }
    );
  }
  function ActionButtons({
    actions: actions2,
    items,
    selection
  }) {
    const registry = (0, import_data39.useRegistry)();
    const [actionInProgress, setActionInProgress] = (0, import_element168.useState)(
      null
    );
    return /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(Stack, { direction: "row", gap: "xs", children: actions2.map((action) => {
      if (!("callback" in action)) {
        return null;
      }
      const { id, label, icon, isPrimary, isEligible, callback } = action;
      const eligibleItems = isEligible ? items.filter((item) => isEligible(item)) : items;
      const _label = typeof label === "string" ? label : label(items);
      const variant = isPrimary ? "primary" : "tertiary";
      const isInProgress = id === actionInProgress;
      return /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(
        import_components37.Button,
        {
          accessibleWhenDisabled: true,
          icon,
          disabled: isInProgress || !selection?.length || !!isEligible && !eligibleItems.length,
          isBusy: isInProgress,
          onClick: async () => {
            setActionInProgress(id);
            await callback(eligibleItems, {
              registry
            });
            setActionInProgress(null);
          },
          size: "compact",
          variant,
          children: _label
        },
        id
      );
    }) });
  }
  function PickerBulkSelectionInfo() {
    const {
      data,
      selection,
      onChangeSelection,
      getItemId: getItemId3,
      actions: actions2 = EMPTY_ARRAY6,
      paginationInfo,
      view
    } = (0, import_element168.useContext)(dataviews_context_default);
    const isMultiselect = useIsMultiselectPicker(actions2);
    const selectedItems = (0, import_element168.useMemo)(
      () => data.filter((item) => selection.includes(getItemId3(item))),
      [selection, getItemId3, data]
    );
    if (!actions2.length) {
      return null;
    }
    const message2 = getFooterMessage(
      selection.length,
      data.length,
      paginationInfo.totalItems,
      !!view.infiniteScrollEnabled
    );
    return /* @__PURE__ */ (0, import_jsx_runtime298.jsxs)(
      Stack,
      {
        direction: "row",
        className: "dataviews-picker-footer__bulk-selection",
        gap: "md",
        align: "center",
        children: [
          isMultiselect && /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(
            BulkSelectionCheckbox2,
            {
              selection,
              selectedItems,
              onChangeSelection,
              data,
              getItemId: getItemId3,
              disableSelectAll: !!view.infiniteScrollEnabled
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime298.jsx)("span", { className: "dataviews-bulk-actions-footer__item-count", children: message2 })
        ]
      }
    );
  }
  function PickerActions({ className }) {
    const {
      data,
      selection,
      getItemId: getItemId3,
      actions: actions2 = EMPTY_ARRAY6
    } = (0, import_element168.useContext)(dataviews_context_default);
    const selectedItems = (0, import_element168.useMemo)(
      () => data.filter((item) => selection.includes(getItemId3(item))),
      [selection, getItemId3, data]
    );
    if (!actions2.length) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(
      "div",
      {
        className: clsx_default("dataviews-picker-footer__actions", className),
        children: /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(
          ActionButtons,
          {
            actions: actions2,
            items: selectedItems,
            selection
          }
        )
      }
    );
  }
  function DataViewsPickerBulkActionToolbar({
    className
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime298.jsxs)(Stack, { direction: "row", gap: "md", align: "center", className, children: [
      /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(PickerBulkSelectionInfo, {}),
      /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(PickerActions, {})
    ] });
  }
  function DataViewsPickerFooter({
    children,
    className
  }) {
    const {
      actions: actions2 = EMPTY_ARRAY6,
      paginationInfo,
      view
    } = (0, import_element168.useContext)(dataviews_context_default);
    const hasPagination = !view.infiniteScrollEnabled && !!paginationInfo.totalItems && paginationInfo.totalPages > 1;
    const rendersDefaultContents = children === void 0 || children === null;
    if (rendersDefaultContents && !actions2.length && !hasPagination) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(
      Stack,
      {
        direction: "row",
        justify: "space-between",
        align: "center",
        className: clsx_default("dataviews-footer", className),
        gap: "sm",
        children: children ?? /* @__PURE__ */ (0, import_jsx_runtime298.jsxs)(import_jsx_runtime298.Fragment, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(PickerBulkSelectionInfo, {}),
          /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(dataviews_pagination_default, {}),
          /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(PickerActions, {})
        ] })
      }
    );
  }

  // packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs
  var import_jsx_runtime299 = __toESM(require_jsx_runtime(), 1);
  function GridItem3({
    view,
    selection,
    onChangeSelection,
    selectionProps,
    getItemId: getItemId3,
    item,
    mediaField,
    titleField: titleField2,
    descriptionField: descriptionField3,
    regularFields,
    badgeFields,
    config: config2,
    posinset,
    setsize
  }) {
    const { showTitle = true, showMedia = true, showDescription = true } = view;
    const id = getItemId3(item);
    const elementRef = (0, import_element169.useRef)(null);
    const isSelected2 = selection.includes(id);
    useIntersectionObserver(elementRef, posinset);
    const renderedMediaField = mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
      mediaField.render,
      {
        item,
        field: mediaField,
        config: config2
      }
    ) : null;
    const renderedTitleField = showTitle && titleField2?.render ? /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(titleField2.render, { item, field: titleField2 }) : null;
    return /* @__PURE__ */ (0, import_jsx_runtime299.jsxs)(
      import_components38.Composite.Item,
      {
        ref: elementRef,
        "aria-label": titleField2 ? titleField2.getValue({ item }) || (0, import_i18n107.__)("(no title)") : void 0,
        render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(Stack, { direction: "column", children, ...props }),
        role: "option",
        "aria-posinset": posinset,
        "aria-setsize": setsize,
        className: clsx_default("dataviews-view-picker-grid__card", {
          "is-selected": isSelected2
        }),
        "aria-selected": isSelected2,
        ...selectionProps,
        children: [
          showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime299.jsx)("div", { className: "dataviews-view-picker-grid__media", children: renderedMediaField }),
          showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
            DataViewsSelectionCheckbox,
            {
              item,
              selection,
              onChangeSelection,
              getItemId: getItemId3,
              titleField: titleField2,
              disabled: false,
              "aria-hidden": true,
              tabIndex: -1
            }
          ),
          showTitle && /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
            Stack,
            {
              direction: "row",
              justify: "space-between",
              className: "dataviews-view-picker-grid__title-actions",
              children: /* @__PURE__ */ (0, import_jsx_runtime299.jsx)("div", { className: "dataviews-view-picker-grid__title-field dataviews-title-field", children: renderedTitleField })
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime299.jsxs)(Stack, { direction: "column", gap: "xs", children: [
            showDescription && descriptionField3?.render && /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
              descriptionField3.render,
              {
                item,
                field: descriptionField3
              }
            ),
            !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
              Stack,
              {
                direction: "row",
                className: "dataviews-view-picker-grid__badge-fields",
                gap: "sm",
                wrap: "wrap",
                align: "top",
                justify: "flex-start",
                children: badgeFields.map((field) => {
                  return (
                    /* @ts-expect-error `Badge` is text-only, but a badge field renders whatever its `render` returns. */
                    /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
                      Badge,
                      {
                        className: "dataviews-view-picker-grid__field-value",
                        children: /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
                          field.render,
                          {
                            item,
                            field
                          }
                        )
                      },
                      field.id
                    )
                  );
                })
              }
            ),
            !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
              Stack,
              {
                direction: "column",
                className: "dataviews-view-picker-grid__fields",
                gap: "xs",
                children: regularFields.map((field) => {
                  return /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
                    import_components38.Flex,
                    {
                      className: "dataviews-view-picker-grid__field",
                      gap: 1,
                      justify: "flex-start",
                      expanded: true,
                      style: { height: "auto" },
                      direction: "row",
                      children: /* @__PURE__ */ (0, import_jsx_runtime299.jsxs)(import_jsx_runtime299.Fragment, { children: [
                        /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(import_components38.FlexItem, { className: "dataviews-view-picker-grid__field-name", children: field.header }),
                        /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
                          import_components38.FlexItem,
                          {
                            className: "dataviews-view-picker-grid__field-value",
                            style: { maxHeight: "none" },
                            children: /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
                              field.render,
                              {
                                item,
                                field
                              }
                            )
                          }
                        )
                      ] })
                    },
                    field.id
                  );
                })
              }
            )
          ] })
        ]
      },
      id
    );
  }
  function GridGroup({
    groupName,
    groupField,
    showLabel = true,
    children
  }) {
    const headerId = (0, import_compose18.useInstanceId)(
      GridGroup,
      "dataviews-view-picker-grid-group__header"
    );
    return /* @__PURE__ */ (0, import_jsx_runtime299.jsxs)(
      Stack,
      {
        direction: "column",
        gap: "sm",
        role: "group",
        "aria-labelledby": headerId,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
            "h3",
            {
              className: "dataviews-view-picker-grid-group__header",
              id: headerId,
              children: showLabel ? (0, import_i18n107.sprintf)(
                // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
                (0, import_i18n107.__)("%1$s: %2$s"),
                groupField.label,
                groupName
              ) : groupName
            }
          ),
          children
        ]
      },
      groupName
    );
  }
  function ViewPickerGrid({
    actions: actions2,
    data,
    fields: fields2,
    getItemId: getItemId3,
    isLoading,
    onChangeSelection,
    selection,
    view,
    className,
    empty
  }) {
    const { resizeObserverRef, paginationInfo, itemListLabel } = (0, import_element169.useContext)(dataviews_context_default);
    const titleField2 = fields2.find(
      (field) => field.id === view?.titleField
    );
    const mediaField = fields2.find(
      (field) => field.id === view?.mediaField
    );
    const descriptionField3 = fields2.find(
      (field) => field.id === view?.descriptionField
    );
    const otherFields = view.fields ?? [];
    const { regularFields, badgeFields } = otherFields.reduce(
      (accumulator, fieldId) => {
        const field = fields2.find((f2) => f2.id === fieldId);
        if (!field) {
          return accumulator;
        }
        const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields";
        accumulator[key].push(field);
        return accumulator;
      },
      { regularFields: [], badgeFields: [] }
    );
    const hasData = !!data?.length;
    const usedPreviewSize = view.layout?.previewSize;
    const isMultiselect = useIsMultiselectPicker(actions2);
    const size4 = "900px";
    const groupField = view.groupBy?.field ? fields2.find((f2) => f2.id === view.groupBy?.field) : null;
    const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
    const isInfiniteScroll = (view.infiniteScrollEnabled && !dataByGroup) ?? false;
    const orderedData = dataByGroup ? Array.from(dataByGroup.values()).flat() : data;
    const { getSelectionProps } = useSelectionProps({
      data: orderedData,
      getItemId: getItemId3,
      isItemSelectable: () => true,
      selection,
      onChangeSelection,
      selectionMode: isMultiselect ? "multi" : "single-clearable",
      shouldSelectOnClick: true
    });
    const currentPage = view?.page ?? 1;
    const perPage = view?.perPage ?? 0;
    const setSize = isInfiniteScroll ? paginationInfo?.totalItems : void 0;
    const isMediaContain = view.layout?.mediaFit === "contain";
    const gridColumns = useGridColumns();
    const placeholdersNeeded = usePlaceholdersNeeded(
      data,
      isInfiniteScroll,
      gridColumns
    );
    return /* @__PURE__ */ (0, import_jsx_runtime299.jsxs)(import_jsx_runtime299.Fragment, {
      // Render multiple groups.
      children: [
        hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
          import_components38.Composite,
          {
            virtualFocus: true,
            orientation: "horizontal",
            role: "listbox",
            "aria-multiselectable": isMultiselect,
            className: clsx_default(
              "dataviews-view-picker-grid",
              className,
              {
                [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes(
                  view.layout.density
                ),
                "has-media-fit-contain": isMediaContain
              }
            ),
            "aria-label": itemListLabel,
            render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
              Stack,
              {
                direction: "column",
                gap: "lg",
                children,
                ...props
              }
            ),
            children: Array.from(dataByGroup.entries()).map(
              ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
                GridGroup,
                {
                  groupName,
                  groupField,
                  showLabel: view.groupBy?.showLabel !== false,
                  children: /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
                    GridItems,
                    {
                      previewSize: usedPreviewSize,
                      "aria-busy": isLoading,
                      ref: resizeObserverRef,
                      children: groupItems.map((item) => {
                        const posInSet = item.position ?? (currentPage - 1) * perPage + data.indexOf(item) + 1;
                        return /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
                          GridItem3,
                          {
                            view,
                            selection,
                            onChangeSelection,
                            selectionProps: getSelectionProps(
                              getItemId3(item)
                            ),
                            getItemId: getItemId3,
                            item,
                            mediaField,
                            titleField: titleField2,
                            descriptionField: descriptionField3,
                            regularFields,
                            badgeFields,
                            config: {
                              sizes: size4
                            },
                            posinset: posInSet,
                            setsize: setSize
                          },
                          getItemId3(item)
                        );
                      })
                    }
                  )
                },
                groupName
              )
            )
          }
        ),
        // Render a single grid with all data.
        hasData && !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime299.jsxs)(
          import_components38.Composite,
          {
            render: /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
              GridItems,
              {
                className: clsx_default(
                  "dataviews-view-picker-grid",
                  className,
                  {
                    [`has-${view.layout?.density}-density`]: view.layout?.density && [
                      "compact",
                      "comfortable"
                    ].includes(view.layout.density),
                    "has-media-fit-contain": isMediaContain
                  }
                ),
                previewSize: usedPreviewSize,
                "aria-busy": isLoading,
                ref: resizeObserverRef
              }
            ),
            virtualFocus: true,
            orientation: "horizontal",
            role: "listbox",
            "aria-multiselectable": isMultiselect,
            "aria-label": itemListLabel,
            children: [
              Array.from({ length: placeholdersNeeded }).map(
                (_, index3) => /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
                  import_components38.Composite.Item,
                  {
                    render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
                      Stack,
                      {
                        direction: "column",
                        children,
                        ...props
                      }
                    ),
                    role: "option",
                    "aria-hidden": true,
                    tabIndex: -1,
                    className: "dataviews-view-picker-grid__card dataviews-view-picker-grid__placeholder"
                  },
                  `placeholder-${index3}`
                )
              ),
              data.map((item) => {
                const posinset = item.position;
                return /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
                  GridItem3,
                  {
                    view,
                    selection,
                    onChangeSelection,
                    selectionProps: getSelectionProps(
                      getItemId3(item)
                    ),
                    getItemId: getItemId3,
                    item,
                    mediaField,
                    titleField: titleField2,
                    descriptionField: descriptionField3,
                    regularFields,
                    badgeFields,
                    config: {
                      sizes: size4
                    },
                    posinset,
                    setsize: setSize
                  },
                  getItemId3(item)
                );
              })
            ]
          }
        ),
        // Render empty state.
        !hasData && /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(
          "div",
          {
            className: clsx_default({
              "dataviews-loading": isLoading,
              "dataviews-no-results": !isLoading
            }),
            children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime299.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(import_components38.Spinner, {}) }) : empty
          }
        ),
        hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime299.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(import_components38.Spinner, {}) })
      ]
    });
  }
  var picker_grid_default = ViewPickerGrid;

  // packages/dataviews/build-module/components/dataviews-layouts/picker-table/index.mjs
  var import_i18n108 = __toESM(require_i18n(), 1);
  var import_components39 = __toESM(require_components(), 1);
  var import_element170 = __toESM(require_element(), 1);
  var import_jsx_runtime300 = __toESM(require_jsx_runtime(), 1);
  function TableColumnField2({
    item,
    fields: fields2,
    column,
    align
  }) {
    const field = fields2.find((f2) => f2.id === column);
    if (!field) {
      return null;
    }
    const className = clsx_default("dataviews-view-table__cell-content-wrapper", {
      "dataviews-view-table__cell-align-end": align === "end",
      "dataviews-view-table__cell-align-center": align === "center"
    });
    return /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(field.render, { item, field }) });
  }
  function TableRow2({
    item,
    fields: fields2,
    id,
    view,
    titleField: titleField2,
    mediaField,
    descriptionField: descriptionField3,
    selection,
    getItemId: getItemId3,
    onChangeSelection,
    selectionProps,
    posinset
  }) {
    const { paginationInfo } = (0, import_element170.useContext)(dataviews_context_default);
    const isSelected2 = selection.includes(id);
    const [isHovered, setIsHovered] = (0, import_element170.useState)(false);
    const elementRef = (0, import_element170.useRef)(null);
    useIntersectionObserver(elementRef, posinset);
    const {
      showTitle = true,
      showMedia = true,
      showDescription = true,
      infiniteScrollEnabled
    } = view;
    const handleMouseEnter = () => {
      setIsHovered(true);
    };
    const handleMouseLeave = () => {
      setIsHovered(false);
    };
    const columns = getTableColumns(view, fields2);
    const hasPrimaryColumn = titleField2 && showTitle || mediaField && showMedia || descriptionField3 && showDescription;
    return /* @__PURE__ */ (0, import_jsx_runtime300.jsxs)(
      import_components39.Composite.Item,
      {
        ref: elementRef,
        render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
          "tr",
          {
            className: clsx_default("dataviews-view-table__row", {
              "is-selected": isSelected2,
              "is-hovered": isHovered
            }),
            onMouseEnter: handleMouseEnter,
            onMouseLeave: handleMouseLeave,
            children,
            ...props
          }
        ),
        "aria-selected": isSelected2,
        "aria-setsize": paginationInfo.totalItems || void 0,
        "aria-posinset": posinset,
        role: infiniteScrollEnabled ? "article" : "option",
        onClickCapture: selectionProps.onClickCapture,
        onClick: selectionProps.onClick,
        onMouseDown: (event) => {
          if (event.button !== 0) {
            return;
          }
          event.currentTarget.parentElement?.focus({
            preventScroll: true
          });
          selectionProps.onMouseDown(event);
        },
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
            "td",
            {
              className: "dataviews-view-table__checkbox-column",
              role: "presentation",
              children: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
                DataViewsSelectionCheckbox,
                {
                  item,
                  selection,
                  onChangeSelection,
                  getItemId: getItemId3,
                  titleField: titleField2,
                  disabled: false,
                  "aria-hidden": true,
                  tabIndex: -1
                }
              ) })
            }
          ),
          hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
            "td",
            {
              role: "presentation",
              children: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
                column_primary_default,
                {
                  item,
                  titleField: showTitle ? titleField2 : void 0,
                  mediaField: showMedia ? mediaField : void 0,
                  descriptionField: showDescription ? descriptionField3 : void 0,
                  isItemClickable: () => false
                }
              )
            }
          ),
          columns.map((column) => {
            const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {};
            return /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
              "td",
              {
                style: {
                  width,
                  maxWidth,
                  minWidth
                },
                role: "presentation",
                children: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
                  TableColumnField2,
                  {
                    fields: fields2,
                    item,
                    column,
                    align
                  }
                )
              },
              column
            );
          })
        ]
      },
      id
    );
  }
  function ViewPickerTable({
    actions: actions2,
    data,
    fields: fields2,
    getItemId: getItemId3,
    isLoading = false,
    onChangeView,
    onChangeSelection,
    selection,
    setOpenedFilter,
    view,
    className,
    empty
  }) {
    const headerMenuRefs = (0, import_element170.useRef)(/* @__PURE__ */ new Map());
    const headerMenuToFocusRef = (0, import_element170.useRef)(void 0);
    const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element170.useState)();
    const isMultiselect = useIsMultiselectPicker(actions2) ?? false;
    (0, import_element170.useEffect)(() => {
      if (headerMenuToFocusRef.current) {
        headerMenuToFocusRef.current.focus();
        headerMenuToFocusRef.current = void 0;
      }
    });
    const groupField = view.groupBy?.field ? fields2.find((f2) => f2.id === view.groupBy?.field) : null;
    const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
    const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
    const orderedData = dataByGroup ? Array.from(dataByGroup.values()).flat() : data;
    const { getSelectionProps } = useSelectionProps({
      data: orderedData,
      getItemId: getItemId3,
      isItemSelectable: () => true,
      selection,
      onChangeSelection,
      selectionMode: isMultiselect ? "multi" : "single-clearable",
      shouldSelectOnClick: true
    });
    const tableNoticeId = (0, import_element170.useId)();
    if (nextHeaderMenuToFocus) {
      headerMenuToFocusRef.current = nextHeaderMenuToFocus;
      setNextHeaderMenuToFocus(void 0);
      return;
    }
    const onHide = (field) => {
      const hidden = headerMenuRefs.current.get(field.id);
      const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0;
      setNextHeaderMenuToFocus(fallback?.node);
    };
    const hasData = !!data?.length;
    const titleField2 = fields2.find((field) => field.id === view.titleField);
    const mediaField = fields2.find((field) => field.id === view.mediaField);
    const descriptionField3 = fields2.find(
      (field) => field.id === view.descriptionField
    );
    const { showTitle = true, showMedia = true, showDescription = true } = view;
    const hasPrimaryColumn = titleField2 && showTitle || mediaField && showMedia || descriptionField3 && showDescription;
    const columns = getTableColumns(view, fields2);
    const headerMenuRef = (column, index3) => (node) => {
      if (node) {
        headerMenuRefs.current.set(column, {
          node,
          fallback: columns[index3 > 0 ? index3 - 1 : 1]
        });
      } else {
        headerMenuRefs.current.delete(column);
      }
    };
    return /* @__PURE__ */ (0, import_jsx_runtime300.jsxs)(import_jsx_runtime300.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime300.jsxs)(
        "table",
        {
          className: clsx_default(
            "dataviews-view-table",
            "dataviews-view-picker-table",
            className,
            {
              [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes(
                view.layout.density
              )
            }
          ),
          "aria-busy": isLoading,
          "aria-describedby": tableNoticeId,
          role: isInfiniteScroll ? "feed" : "listbox",
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("thead", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime300.jsxs)(
              "tr",
              {
                className: "dataviews-view-table__row",
                role: "presentation",
                children: [
                  /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("th", { className: "dataviews-view-table__checkbox-column", children: isMultiselect && /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
                    BulkSelectionCheckbox,
                    {
                      selection,
                      onChangeSelection,
                      data,
                      actions: actions2,
                      getItemId: getItemId3,
                      disableSelectAll: isInfiniteScroll
                    }
                  ) }),
                  hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("th", { children: titleField2 && /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
                    column_header_menu_default,
                    {
                      ref: headerMenuRef(
                        titleField2.id,
                        0
                      ),
                      fieldId: titleField2.id,
                      view,
                      fields: fields2,
                      onChangeView,
                      onHide,
                      setOpenedFilter,
                      canMove: false
                    }
                  ) }),
                  columns.map((column, index3) => {
                    const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {};
                    return /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
                      "th",
                      {
                        style: {
                          width,
                          maxWidth,
                          minWidth,
                          textAlign: align
                        },
                        "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0,
                        scope: "col",
                        children: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
                          column_header_menu_default,
                          {
                            ref: headerMenuRef(column, index3),
                            fieldId: column,
                            view,
                            fields: fields2,
                            onChangeView,
                            onHide,
                            setOpenedFilter,
                            canMove: view.layout?.enableMoving ?? true
                          }
                        )
                      },
                      column
                    );
                  })
                ]
              }
            ) }),
            hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map(
              ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime300.jsxs)(
                import_components39.Composite,
                {
                  virtualFocus: true,
                  orientation: "vertical",
                  render: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("tbody", { role: "group" }),
                  children: [
                    /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
                      "tr",
                      {
                        className: "dataviews-view-table__group-header-row",
                        role: "presentation",
                        children: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
                          "td",
                          {
                            colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + 1,
                            className: "dataviews-view-table__group-header-cell",
                            role: "presentation",
                            children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n108.sprintf)(
                              // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
                              (0, import_i18n108.__)("%1$s: %2$s"),
                              groupField.label,
                              groupName
                            )
                          }
                        )
                      }
                    ),
                    groupItems.map((item, index3) => {
                      const id = getItemId3(item) || index3.toString();
                      return /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
                        TableRow2,
                        {
                          item,
                          fields: fields2,
                          id,
                          view,
                          titleField: titleField2,
                          mediaField,
                          descriptionField: descriptionField3,
                          selection,
                          getItemId: getItemId3,
                          onChangeSelection,
                          selectionProps: getSelectionProps(
                            id
                          )
                        },
                        getItemId3(item)
                      );
                    })
                  ]
                },
                `group-${groupName}`
              )
            ) : /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
              import_components39.Composite,
              {
                render: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("tbody", { role: "presentation" }),
                virtualFocus: true,
                orientation: "vertical",
                children: hasData && data.map((item, index3) => {
                  const itemId = getItemId3(item);
                  const id = itemId || index3.toString();
                  const posinset = item.position;
                  return /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(
                    TableRow2,
                    {
                      item,
                      fields: fields2,
                      id,
                      view,
                      titleField: titleField2,
                      mediaField,
                      descriptionField: descriptionField3,
                      selection,
                      getItemId: getItemId3,
                      onChangeSelection,
                      selectionProps: getSelectionProps(
                        id
                      ),
                      posinset
                    },
                    itemId
                  );
                })
              }
            )
          ]
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime300.jsxs)(
        "div",
        {
          className: clsx_default({
            "dataviews-loading": isLoading,
            "dataviews-no-results": !hasData && !isLoading
          }),
          id: tableNoticeId,
          children: [
            !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(import_components39.Spinner, {}) }) : empty),
            hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime300.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(import_components39.Spinner, {}) })
          ]
        }
      )
    ] });
  }
  var picker_table_default = ViewPickerTable;

  // packages/dataviews/build-module/components/dataviews-layouts/picker-activity/index.mjs
  var import_components40 = __toESM(require_components(), 1);
  var import_element171 = __toESM(require_element(), 1);
  var import_compose19 = __toESM(require_compose(), 1);
  var import_i18n109 = __toESM(require_i18n(), 1);
  var import_jsx_runtime301 = __toESM(require_jsx_runtime(), 1);
  function isDefined4(item) {
    return !!item;
  }
  function PickerActivityItem({
    view,
    selection,
    selectionProps,
    getItemId: getItemId3,
    item,
    titleField: titleField2,
    mediaField,
    descriptionField: descriptionField3,
    otherFields,
    posinset,
    setsize
  }) {
    const elementRef = (0, import_element171.useRef)(null);
    useIntersectionObserver(elementRef, posinset);
    const { showTitle = true, showMedia = true, showDescription = true } = view;
    const id = getItemId3(item);
    const isSelected2 = selection.includes(id);
    const density = view.layout?.density ?? "balanced";
    const mediaContent = showMedia && density !== "compact" && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(
      mediaField.render,
      {
        item,
        field: mediaField,
        config: {
          sizes: density === "comfortable" ? "32px" : "24px"
        }
      }
    ) : null;
    const renderedMediaField = /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("div", { className: "dataviews-view-picker-activity__item-type-icon", children: mediaContent || /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(
      "span",
      {
        className: "dataviews-view-picker-activity__item-bullet",
        "aria-hidden": "true"
      }
    ) });
    const renderedTitleField = showTitle && titleField2?.render ? /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(titleField2.render, { item, field: titleField2 }) : null;
    const renderedDescriptionField = showDescription && descriptionField3?.render ? /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(descriptionField3.render, { item, field: descriptionField3 }) : null;
    const verticalGap = (0, import_element171.useMemo)(() => {
      switch (density) {
        case "comfortable":
          return "md";
        default:
          return "sm";
      }
    }, [density]);
    return /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(
      import_components40.Composite.Item,
      {
        ref: elementRef,
        role: "option",
        "aria-label": titleField2 ? titleField2.getValue({ item }) || void 0 : void 0,
        "aria-posinset": posinset,
        "aria-setsize": setsize,
        "aria-selected": isSelected2,
        className: clsx_default(
          "dataviews-view-picker-activity__item",
          density === "compact" && "is-compact",
          density === "balanced" && "is-balanced",
          density === "comfortable" && "is-comfortable",
          isSelected2 && "is-selected"
        ),
        ...selectionProps,
        render: /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("div", {}),
        children: /* @__PURE__ */ (0, import_jsx_runtime301.jsxs)(Stack, { direction: "row", gap: "lg", justify: "start", align: "flex-start", children: [
          /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(
            Stack,
            {
              direction: "column",
              gap: "xs",
              align: "center",
              className: "dataviews-view-picker-activity__item-type",
              children: renderedMediaField
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime301.jsxs)(
            Stack,
            {
              direction: "column",
              gap: verticalGap,
              align: "flex-start",
              className: "dataviews-view-picker-activity__item-content",
              children: [
                renderedTitleField && /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("div", { className: "dataviews-view-picker-activity__item-title", children: renderedTitleField }),
                renderedDescriptionField && /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("div", { className: "dataviews-view-picker-activity__item-description", children: renderedDescriptionField }),
                /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("div", { className: "dataviews-view-picker-activity__item-fields", children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime301.jsxs)(
                  "div",
                  {
                    className: "dataviews-view-picker-activity__item-field",
                    children: [
                      /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(
                        VisuallyHidden,
                        {
                          render: /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("span", {}),
                          className: "dataviews-view-picker-activity__item-field-label",
                          children: field.label
                        }
                      ),
                      /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("span", { className: "dataviews-view-picker-activity__item-field-value", children: /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(
                        field.render,
                        {
                          item,
                          field
                        }
                      ) })
                    ]
                  },
                  field.id
                )) })
              ]
            }
          )
        ] })
      }
    );
  }
  function PickerActivityGroup({
    groupName,
    groupField,
    showLabel = true,
    children
  }) {
    const headerId = (0, import_compose19.useInstanceId)(
      PickerActivityGroup,
      "dataviews-view-picker-activity-group__header"
    );
    return /* @__PURE__ */ (0, import_jsx_runtime301.jsxs)(
      Stack,
      {
        direction: "column",
        role: "group",
        "aria-labelledby": headerId,
        className: "dataviews-view-picker-activity-group",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(
            "h3",
            {
              className: "dataviews-view-picker-activity-group__header",
              id: headerId,
              children: showLabel ? (0, import_i18n109.sprintf)(
                // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
                (0, import_i18n109.__)("%1$s: %2$s"),
                groupField.label,
                groupName
              ) : groupName
            }
          ),
          children
        ]
      }
    );
  }
  function ViewPickerActivity({
    data,
    fields: fields2,
    getItemId: getItemId3,
    isLoading,
    onChangeSelection,
    selection,
    view,
    actions: actions2,
    className,
    empty
  }) {
    const { itemListLabel, paginationInfo } = (0, import_element171.useContext)(dataviews_context_default);
    const isMultiselect = useIsMultiselectPicker(actions2);
    const titleField2 = fields2.find(
      (field) => field.id === view?.titleField
    );
    const mediaField = fields2.find(
      (field) => field.id === view?.mediaField
    );
    const descriptionField3 = fields2.find(
      (field) => field.id === view?.descriptionField
    );
    const otherFields = (view?.fields ?? []).map((fieldId) => fields2.find((f2) => fieldId === f2.id)).filter(isDefined4);
    const groupField = view.groupBy?.field ? fields2.find((f2) => f2.id === view.groupBy?.field) : null;
    const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
    const isInfiniteScroll = (view.infiniteScrollEnabled && !dataByGroup) ?? false;
    const setsize = isInfiniteScroll ? paginationInfo?.totalItems : void 0;
    const hasData = !!data?.length;
    const isGrouped = !!(groupField && dataByGroup);
    const orderedData = dataByGroup ? Array.from(dataByGroup.values()).flat() : data;
    const { getSelectionProps } = useSelectionProps({
      data: orderedData,
      getItemId: getItemId3,
      isItemSelectable: () => true,
      selection,
      onChangeSelection,
      selectionMode: isMultiselect ? "multi" : "single-clearable",
      shouldSelectOnClick: true
    });
    const renderItem = (item) => /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(
      PickerActivityItem,
      {
        view,
        selection,
        selectionProps: getSelectionProps(getItemId3(item)),
        getItemId: getItemId3,
        item,
        titleField: titleField2,
        mediaField,
        descriptionField: descriptionField3,
        otherFields,
        posinset: item.position,
        setsize
      },
      getItemId3(item)
    );
    if (!hasData) {
      return /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(
        "div",
        {
          className: clsx_default({
            "dataviews-loading": isLoading,
            "dataviews-no-results": !isLoading
          }),
          children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(import_components40.Spinner, {}) }) : empty
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime301.jsxs)(import_jsx_runtime301.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(
        import_components40.Composite,
        {
          virtualFocus: true,
          orientation: "vertical",
          role: "listbox",
          "aria-multiselectable": isMultiselect,
          "aria-label": itemListLabel,
          "aria-busy": isLoading,
          render: isGrouped ? /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(Stack, { direction: "column", gap: "sm" }) : void 0,
          className: clsx_default(
            "dataviews-view-picker-activity",
            className
          ),
          children: isGrouped && dataByGroup ? Array.from(dataByGroup.entries()).map(
            ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(
              PickerActivityGroup,
              {
                groupName,
                groupField,
                showLabel: view.groupBy?.showLabel !== false,
                children: groupItems.map(renderItem)
              },
              groupName
            )
          ) : data.map(renderItem)
        }
      ),
      isLoading && /* @__PURE__ */ (0, import_jsx_runtime301.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(import_components40.Spinner, {}) })
    ] });
  }

  // packages/dataviews/build-module/components/dataviews-layouts/utils/density-picker.mjs
  var import_components41 = __toESM(require_components(), 1);
  var import_i18n110 = __toESM(require_i18n(), 1);
  var import_element172 = __toESM(require_element(), 1);
  var import_jsx_runtime302 = __toESM(require_jsx_runtime(), 1);
  function DensityPicker() {
    const context = (0, import_element172.useContext)(dataviews_context_default);
    const view = context.view;
    return /* @__PURE__ */ (0, import_jsx_runtime302.jsxs)(
      import_components41.__experimentalToggleGroupControl,
      {
        label: (0, import_i18n110.__)("Density"),
        value: view.layout?.density || "balanced",
        onChange: (value) => {
          context.onChangeView({
            ...view,
            layout: {
              ...view.layout,
              density: value
            }
          });
        },
        isBlock: true,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(
            import_components41.__experimentalToggleGroupControlOption,
            {
              value: "comfortable",
              label: (0, import_i18n110._x)(
                "Comfortable",
                "Density option for DataView layout"
              )
            },
            "comfortable"
          ),
          /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(
            import_components41.__experimentalToggleGroupControlOption,
            {
              value: "balanced",
              label: (0, import_i18n110._x)("Balanced", "Density option for DataView layout")
            },
            "balanced"
          ),
          /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(
            import_components41.__experimentalToggleGroupControlOption,
            {
              value: "compact",
              label: (0, import_i18n110._x)("Compact", "Density option for DataView layout")
            },
            "compact"
          )
        ]
      }
    );
  }

  // packages/dataviews/build-module/components/dataviews-layouts/utils/media-fit-control.mjs
  var import_components42 = __toESM(require_components(), 1);
  var import_i18n111 = __toESM(require_i18n(), 1);
  var import_element173 = __toESM(require_element(), 1);
  var import_jsx_runtime303 = __toESM(require_jsx_runtime(), 1);
  function MediaFitControl() {
    const context = (0, import_element173.useContext)(dataviews_context_default);
    const view = context.view;
    if (!context.config?.mediaFitControl) {
      return null;
    }
    const hasMediaField = view.showMedia !== false && context.fields.some((field) => field.id === view.mediaField);
    if (!hasMediaField) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime303.jsx)(
      import_components42.ToggleControl,
      {
        label: (0, import_i18n111.__)("Original aspect ratio"),
        checked: view.layout?.mediaFit === "contain",
        onChange: (isChecked) => {
          context.onChangeView({
            ...view,
            layout: {
              ...view.layout,
              mediaFit: isChecked ? "contain" : "cover"
            }
          });
        }
      }
    );
  }

  // packages/dataviews/build-module/components/dataviews-layouts/utils/preview-size-picker.mjs
  var import_components43 = __toESM(require_components(), 1);
  var import_i18n112 = __toESM(require_i18n(), 1);
  var import_element174 = __toESM(require_element(), 1);
  var import_jsx_runtime304 = __toESM(require_jsx_runtime(), 1);
  var imageSizes2 = [
    {
      value: 120,
      breakpoint: 1
    },
    {
      value: 170,
      breakpoint: 1
    },
    {
      value: 230,
      breakpoint: 1
    },
    {
      value: 290,
      breakpoint: 1112
      // at minimum image width, 4 images display at this container size
    },
    {
      value: 350,
      breakpoint: 1636
      // at minimum image width, 6 images display at this container size
    },
    {
      value: 430,
      breakpoint: 588
      // at minimum image width, 2 images display at this container size
    }
  ];
  function PreviewSizePicker() {
    const context = (0, import_element174.useContext)(dataviews_context_default);
    const view = context.view;
    const breakValues = imageSizes2.filter((size4) => {
      return context.containerWidth >= size4.breakpoint;
    });
    const layoutPreviewSize = view.layout?.previewSize ?? 230;
    const previewSizeToUse = breakValues.map((size4, index3) => ({ ...size4, index: index3 })).filter((size4) => size4.value <= layoutPreviewSize).sort((a2, b2) => b2.value - a2.value)[0]?.index ?? 0;
    const marks = breakValues.map((size4, index3) => {
      return {
        value: index3
      };
    });
    return /* @__PURE__ */ (0, import_jsx_runtime304.jsx)(
      import_components43.RangeControl,
      {
        showTooltip: false,
        label: (0, import_i18n112.__)("Preview size"),
        value: previewSizeToUse,
        min: 0,
        max: breakValues.length - 1,
        withInputField: false,
        onChange: (value = 0) => {
          context.onChangeView({
            ...view,
            layout: {
              ...view.layout,
              previewSize: breakValues[value].value
            }
          });
        },
        step: 1,
        marks
      }
    );
  }

  // packages/dataviews/build-module/components/dataviews-layouts/utils/grid-config-options.mjs
  var import_jsx_runtime305 = __toESM(require_jsx_runtime(), 1);
  function GridConfigOptions() {
    return /* @__PURE__ */ (0, import_jsx_runtime305.jsxs)(import_jsx_runtime305.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(DensityPicker, {}),
      /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(MediaFitControl, {}),
      /* @__PURE__ */ (0, import_jsx_runtime305.jsx)(PreviewSizePicker, {})
    ] });
  }

  // packages/dataviews/build-module/components/dataviews-layouts/index.mjs
  var VIEW_LAYOUTS = [
    {
      type: LAYOUT_TABLE,
      label: (0, import_i18n113.__)("Table"),
      component: table_default,
      icon: block_table_default,
      viewConfigOptions: DensityPicker
    },
    {
      type: LAYOUT_GRID,
      label: (0, import_i18n113.__)("Grid"),
      component: grid_default,
      icon: category_default,
      viewConfigOptions: GridConfigOptions
    },
    {
      type: LAYOUT_LIST,
      label: (0, import_i18n113.__)("List"),
      component: ViewList,
      icon: (0, import_i18n113.isRTL)() ? format_list_bullets_rtl_default : format_list_bullets_default,
      viewConfigOptions: DensityPicker
    },
    {
      type: LAYOUT_ACTIVITY,
      label: (0, import_i18n113.__)("Activity"),
      component: ViewActivity,
      icon: scheduled_default,
      viewConfigOptions: DensityPicker
    },
    {
      type: LAYOUT_PICKER_GRID,
      label: (0, import_i18n113.__)("Grid"),
      component: picker_grid_default,
      icon: category_default,
      viewConfigOptions: GridConfigOptions,
      isPicker: true
    },
    {
      type: LAYOUT_PICKER_TABLE,
      label: (0, import_i18n113.__)("Table"),
      component: picker_table_default,
      icon: block_table_default,
      viewConfigOptions: DensityPicker,
      isPicker: true
    },
    {
      type: LAYOUT_PICKER_ACTIVITY,
      label: (0, import_i18n113.__)("Activity"),
      component: ViewPickerActivity,
      icon: scheduled_default,
      viewConfigOptions: DensityPicker,
      isPicker: true
    }
  ];

  // packages/dataviews/build-module/components/dataviews-filters/filters.mjs
  var import_element182 = __toESM(require_element(), 1);

  // packages/dataviews/build-module/components/dataviews-filters/filter.mjs
  var import_components46 = __toESM(require_components(), 1);
  var import_i18n116 = __toESM(require_i18n(), 1);
  var import_element179 = __toESM(require_element(), 1);

  // node_modules/@ariakit/react-components/dist/button/utils.js
  function withDefaultButtonType(props) {
    const { render: render5, type } = props;
    if (render5 || type !== void 0) return props;
    return {
      ...props,
      type: "button"
    };
  }

  // node_modules/@ariakit/react-components/dist/focusable/focusable-context.js
  var import_react59 = __toESM(require_react(), 1);
  var FocusableContext = (0, import_react59.createContext)(true);

  // node_modules/@ariakit/utils/dist/index.js
  function toArray2(arg) {
    if (Array.isArray(arg)) return arg;
    return typeof arg !== "undefined" ? [arg] : [];
  }
  function flatten2DArray(array) {
    const flattened = [];
    for (const row of array) flattened.push(...row);
    return flattened;
  }
  function reverseArray(array) {
    return array.slice().reverse();
  }
  function noop5(..._) {
  }
  function applyState(argument, currentValue) {
    if (isUpdater(argument)) return argument(isLazyValue(currentValue) ? currentValue() : currentValue);
    return argument;
  }
  function isUpdater(argument) {
    return typeof argument === "function";
  }
  function isLazyValue(value) {
    return typeof value === "function";
  }
  function hasOwnProperty(object, prop) {
    if (typeof Object.hasOwn === "function") return Object.hasOwn(object, prop);
    return Object.prototype.hasOwnProperty.call(object, prop);
  }
  function chain(...fns) {
    return (...args) => {
      for (const fn of fns) if (typeof fn === "function") fn(...args);
    };
  }
  function normalizeString(str3) {
    return str3.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
  }
  function omit(object, keys) {
    const result = { ...object };
    for (const key of keys) if (hasOwnProperty(result, key)) delete result[key];
    return result;
  }
  function pick(object, paths) {
    const result = {};
    for (const key of paths) if (hasOwnProperty(object, key)) result[key] = object[key];
    return result;
  }
  function identity(value) {
    return value;
  }
  function afterPaint(cb = noop5) {
    let raf2 = requestAnimationFrame(() => {
      raf2 = requestAnimationFrame(cb);
    });
    return () => cancelAnimationFrame(raf2);
  }
  var defaultWarnOnceKey = {};
  var warningMessages = /* @__PURE__ */ new WeakMap();
  function warnOnce(message2, key) {
    const warningKey = key || defaultWarnOnceKey;
    let messages = warningMessages.get(warningKey);
    if (!messages) {
      messages = /* @__PURE__ */ new Set();
      warningMessages.set(warningKey, messages);
    }
    if (messages.has(message2)) return;
    messages.add(message2);
    console.warn(message2);
  }
  function invariant(condition, message2) {
    if (condition) return;
    if (typeof message2 !== "string") throw new Error("Invariant failed");
    throw new Error(message2);
  }
  function getKeys(obj) {
    return Object.keys(obj);
  }
  function isFalsyBooleanCallback(booleanOrCallback, ...args) {
    const result = typeof booleanOrCallback === "function" ? booleanOrCallback(...args) : booleanOrCallback;
    if (result == null) return false;
    return !result;
  }
  function disabledFromProps(props) {
    return props.disabled || props["aria-disabled"] === true || props["aria-disabled"] === "true";
  }
  function removeUndefinedValues(obj) {
    const result = {};
    for (const key in obj) {
      if (!hasOwnProperty(obj, key)) continue;
      if (key === "__proto__") continue;
      if (obj[key] !== void 0) result[key] = obj[key];
    }
    return result;
  }
  function defaultValue(...values) {
    for (const value of values) if (value !== void 0) return value;
  }
  var canUseDOM = checkIsBrowser();
  function checkIsBrowser() {
    return typeof window !== "undefined" && !!window.document?.createElement;
  }
  function lookupGetter(prototype, name2) {
    let target = prototype;
    while (target) {
      const descriptor = Object.getOwnPropertyDescriptor(target, name2);
      if (descriptor?.get) return descriptor.get;
      target = Object.getPrototypeOf(target);
    }
  }
  var nodeTypeGetter = canUseDOM ? lookupGetter(Object.getPrototypeOf(window.document), "nodeType") : void 0;
  var activeElementGetter = canUseDOM ? lookupGetter(Object.getPrototypeOf(window.document), "activeElement") : void 0;
  function isWindow(value) {
    if (!value) return false;
    return value.window === value;
  }
  function isDocument(value) {
    if (!value) return false;
    if (!nodeTypeGetter) return value.nodeType === 9;
    try {
      return nodeTypeGetter.call(value) === 9;
    } catch {
      return false;
    }
  }
  function ownsDocument(view, ownerDocument2) {
    try {
      return view.document === ownerDocument2;
    } catch {
      return false;
    }
  }
  function getDocument(node) {
    if (!node) return document;
    if (isDocument(node)) return node;
    if (isWindow(node)) return node.document;
    const nodeDocument = node.ownerDocument;
    if (isDocument(nodeDocument)) return nodeDocument;
    return document;
  }
  function getWindow2(node) {
    if (!node) return self;
    if (isWindow(node)) return node;
    const nodeDocument = getDocument(node);
    const { defaultView } = nodeDocument;
    if (isWindow(defaultView) && ownsDocument(defaultView, nodeDocument)) return defaultView;
    return window;
  }
  function getActiveElement(node, { frame = true, activeDescendant = false } = {}) {
    const ownerDocument2 = getDocument(node);
    const activeElement2 = activeElementGetter ? activeElementGetter.call(ownerDocument2) : ownerDocument2.activeElement;
    if (!activeElement2?.nodeName) return null;
    if (frame && isFrame(activeElement2) && activeElement2.contentDocument?.body) return getActiveElement(activeElement2.contentDocument.body, {
      frame,
      activeDescendant
    });
    if (activeDescendant) {
      const id = activeElement2.getAttribute("aria-activedescendant");
      if (id) {
        const element = getDocument(activeElement2).getElementById(id);
        if (element) return element;
      }
    }
    return activeElement2;
  }
  function contains2(parent, child) {
    return parent === child || parent.contains(child);
  }
  function isElement2(target) {
    return target?.nodeType === 1;
  }
  function isNode2(target) {
    return typeof target?.nodeType === "number";
  }
  function isFrame(element) {
    return element.tagName === "IFRAME";
  }
  function isButton(element) {
    const tagName = element.tagName.toLowerCase();
    if (tagName === "button") return true;
    if (tagName === "input" && element.type) return buttonInputTypes.indexOf(element.type) !== -1;
    return false;
  }
  var buttonInputTypes = [
    "button",
    "color",
    "file",
    "image",
    "reset",
    "submit"
  ];
  function isVisible(element) {
    if (typeof element.checkVisibility === "function") return element.checkVisibility();
    const htmlElement = element;
    return htmlElement.offsetWidth > 0 || htmlElement.offsetHeight > 0 || element.getClientRects().length > 0;
  }
  function isTextField(element) {
    try {
      if (element.tagName === "TEXTAREA") return true;
      if (element.tagName !== "INPUT") return false;
      return element.selectionStart !== null;
    } catch (_error) {
      return false;
    }
  }
  function isTextbox(element) {
    return element.isContentEditable || isTextField(element);
  }
  function getTextboxValue(element) {
    if (isTextField(element)) return element.value;
    if (element.isContentEditable) {
      const range = getDocument(element).createRange();
      range.selectNodeContents(element);
      return range.toString();
    }
    return "";
  }
  function getTextboxSelection(element) {
    let start2 = 0;
    let end = 0;
    if (isTextField(element)) {
      start2 = element.selectionStart || 0;
      end = element.selectionEnd || 0;
    } else if (element.isContentEditable) {
      const selection = getDocument(element).getSelection();
      if (selection?.rangeCount && selection.anchorNode && contains2(element, selection.anchorNode) && selection.focusNode && contains2(element, selection.focusNode)) {
        const range = selection.getRangeAt(0);
        const nextRange = range.cloneRange();
        nextRange.selectNodeContents(element);
        nextRange.setEnd(range.startContainer, range.startOffset);
        start2 = nextRange.toString().length;
        nextRange.setEnd(range.endContainer, range.endOffset);
        end = nextRange.toString().length;
      }
    }
    return {
      start: start2,
      end
    };
  }
  var allowedPopupRoles = [
    "dialog",
    "menu",
    "listbox",
    "tree",
    "grid"
  ];
  var itemRoleByPopupRole = {
    menu: "menuitem",
    listbox: "option",
    tree: "treeitem"
  };
  function getPopupRole(element, fallback) {
    const role = element?.getAttribute("role");
    if (role && allowedPopupRoles.indexOf(role) !== -1) return role;
    return fallback;
  }
  function getItemRoleByPopupRole(popupRole) {
    if (popupRole == null) return;
    if (!hasOwnProperty(itemRoleByPopupRole, popupRole)) return;
    return itemRoleByPopupRole[popupRole];
  }
  function getScrollingElement(element) {
    if (!element) return null;
    const isScrollableOverflow = (overflow) => {
      if (overflow === "auto") return true;
      if (overflow === "scroll") return true;
      return false;
    };
    if (element.clientHeight && element.scrollHeight > element.clientHeight) {
      const { overflowY } = getComputedStyle(element);
      if (isScrollableOverflow(overflowY)) return element;
    } else if (element.clientWidth && element.scrollWidth > element.clientWidth) {
      const { overflowX } = getComputedStyle(element);
      if (isScrollableOverflow(overflowX)) return element;
    }
    const doc = getDocument(element);
    return getScrollingElement(element.parentElement) || doc.scrollingElement || doc.body;
  }
  function setSelectionRange(element, ...args) {
    if (/text|search|password|tel|url/i.test(element.type)) element.setSelectionRange(...args);
  }
  function sortBasedOnDOMPosition(items, getElement) {
    const pairs = items.map((item, index3) => [index3, item]);
    let isOrderDifferent = false;
    pairs.sort(([indexA, a2], [indexB, b2]) => {
      const elementA = getElement(a2);
      const elementB = getElement(b2);
      if (elementA === elementB) return 0;
      if (!elementA || !elementB) return 0;
      if (isElementPreceding(elementA, elementB)) {
        if (indexA > indexB) isOrderDifferent = true;
        return -1;
      }
      if (indexA < indexB) isOrderDifferent = true;
      return 1;
    });
    if (isOrderDifferent) return pairs.map(([_, item]) => item);
    return items;
  }
  function isElementPreceding(a2, b2) {
    return Boolean(b2.compareDocumentPosition(a2) & Node.DOCUMENT_POSITION_PRECEDING);
  }
  function isTouchDevice() {
    return canUseDOM && !!navigator.maxTouchPoints;
  }
  function isApple() {
    if (!canUseDOM) return false;
    return /mac|iphone|ipad|ipod/i.test(navigator.platform);
  }
  function isSafari() {
    return canUseDOM && isApple() && /apple/i.test(navigator.vendor);
  }
  function isFirefox() {
    return canUseDOM && /firefox\//i.test(navigator.userAgent);
  }
  function isPortalEvent(event) {
    const { currentTarget, target } = event;
    if (!currentTarget) return false;
    if (!isNode2(target)) return true;
    return !contains2(currentTarget, target);
  }
  function isSelfTarget(event) {
    return event.target === event.currentTarget;
  }
  function isActivatableNavigationTarget(element) {
    if (!isElement2(element)) return false;
    const target = element;
    const tagName = target.tagName.toLowerCase();
    if (tagName === "a") return true;
    if (tagName === "button" && target.type === "submit") return true;
    if (tagName === "input" && target.type === "submit") return true;
    return false;
  }
  function isOpeningInNewTab(event) {
    const isAppleDevice = isApple();
    if (isAppleDevice && !event.metaKey) return false;
    if (!isAppleDevice && !event.ctrlKey) return false;
    return isActivatableNavigationTarget(event.currentTarget);
  }
  function isDownloading(event) {
    if (!event.altKey) return false;
    return isActivatableNavigationTarget(event.currentTarget);
  }
  function fireBlurEvent(element, eventInit) {
    const { FocusEvent } = getWindow2(element);
    const event = new FocusEvent("blur", eventInit);
    const defaultAllowed = element.dispatchEvent(event);
    const bubbleInit = {
      ...eventInit,
      bubbles: true
    };
    element.dispatchEvent(new FocusEvent("focusout", bubbleInit));
    return defaultAllowed;
  }
  function fireKeyboardEvent(element, type, eventInit) {
    const { KeyboardEvent } = getWindow2(element);
    const event = new KeyboardEvent(type, eventInit);
    return element.dispatchEvent(event);
  }
  var resetAttributes = {
    width: true,
    height: true,
    pressure: true,
    tangentialPressure: true,
    tiltX: true,
    tiltY: true,
    twist: true,
    altitudeAngle: true,
    azimuthAngle: true,
    isPrimary: true,
    coalescedEvents: true,
    predictedEvents: true,
    persistentDeviceId: true
  };
  function getClickEventInit(view, eventInit) {
    const init2 = eventInit ?? {};
    return new Proxy({}, { get(_target, key) {
      if (key === "view") return view;
      if (key === "composed") return true;
      if (key === "pointerId") return init2.pointerId ?? -1;
      if (key === "pointerType") return init2.pointerType ?? "";
      if (hasOwnProperty(resetAttributes, key)) return void 0;
      return Reflect.get(init2, key);
    } });
  }
  function fireClickEvent(element, eventInit) {
    const view = getWindow2(element);
    const event = new (view.PointerEvent ?? view.MouseEvent)("click", getClickEventInit(view, eventInit));
    return element.dispatchEvent(event);
  }
  function isFocusEventOutside(event, container) {
    const containerElement = container || event.currentTarget;
    const relatedTarget = event.relatedTarget;
    return !isNode2(relatedTarget) || !contains2(containerElement, relatedTarget);
  }
  function isInputEvent(event) {
    return event.type === "input";
  }
  function queueBeforeEvent(element, type, callback, timeout) {
    const createTimer = (callback2) => {
      if (timeout) {
        const timerId2 = setTimeout(callback2, timeout);
        return () => clearTimeout(timerId2);
      }
      const timerId = requestAnimationFrame(callback2);
      return () => cancelAnimationFrame(timerId);
    };
    const cancelTimer = createTimer(() => {
      element.removeEventListener(type, callSync, true);
      callback();
    });
    const callSync = () => {
      cancelTimer();
      callback();
    };
    element.addEventListener(type, callSync, {
      once: true,
      capture: true
    });
    return () => {
      cancelTimer();
      element.removeEventListener(type, callSync, true);
    };
  }
  function addGlobalEventListener(type, listener, options, scope = window) {
    const children = [];
    try {
      scope.document.addEventListener(type, listener, options);
      for (const frame of Array.from(scope.frames)) children.push(addGlobalEventListener(type, listener, options, frame));
    } catch {
    }
    const removeEventListener = () => {
      try {
        scope.document.removeEventListener(type, listener, options);
      } catch {
      }
      for (const remove of children) remove();
    };
    return removeEventListener;
  }
  var selector = "input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";
  function isFocusable(element) {
    if (!element.matches(selector)) return false;
    if (!isVisible(element)) return false;
    if (element.closest("[inert]")) return false;
    return true;
  }
  function hasFocus(element) {
    const activeElement2 = getActiveElement(element);
    if (!activeElement2) return false;
    if (activeElement2 === element) return true;
    const activeDescendant = activeElement2.getAttribute("aria-activedescendant");
    if (!activeDescendant) return false;
    return activeDescendant === element.id;
  }
  function hasFocusWithin(element) {
    const activeElement2 = getActiveElement(element);
    if (!activeElement2) return false;
    if (contains2(element, activeElement2)) return true;
    const activeDescendant = activeElement2.getAttribute("aria-activedescendant");
    if (!activeDescendant) return false;
    if (!("id" in element)) return false;
    if (activeDescendant === element.id) return true;
    return !!element.querySelector(`#${CSS.escape(activeDescendant)}`);
  }
  function createUndoCallback(callback) {
    return async () => {
      const redo2 = await callback?.();
      return createUndoCallback(async () => {
        await redo2?.();
        return callback;
      });
    };
  }
  var UndoManager = createUndoManager();
  function createUndoManager({ limit = 100 } = {}) {
    const undoStack = [];
    let redoStack = [];
    let currentGroup = null;
    const canUndo = () => undoStack.length > 0;
    const canRedo = () => redoStack.length > 0;
    const undo2 = async () => {
      if (!canUndo()) return;
      currentGroup = null;
      redoStack.push(await undoStack.pop()?.());
    };
    const redo2 = async () => {
      if (!canRedo()) return;
      currentGroup = null;
      undoStack.push(await redoStack.pop()?.());
    };
    const execute = async (callback, group) => {
      if (!callback) return;
      const sameGroup = group === currentGroup;
      currentGroup = group ?? null;
      const nextIndex = sameGroup ? Math.max(0, undoStack.length - 1) : undoStack.length;
      const undoCallback = await callback();
      if (!undoCallback) return;
      redoStack = [];
      const currentUndo = undoStack[nextIndex];
      undoStack[nextIndex] = createUndoCallback(async () => {
        await undoCallback?.();
        const currentRedo = await currentUndo?.();
        return async () => {
          await currentRedo?.();
          await callback?.();
        };
      });
      while (undoStack.length > limit) undoStack.shift();
    };
    return {
      canUndo,
      canRedo,
      undo: undo2,
      redo: redo2,
      execute
    };
  }

  // node_modules/@ariakit/react-utils/dist/index.js
  var React206 = __toESM(require_react(), 1);
  var import_react60 = __toESM(require_react(), 1);
  var import_jsx_runtime306 = __toESM(require_jsx_runtime(), 1);
  function setRef(ref, value) {
    if (typeof ref === "function") {
      const cleanup = ref(value);
      if (typeof cleanup === "function") return cleanup;
    } else if (ref) ref.current = value;
  }
  function isValidElementWithRef(element) {
    if (!element) return false;
    if (!(0, import_react60.isValidElement)(element)) return false;
    if ("ref" in element.props) return true;
    if ("ref" in element) return true;
    return false;
  }
  function getRefProperty(element) {
    if (!isValidElementWithRef(element)) return null;
    return { ...element.props }.ref || element.ref;
  }
  function mergeProps2(base, overrides) {
    const props = { ...base };
    for (const key in overrides) {
      if (!hasOwnProperty(overrides, key)) continue;
      if (key === "__proto__") continue;
      if (key === "className") {
        const prop = "className";
        const baseClass = base[prop];
        const overrideClass = overrides[prop];
        if (baseClass && overrideClass) props[prop] = `${baseClass} ${overrideClass}`;
        else props[prop] = overrideClass || baseClass;
        continue;
      }
      if (key === "style") {
        const prop = "style";
        props[prop] = base[prop] ? {
          ...base[prop],
          ...overrides[prop]
        } : overrides[prop];
        continue;
      }
      const overrideValue = overrides[key];
      if (overrideValue === void 0) continue;
      if (key.startsWith("on")) {
        if (typeof overrideValue !== "function") continue;
        const baseValue = base[key];
        if (typeof baseValue === "function") {
          props[key] = (...args) => {
            overrideValue(...args);
            baseValue(...args);
          };
          continue;
        }
      }
      props[key] = overrideValue;
    }
    return props;
  }
  var _React = { ...React206 };
  var useReactId = _React.useId;
  var useReactDeferredValue = _React.useDeferredValue;
  var useEventUpdate = _React.useInsertionEffect ?? ((callback) => callback());
  var useSafeLayoutEffect = canUseDOM ? import_react60.useLayoutEffect : import_react60.useEffect;
  function useInitialValue(value) {
    const [initialValue] = (0, import_react60.useState)(value);
    return initialValue;
  }
  function useLiveRef(value) {
    const ref = (0, import_react60.useRef)(value);
    useSafeLayoutEffect(() => {
      ref.current = value;
    });
    return ref;
  }
  function useEvent3(callback) {
    const ref = (0, import_react60.useRef)(() => {
      throw new Error("Cannot call an event handler while rendering.");
    });
    useEventUpdate(() => {
      ref.current = callback;
    });
    return (0, import_react60.useCallback)((...args) => ref.current?.(...args), []);
  }
  function useTransactionState(callback) {
    const [state2, setState] = (0, import_react60.useState)(null);
    useSafeLayoutEffect(() => {
      if (state2 == null) return;
      if (!callback) return;
      let prevState = null;
      callback((prev) => {
        prevState = prev;
        return state2;
      });
      return () => {
        callback(prevState);
      };
    }, [state2, callback]);
    return [state2, setState];
  }
  function useMergeRefs6(...refs) {
    return (0, import_react60.useMemo)(() => {
      if (!refs.some(Boolean)) return;
      return (value) => {
        const refEffects = [];
        for (const ref of refs) {
          if (!ref) continue;
          const cleanup = setRef(ref, value);
          refEffects.push({
            ref,
            cleanup: typeof cleanup === "function" ? cleanup : void 0
          });
        }
        if (!refEffects.some((effect) => effect.cleanup)) return;
        return () => {
          for (const { ref, cleanup } of refEffects) if (cleanup) cleanup();
          else setRef(ref, null);
        };
      };
    }, refs);
  }
  function useIdPolyfill(defaultId) {
    const [id, setId] = (0, import_react60.useState)(defaultId);
    useSafeLayoutEffect(() => {
      if (defaultId || id) return;
      const random2 = Math.random().toString(36).slice(2, 8);
      setId(`id-${random2}`);
    }, [defaultId, id]);
    return defaultId || id;
  }
  function useReactIdWithDefault(defaultId) {
    const id = useReactId();
    return defaultId || id;
  }
  var useCompatibleId = useReactId ? useReactIdWithDefault : useIdPolyfill;
  function useId8(defaultId) {
    return useCompatibleId(defaultId);
  }
  function useAttribute(refOrElement, attributeName, defaultValue2) {
    const initialValue = useInitialValue(defaultValue2);
    const [attribute, setAttribute] = (0, import_react60.useState)(initialValue);
    (0, import_react60.useEffect)(() => {
      const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement;
      if (!element) return;
      const callback = () => {
        const value = element.getAttribute(attributeName);
        setAttribute(value == null ? initialValue : value);
      };
      const observer = new MutationObserver(callback);
      observer.observe(element, { attributeFilter: [attributeName] });
      callback();
      return () => observer.disconnect();
    }, [
      refOrElement,
      attributeName,
      initialValue
    ]);
    return attribute;
  }
  function useUpdateEffect(effect, deps) {
    const mounted = (0, import_react60.useRef)(false);
    (0, import_react60.useEffect)(() => {
      if (mounted.current) return effect();
      mounted.current = true;
    }, deps);
    (0, import_react60.useEffect)(() => () => {
      mounted.current = false;
    }, []);
  }
  function useUpdateLayoutEffect(effect, deps) {
    const mounted = (0, import_react60.useRef)(false);
    useSafeLayoutEffect(() => {
      if (mounted.current) return effect();
      mounted.current = true;
    }, deps);
    useSafeLayoutEffect(() => () => {
      mounted.current = false;
    }, []);
  }
  function useForceUpdate2() {
    return (0, import_react60.useReducer)(() => [], []);
  }
  function useBooleanEvent(booleanOrCallback) {
    return useEvent3(typeof booleanOrCallback === "function" ? booleanOrCallback : () => booleanOrCallback);
  }
  function useWrapElement(props, callback, deps = []) {
    const wrapElement = (0, import_react60.useCallback)((element) => {
      if (props.wrapElement) element = props.wrapElement(element);
      return callback(element);
    }, [...deps, props.wrapElement]);
    return {
      ...props,
      wrapElement
    };
  }
  function useMetadataProps(props, key, value) {
    const parent = props.onLoadedMetadataCapture;
    const onLoadedMetadataCapture = (0, import_react60.useMemo)(() => {
      return Object.assign(() => {
      }, parent, ...value !== void 0 ? [{ [key]: value }] : []);
    }, [
      parent,
      key,
      value
    ]);
    return [parent?.[key], { onLoadedMetadataCapture }];
  }
  var hasInstalledGlobalEventListeners = false;
  function useIsMouseMoving() {
    (0, import_react60.useEffect)(() => {
      if (hasInstalledGlobalEventListeners) return;
      addGlobalEventListener("mousemove", setMouseMoving, true);
      addGlobalEventListener("mousedown", resetMouseMoving, true);
      addGlobalEventListener("mouseup", resetMouseMoving, true);
      addGlobalEventListener("keydown", resetMouseMoving, true);
      addGlobalEventListener("scroll", resetMouseMoving, true);
      hasInstalledGlobalEventListeners = true;
    }, []);
    return useEvent3(() => mouseMoving);
  }
  var mouseMoving = false;
  var previousScreenX = 0;
  var previousScreenY = 0;
  function hasMouseMovement(event) {
    const movementX = event.movementX || event.screenX - previousScreenX;
    const movementY = event.movementY || event.screenY - previousScreenY;
    previousScreenX = event.screenX;
    previousScreenY = event.screenY;
    return movementX || movementY || false;
  }
  function setMouseMoving(event) {
    if (!hasMouseMovement(event)) return;
    mouseMoving = true;
  }
  function resetMouseMoving() {
    mouseMoving = false;
  }
  function forwardRef165(render5) {
    const Role = React206.forwardRef((props, ref) => render5(removeUndefinedValues({
      ...props,
      ref
    })));
    Role.displayName = render5.displayName || render5.name;
    return Role;
  }
  function memo7(Component3, propsAreEqual) {
    return React206.memo(Component3, propsAreEqual);
  }
  function createElement5(Type, props) {
    const { wrapElement, render: render5, ...rest } = props;
    const mergedRef = useMergeRefs6(props.ref, getRefProperty(render5));
    let element;
    if (React206.isValidElement(render5)) {
      const renderProps = {
        ...render5.props,
        ref: mergedRef
      };
      element = React206.cloneElement(render5, mergeProps2(rest, renderProps));
    } else if (render5) element = render5(rest);
    else element = /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(Type, { ...rest });
    if (wrapElement) return wrapElement(element);
    return element;
  }
  function createHook(useProps) {
    const useRole = (props = {}) => {
      return useProps(props);
    };
    useRole.displayName = useProps.name;
    return useRole;
  }
  function createStoreContext(providers = [], scopedProviders = []) {
    const context = React206.createContext(void 0);
    const scopedContext = React206.createContext(void 0);
    const useContext103 = () => React206.useContext(context);
    const useScopedContext = (onlyScoped = false) => {
      const scoped = React206.useContext(scopedContext);
      const store4 = useContext103();
      if (onlyScoped) return scoped;
      return scoped || store4;
    };
    const useProviderContext = () => {
      const scoped = React206.useContext(scopedContext);
      const store4 = useContext103();
      if (scoped && scoped === store4) return;
      return store4;
    };
    const ContextProvider = (props) => {
      return providers.reduceRight((children, Provider2) => /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(Provider2, {
        ...props,
        children
      }), /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(context.Provider, { ...props }));
    };
    const ScopedContextProvider = (props) => {
      return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(ContextProvider, {
        ...props,
        children: scopedProviders.reduceRight((children, Provider2) => /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(Provider2, {
          ...props,
          children
        }), /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(scopedContext.Provider, { ...props }))
      });
    };
    return {
      context,
      scopedContext,
      useContext: useContext103,
      useScopedContext,
      useProviderContext,
      ContextProvider,
      ScopedContextProvider
    };
  }

  // node_modules/@ariakit/react-components/dist/__chunks/CcVRFmzE.js
  var import_react61 = __toESM(require_react(), 1);
  var accessibleWhenDisabledSymbol = /* @__PURE__ */ Symbol("accessibleWhenDisabled");
  function accessibleWhenDisabledFromProps(props) {
    return props.accessibleWhenDisabled ?? props.onLoadedMetadataCapture?.[accessibleWhenDisabledSymbol];
  }
  var trulyDisabledAttribute = "data-truly-disabled";
  function resolvedTrulyDisabledFromElement(element) {
    const value = element.getAttribute(trulyDisabledAttribute);
    if (value === "true") return true;
    if (value === "false") return false;
  }
  function isCompositeMoveKey(key) {
    return key === "ArrowUp" || key === "ArrowRight" || key === "ArrowDown" || key === "ArrowLeft" || key === "Home" || key === "End" || key === "PageUp" || key === "PageDown";
  }
  var TagName = "div";
  var isSafariBrowser = isSafari();
  var nativeTabbableMask = 1;
  var supportsDisabledMask = 2;
  var defaultElementCapabilities = 3;
  var alwaysFocusVisibleInputTypes = [
    "text",
    "search",
    "url",
    "tel",
    "email",
    "password",
    "number",
    "date",
    "month",
    "week",
    "time",
    "datetime",
    "datetime-local"
  ];
  function isAlwaysFocusVisible(element) {
    const { tagName, readOnly, type } = element;
    if (tagName === "TEXTAREA" && !readOnly) return true;
    if (tagName === "SELECT" && !readOnly) return true;
    if (tagName === "INPUT" && !readOnly) return alwaysFocusVisibleInputTypes.includes(type);
    if (element.isContentEditable) return true;
    if (element.getAttribute("role") === "combobox" && element.dataset.name) return true;
    return false;
  }
  function isNativeTabbable(tagName) {
    if (!tagName) return true;
    return tagName === "button" || tagName === "summary" || tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "a";
  }
  function supportsDisabledAttribute(tagName) {
    if (!tagName) return true;
    return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea";
  }
  function getElementCapabilities(tagName) {
    let capabilities = 0;
    if (isNativeTabbable(tagName)) capabilities |= nativeTabbableMask;
    if (supportsDisabledAttribute(tagName)) capabilities |= supportsDisabledMask;
    return capabilities;
  }
  function isNativeSubmitControl(element) {
    if (element.tagName === "BUTTON") {
      const { type } = element;
      return type === "submit";
    }
    if (element.tagName === "INPUT") {
      const { type } = element;
      return type === "submit" || type === "image";
    }
    return false;
  }
  function getTabIndex2({ focusable: focusable2, trulyDisabled, nativeTabbable, supportsDisabled, safariTabIndex, tabIndexProp }) {
    if (!focusable2) return tabIndexProp;
    if (trulyDisabled) {
      if (nativeTabbable && !supportsDisabled) return -1;
      return;
    }
    if (nativeTabbable) {
      if (safariTabIndex && tabIndexProp == null) return 0;
      return tabIndexProp;
    }
    return tabIndexProp ?? 0;
  }
  function useDisableEvent(onEvent, disabled2) {
    return useEvent3((event) => {
      onEvent?.(event);
      if (event.defaultPrevented) return;
      if (disabled2) {
        event.stopPropagation();
        event.preventDefault();
      }
    });
  }
  var hasInstalledGlobalEventListeners2 = false;
  var isKeyboardModality = true;
  function onGlobalMouseDown(event) {
    const target = event.target;
    if (isElement2(target) && !target.hasAttribute("data-focus-visible")) isKeyboardModality = false;
  }
  function onGlobalKeyDown(event) {
    if (isCompositeMoveKey(event.key)) {
      isKeyboardModality = true;
      return;
    }
    if (event.metaKey) return;
    if (event.ctrlKey) return;
    if (event.altKey) {
      if (!isSafariBrowser) return;
      if (event.key !== "Tab") return;
    }
    isKeyboardModality = true;
  }
  var useFocusable = createHook(function useFocusable2({ focusable: focusable2 = true, accessibleWhenDisabled, autoFocus, onFocusVisible, ...props }) {
    const ref = (0, import_react61.useRef)(null);
    const [parentAccessibleWhenDisabled, metadataProps] = useMetadataProps(props, accessibleWhenDisabledSymbol, accessibleWhenDisabled);
    accessibleWhenDisabled ??= parentAccessibleWhenDisabled;
    (0, import_react61.useEffect)(() => {
      if (!focusable2) return;
      if (hasInstalledGlobalEventListeners2) return;
      addGlobalEventListener("mousedown", onGlobalMouseDown, true);
      addGlobalEventListener("keydown", onGlobalKeyDown, true);
      hasInstalledGlobalEventListeners2 = true;
    }, [focusable2]);
    const disabled2 = focusable2 && disabledFromProps(props);
    const trulyDisabled = disabled2 && !accessibleWhenDisabled;
    const [focusVisible, setFocusVisible] = (0, import_react61.useState)(false);
    const focusVisibleRef = (0, import_react61.useRef)(false);
    const nativeSubmitObserverCleanupRef = (0, import_react61.useRef)(null);
    const cleanupFocusVisible = useEvent3((element) => {
      nativeSubmitObserverCleanupRef.current?.();
      nativeSubmitObserverCleanupRef.current = null;
      focusVisibleRef.current = false;
      element?.removeAttribute("data-focus-visible");
    });
    (0, import_react61.useEffect)(() => {
      if (focusable2 && !trulyDisabled) return;
      cleanupFocusVisible(ref.current);
      if (focusVisible) setFocusVisible(false);
    }, [
      focusable2,
      trulyDisabled,
      focusVisible,
      cleanupFocusVisible
    ]);
    (0, import_react61.useEffect)(() => {
      if (!focusable2) return;
      if (!focusVisible) return;
      const element = ref.current;
      if (!element) return;
      if (typeof IntersectionObserver === "undefined") return;
      const observer = new IntersectionObserver(() => {
        if (!isFocusable(element)) {
          focusVisibleRef.current = false;
          setFocusVisible(false);
        }
      });
      observer.observe(element);
      return () => observer.disconnect();
    }, [focusable2, focusVisible]);
    (0, import_react61.useEffect)(() => {
      return () => nativeSubmitObserverCleanupRef.current?.();
    }, []);
    const onKeyPressCapture = useDisableEvent(props.onKeyPressCapture, disabled2);
    const onMouseDownCapture = useDisableEvent(props.onMouseDownCapture, disabled2);
    const onClickCapture = useDisableEvent(props.onClickCapture, disabled2);
    const onAuxClickCapture = useDisableEvent(props.onAuxClickCapture, disabled2);
    const handleFocusVisible = (event, currentTarget) => {
      if (currentTarget) event.currentTarget = currentTarget;
      if (!focusable2) return;
      const element = event.currentTarget;
      if (!element) return;
      if (!hasFocus(element)) return;
      onFocusVisible?.(event);
      if (event.defaultPrevented) return;
      element.dataset.focusVisible = "true";
      focusVisibleRef.current = true;
      if (isNativeSubmitControl(element)) {
        nativeSubmitObserverCleanupRef.current?.();
        nativeSubmitObserverCleanupRef.current = null;
        if (typeof IntersectionObserver !== "undefined") {
          const observer = new IntersectionObserver(() => {
            if (isFocusable(element)) return;
            cleanupFocusVisible(element);
          });
          observer.observe(element);
          nativeSubmitObserverCleanupRef.current = () => observer.disconnect();
        }
        return;
      }
      setFocusVisible(true);
    };
    const onKeyDownCaptureProp = props.onKeyDownCapture;
    const onKeyDownCapture = useEvent3((event) => {
      onKeyDownCaptureProp?.(event);
      if (event.defaultPrevented) return;
      if (!focusable2) return;
      if (focusVisible) return;
      if (focusVisibleRef.current) return;
      if ((event.metaKey || event.altKey || event.ctrlKey) && !isCompositeMoveKey(event.key)) return;
      if (!isSelfTarget(event)) return;
      const element = event.currentTarget;
      const applyFocusVisible = () => handleFocusVisible(event, element);
      queueBeforeEvent(element, "focusout", applyFocusVisible);
    });
    const onFocusCaptureProp = props.onFocusCapture;
    const onFocusCapture = useEvent3((event) => {
      onFocusCaptureProp?.(event);
      if (event.defaultPrevented) return;
      if (!focusable2) return;
      if (!isSelfTarget(event)) {
        setFocusVisible(false);
        return;
      }
      const element = event.currentTarget;
      const applyFocusVisible = () => handleFocusVisible(event, element);
      if (isKeyboardModality || isAlwaysFocusVisible(event.target)) queueBeforeEvent(event.target, "focusout", applyFocusVisible);
      else setFocusVisible(false);
    });
    const onBlurProp = props.onBlur;
    const onBlur = useEvent3((event) => {
      onBlurProp?.(event);
      if (!focusable2) return;
      if (!isFocusEventOutside(event)) return;
      cleanupFocusVisible(event.currentTarget);
      setFocusVisible(false);
    });
    const autoFocusOnShow = (0, import_react61.useContext)(FocusableContext);
    const autoFocusRef = useEvent3((element) => {
      if (!focusable2) return;
      if (!autoFocus) return;
      if (!element) return;
      if (!autoFocusOnShow) return;
      queueMicrotask(() => {
        if (hasFocus(element)) return;
        if (!isFocusable(element)) return;
        element.focus();
      });
    });
    const [elementCapabilities, setElementCapabilities] = (0, import_react61.useState)(defaultElementCapabilities);
    useSafeLayoutEffect(() => {
      const element = ref.current;
      if (!element) return;
      const nextCapabilities = getElementCapabilities(element.tagName.toLowerCase());
      if (nextCapabilities === defaultElementCapabilities) return;
      setElementCapabilities(nextCapabilities);
    }, []);
    const nativeTabbable = focusable2 && !!(elementCapabilities & nativeTabbableMask);
    const supportsDisabled = focusable2 && !!(elementCapabilities & supportsDisabledMask);
    const [safariTabIndex, setSafariTabIndex] = (0, import_react61.useState)(false);
    if (isSafariBrowser) (0, import_react61.useEffect)(() => {
      if (!focusable2) return;
      const element = ref.current;
      if (!element) return;
      const { type } = element;
      const isNativeCheckboxOrRadio = element.tagName === "INPUT" && (type === "checkbox" || type === "radio");
      setSafariTabIndex(isButton(element) || isNativeCheckboxOrRadio);
    }, [focusable2]);
    const styleProp = props.style;
    const style = (0, import_react61.useMemo)(() => {
      if (trulyDisabled) return {
        pointerEvents: "none",
        ...styleProp
      };
      return styleProp;
    }, [trulyDisabled, styleProp]);
    props = {
      "data-focus-visible": focusable2 && focusVisible || void 0,
      "data-autofocus": autoFocus || void 0,
      "aria-disabled": disabled2 || void 0,
      ...props,
      ...metadataProps,
      ref: useMergeRefs6(ref, autoFocusRef, props.ref),
      style,
      tabIndex: getTabIndex2({
        focusable: focusable2,
        trulyDisabled,
        nativeTabbable,
        supportsDisabled,
        safariTabIndex,
        tabIndexProp: props.tabIndex
      }),
      disabled: supportsDisabled && trulyDisabled ? true : void 0,
      [trulyDisabledAttribute]: disabled2 ? trulyDisabled : void 0,
      contentEditable: disabled2 ? void 0 : props.contentEditable,
      onKeyPressCapture,
      onClickCapture,
      onAuxClickCapture,
      onMouseDownCapture,
      onKeyDownCapture,
      onFocusCapture,
      onBlur
    };
    return removeUndefinedValues(props);
  });
  var Focusable = forwardRef165(function Focusable2(props) {
    const htmlProps = useFocusable(props);
    return createElement5(TagName, htmlProps);
  });

  // node_modules/@ariakit/react-components/dist/command/command.js
  var import_react62 = __toESM(require_react(), 1);
  var TagName2 = "button";
  function isNativeClick(event) {
    if (!event.isTrusted) return false;
    const element = event.currentTarget;
    if (event.key === "Enter") return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "A";
    if (event.key === " ") return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "INPUT" || element.tagName === "SELECT";
    return false;
  }
  var symbol = /* @__PURE__ */ Symbol("command");
  var useCommand = createHook(function useCommand2({ clickOnEnter = true, clickOnSpace = true, ...props }) {
    const ref = (0, import_react62.useRef)(null);
    const [isNativeButton, setIsNativeButton] = (0, import_react62.useState)(false);
    const type = props.type;
    (0, import_react62.useEffect)(() => {
      const element = ref.current;
      if (!element) return;
      const nativeButton = isButton(element);
      if (type !== void 0 && nativeButton && element.type === "button") return;
      setIsNativeButton(nativeButton);
    }, [type]);
    const [active, setActive] = (0, import_react62.useState)(false);
    const activeRef = (0, import_react62.useRef)(false);
    const disabled2 = disabledFromProps(props);
    const [isDuplicate, metadataProps] = useMetadataProps(props, symbol, true);
    useSafeLayoutEffect(() => {
      if (!disabled2) return;
      activeRef.current = false;
      setActive(false);
    }, [disabled2]);
    const onKeyDownProp = props.onKeyDown;
    const onKeyDown = useEvent3((event) => {
      onKeyDownProp?.(event);
      const element = event.currentTarget;
      if (event.defaultPrevented) return;
      if (isDuplicate) return;
      if (disabled2) return;
      if (!isSelfTarget(event)) return;
      if (isTextField(element)) return;
      if (element.isContentEditable) return;
      const isEnter = clickOnEnter && event.key === "Enter";
      const isSpace = clickOnSpace && event.key === " ";
      const shouldPreventEnter = event.key === "Enter" && !clickOnEnter;
      const shouldPreventSpace = event.key === " " && !clickOnSpace;
      if (shouldPreventEnter || shouldPreventSpace) {
        event.preventDefault();
        return;
      }
      if (isEnter || isSpace) {
        const nativeClick = isNativeClick(event);
        if (isEnter) {
          if (!nativeClick) {
            event.preventDefault();
            const { view, ...eventInit } = event;
            const click = () => fireClickEvent(element, eventInit);
            if (isFirefox()) queueBeforeEvent(element, "keyup", click);
            else queueMicrotask(click);
          }
        } else if (isSpace) {
          activeRef.current = true;
          if (!nativeClick) {
            event.preventDefault();
            setActive(true);
          }
        }
      }
    });
    const onKeyUpProp = props.onKeyUp;
    const onKeyUp = useEvent3((event) => {
      onKeyUpProp?.(event);
      if (isDuplicate) return;
      const isSpace = clickOnSpace && event.key === " ";
      if (!activeRef.current || !isSpace) return;
      const nativeClick = isNativeClick(event);
      activeRef.current = false;
      if (!nativeClick) setActive(false);
      if (event.defaultPrevented) return;
      if (!isSelfTarget(event)) return;
      if (disabled2) return;
      if (event.metaKey) return;
      if (nativeClick) return;
      event.preventDefault();
      const element = event.currentTarget;
      const { view, ...eventInit } = event;
      queueMicrotask(() => fireClickEvent(element, eventInit));
    });
    const onBlurProp = props.onBlur;
    const onBlur = useEvent3((event) => {
      onBlurProp?.(event);
      if (!activeRef.current) return;
      activeRef.current = false;
      setActive(false);
    });
    props = {
      "data-active": active || void 0,
      type: isNativeButton ? "button" : void 0,
      ...metadataProps,
      ...props,
      ref: useMergeRefs6(ref, props.ref),
      onKeyDown,
      onKeyUp,
      onBlur
    };
    props = useFocusable(props);
    return props;
  });
  var Command = forwardRef165(function Command2(props) {
    const htmlProps = useCommand(withDefaultButtonType(props));
    return createElement5(TagName2, htmlProps);
  });

  // node_modules/@ariakit/react-components/dist/collection/collection-context.js
  var ctx2 = createStoreContext();
  var useCollectionContext = ctx2.useContext;
  var useCollectionScopedContext = ctx2.useScopedContext;
  var useCollectionProviderContext = ctx2.useProviderContext;
  var CollectionContextProvider = ctx2.ContextProvider;
  var CollectionScopedContextProvider = ctx2.ScopedContextProvider;

  // node_modules/@ariakit/react-components/dist/collection/collection-item.js
  var import_react63 = __toESM(require_react(), 1);
  var TagName3 = "div";
  var useCollectionItem = createHook(function useCollectionItem2({ store: store4, shouldRegisterItem = true, getItem = identity, element, ...props }) {
    const context = useCollectionContext();
    store4 = store4 || context;
    const id = useId8(props.id);
    const ref = (0, import_react63.useRef)(element);
    (0, import_react63.useEffect)(() => {
      const element2 = ref.current;
      if (!id) return;
      if (!element2) return;
      if (!shouldRegisterItem) return;
      const item = getItem({
        id,
        element: element2
      });
      return store4?.renderItem(item);
    }, [
      id,
      shouldRegisterItem,
      getItem,
      store4
    ]);
    props = {
      ...props,
      ref: useMergeRefs6(ref, props.ref)
    };
    return props;
  });
  var CollectionItem = forwardRef165(function CollectionItem2(props) {
    const htmlProps = useCollectionItem(props);
    return createElement5(TagName3, htmlProps);
  });

  // node_modules/@ariakit/react-components/dist/composite/composite-context.js
  var import_react64 = __toESM(require_react(), 1);
  var ctx3 = createStoreContext([CollectionContextProvider], [CollectionScopedContextProvider]);
  var useCompositeContext = ctx3.useContext;
  var useCompositeScopedContext = ctx3.useScopedContext;
  var useCompositeProviderContext = ctx3.useProviderContext;
  var CompositeContextProvider = ctx3.ContextProvider;
  var CompositeScopedContextProvider = ctx3.ScopedContextProvider;
  var CompositeItemContext = (0, import_react64.createContext)(void 0);
  var CompositeRowContext = (0, import_react64.createContext)(void 0);

  // node_modules/@ariakit/react-components/dist/composite/utils.js
  var import_react65 = __toESM(require_react(), 1);

  // node_modules/@ariakit/store/dist/index.js
  function getInternal(store4, key) {
    const internals = store4.__unstableInternals;
    invariant(internals, "Invalid store");
    return internals[key];
  }
  function hasUpdatedKey(keys, updatedKey) {
    if (!keys) return true;
    for (const currentKey of keys) if (updatedKey instanceof Set) {
      if (updatedKey.has(currentKey)) return true;
    } else if (isSameValue(currentKey, updatedKey)) return true;
    return false;
  }
  function isSameValue(value, other) {
    return value === other || value !== value && other !== other;
  }
  function getCleanupPrevState(prevState, state2, stateBeforeCleanup, updatedKey) {
    let cleanupPrevState;
    for (const key of getKeys(state2)) {
      if (isSameValue(state2[key], stateBeforeCleanup[key])) continue;
      if (updatedKey !== void 0 && hasUpdatedKey([key], updatedKey)) continue;
      cleanupPrevState ??= { ...prevState };
      cleanupPrevState[key] = state2[key];
    }
    return cleanupPrevState;
  }
  var MAX_REPAIR_PASSES = 100;
  function addKeyedListener(map, keys, listener) {
    if (!keys) return;
    for (const key of keys) {
      let listeners2 = map.get(key);
      if (!listeners2) {
        listeners2 = /* @__PURE__ */ new Set();
        map.set(key, listeners2);
      }
      listeners2.add(listener);
    }
  }
  function deleteKeyedListener(map, keys, listener) {
    if (!map) return;
    if (!keys) return;
    for (const key of keys) {
      const listeners2 = map.get(key);
      if (!listeners2) continue;
      listeners2.delete(listener);
      if (!listeners2.size) map.delete(key);
    }
  }
  function getFastPathNotifiedListeners(frame) {
    const notifiedListeners = /* @__PURE__ */ new Set();
    const currentListener = frame.currentListener;
    if (!currentListener) return notifiedListeners;
    for (const listener of frame.keyedListeners) {
      notifiedListeners.add(listener);
      if (listener === currentListener) return notifiedListeners;
    }
    notifiedListeners.clear();
    notifiedListeners.add(currentListener);
    return notifiedListeners;
  }
  function preserveFastPathNotifiedListeners(frame) {
    frame.notifiedListeners ??= getFastPathNotifiedListeners(frame);
  }
  function hasFastPathPassedListener(frame, listener) {
    if (!frame.currentListener) return false;
    let foundCurrentKeyedListener = false;
    for (const currentListener of frame.keyedListeners) {
      if (currentListener === frame.currentListener) {
        foundCurrentKeyedListener = true;
        continue;
      }
      if (!foundCurrentKeyedListener) continue;
      if (currentListener === listener) return false;
    }
    let foundListener = false;
    for (const currentListener of frame.group.listeners) {
      if (currentListener === frame.currentListener) return foundListener;
      if (currentListener === listener) foundListener = true;
    }
    return false;
  }
  function preserveFastPathFrames(fastPathFrames, group, listener) {
    for (const frame of fastPathFrames) {
      if (frame.group !== group) continue;
      if (frame.recovering) continue;
      if (listener && !frame.keyedListeners.has(listener)) continue;
      preserveFastPathNotifiedListeners(frame);
      for (const currentListener of frame.group.listeners) {
        if (currentListener === frame.currentListener) break;
        if (!hasFastPathPassedListener(frame, currentListener)) continue;
        frame.notifiedListeners?.add(currentListener);
      }
    }
  }
  function preserveFastPathPassedListeners(fastPathFrames, group, listener) {
    for (const frame of fastPathFrames) {
      if (frame.group !== group) continue;
      if (frame.recovering) continue;
      if (!hasFastPathPassedListener(frame, listener)) continue;
      preserveFastPathNotifiedListeners(frame);
      frame.notifiedListeners?.add(listener);
    }
  }
  function preserveFastPathPassedKeyedListeners({ fastPathFrames, group, keys, listener }) {
    const wasRegistered = group.listeners.has(listener);
    for (const frame of fastPathFrames) {
      if (frame.group !== group) continue;
      if (frame.recovering) continue;
      if (!keys.includes(frame.updatedKey)) continue;
      if (hasFastPathPassedListener(frame, listener)) {
        preserveFastPathNotifiedListeners(frame);
        frame.notifiedListeners?.add(listener);
      } else if (wasRegistered) {
        preserveFastPathNotifiedListeners(frame);
        frame.recoverToLive = true;
      }
    }
  }
  function clearFastPathNotifiedListener(fastPathFrames, group, listener) {
    for (const frame of fastPathFrames) {
      if (frame.group !== group) continue;
      frame.notifiedListeners?.delete(listener);
    }
  }
  function addFastPathKeyedListener({ fastPathFrames, group, keys, listener }) {
    for (const frame of fastPathFrames) {
      if (frame.group !== group) continue;
      if (frame.recovering) continue;
      if (!keys.includes(frame.updatedKey)) continue;
      frame.keyedListeners.add(listener);
    }
  }
  function runPendingCleanup(group, listener) {
    if (!group.disposables.size) return;
    const cleanup = group.disposables.get(listener);
    if (!cleanup) return;
    group.disposables.delete(listener);
    cleanup();
  }
  function setListenerCleanup(group, listener, cleanup) {
    const currentCleanup = group.disposables.get(listener);
    if (!currentCleanup) {
      group.disposables.set(listener, cleanup);
      return;
    }
    group.disposables.set(listener, () => {
      currentCleanup();
      cleanup();
    });
  }
  function notifyStoreListener(group, listener, state2, prevState, getState2, updatedKey) {
    if (group.suspendCounts?.has(listener)) return;
    const { disposables } = group;
    const cleanup = disposables.size ? disposables.get(listener) : void 0;
    if (cleanup) {
      disposables.delete(listener);
      const stateBeforeCleanup = state2;
      cleanup();
      state2 = getState2?.() ?? state2;
      if (state2 !== stateBeforeCleanup) prevState = getCleanupPrevState(prevState, state2, stateBeforeCleanup, updatedKey) ?? prevState;
    }
    const result = listener(state2, prevState);
    if (result) setListenerCleanup(group, listener, result);
  }
  function runLiveListeners({ group, getState: getState2, prevState, updatedKey, notifiedListeners }) {
    const allKeysListeners = group.allKeysListeners;
    for (const listener of group.listeners) {
      if (notifiedListeners?.has(listener)) continue;
      if (!allKeysListeners?.has(listener)) {
        if (!hasUpdatedKey(group.listenerKeys.get(listener), updatedKey)) continue;
      }
      notifiedListeners?.add(listener);
      notifyStoreListener(group, listener, getState2(), prevState, getState2, updatedKey);
    }
  }
  function createStore(initialState, ...stores) {
    let state2 = initialState;
    let prevStateBatch = state2;
    let destroy = noop5;
    let batchPending = false;
    let inDispatch = false;
    let updatedKeys = /* @__PURE__ */ new Set();
    const instances = /* @__PURE__ */ new Set();
    const setups = /* @__PURE__ */ new Set();
    const syncListenerGroup = {
      listeners: /* @__PURE__ */ new Set(),
      disposables: /* @__PURE__ */ new Map(),
      listenerKeys: /* @__PURE__ */ new WeakMap()
    };
    const batchListenerGroup = {
      listeners: /* @__PURE__ */ new Set(),
      disposables: /* @__PURE__ */ new Map(),
      listenerKeys: /* @__PURE__ */ new WeakMap()
    };
    const storeSetup = (callback) => {
      setups.add(callback);
      return () => setups.delete(callback);
    };
    const storeInit = () => {
      const initializedInstances = instances.size;
      const instance = /* @__PURE__ */ Symbol();
      instances.add(instance);
      const maybeDestroy = () => {
        if (!instances.delete(instance)) return;
        if (instances.size) return;
        destroy();
      };
      if (initializedInstances) return maybeDestroy;
      const stateKeys = getKeys(state2);
      const desyncs = [];
      for (const store4 of stores) {
        const storeState = store4?.getState?.();
        if (!storeState) continue;
        const keys = stateKeys.filter((key) => hasOwnProperty(storeState, key));
        if (!keys.length) continue;
        if (stores.length === 1 || keys.length === stateKeys.length) {
          for (const key of keys) desyncs.push(sync2(store4, [key], (state3) => {
            setState(key, state3[key], true);
          }));
          continue;
        }
        desyncs.push(subscribe2(store4, keys, (state3, prevState) => {
          for (const key of keys) {
            if (state3[key] === prevState[key]) continue;
            setState(key, state3[key], true);
          }
        }));
        for (const key of keys) {
          const liveState = store4?.getState?.();
          if (!liveState) continue;
          setState(key, liveState[key], true);
        }
      }
      const teardowns = [];
      for (const setup2 of setups) teardowns.push(setup2());
      const cleanups = stores.map(init);
      destroy = chain(...desyncs, ...teardowns, ...cleanups);
      return maybeDestroy;
    };
    const deleteListenerIndexes = (group, listener, keys) => {
      if (keys === void 0) return;
      if (keys) deleteKeyedListener(group.listenersByKey, keys, listener);
      else group.allKeysListeners?.delete(listener);
    };
    const fastPathFrames = [];
    const registerListener = (keys, listener, group = syncListenerGroup) => {
      const listenerKeysValue = keys ? [...keys] : null;
      const wasRegistered = group.listeners.has(listener);
      if (!wasRegistered) clearFastPathNotifiedListener(fastPathFrames, group, listener);
      if (!listenerKeysValue) {
        if (wasRegistered) preserveFastPathFrames(fastPathFrames, group);
        preserveFastPathPassedListeners(fastPathFrames, group, listener);
      } else preserveFastPathPassedKeyedListeners({
        fastPathFrames,
        group,
        keys: listenerKeysValue,
        listener
      });
      if (wasRegistered) {
        preserveFastPathFrames(fastPathFrames, group, listener);
        deleteListenerIndexes(group, listener, group.listenerKeys.get(listener));
      }
      group.listeners.add(listener);
      if (listenerKeysValue) {
        group.listenersByKey ??= /* @__PURE__ */ new Map();
        addKeyedListener(group.listenersByKey, listenerKeysValue, listener);
        addFastPathKeyedListener({
          fastPathFrames,
          group,
          keys: listenerKeysValue,
          listener
        });
      } else {
        group.allKeysListeners ??= /* @__PURE__ */ new Set();
        group.allKeysListeners.add(listener);
      }
      group.listenerKeys.set(listener, listenerKeysValue);
      return () => {
        const cleanup = group.disposables.get(listener);
        group.disposables.delete(listener);
        preserveFastPathFrames(fastPathFrames, group, listener);
        const currentKeys = group.listenerKeys.get(listener);
        deleteListenerIndexes(group, listener, listenerKeysValue);
        if (currentKeys !== listenerKeysValue) deleteListenerIndexes(group, listener, currentKeys);
        group.listenerKeys.delete(listener);
        group.listeners.delete(listener);
        cleanup?.();
      };
    };
    const storeSubscribe = (keys, listener) => registerListener(keys, listener);
    const runInitialListener = (group, listener, prevState) => {
      const shouldSuspend = group.listeners.has(listener);
      if (shouldSuspend) {
        group.suspendCounts ??= /* @__PURE__ */ new Map();
        const count = group.suspendCounts.get(listener) ?? 0;
        group.suspendCounts.set(listener, count + 1);
      }
      let cleanupPrevState;
      try {
        const stateBeforeCleanups = state2;
        runPendingCleanup(group, listener);
        if (state2 !== stateBeforeCleanups) cleanupPrevState = getCleanupPrevState(prevState, state2, stateBeforeCleanups);
        const cleanup = listener(state2, cleanupPrevState ?? prevState);
        if (cleanup) setListenerCleanup(group, listener, cleanup);
      } finally {
        if (shouldSuspend) {
          const suspendCounts = group.suspendCounts;
          const count = suspendCounts?.get(listener);
          if (count && count > 1) suspendCounts?.set(listener, count - 1);
          else suspendCounts?.delete(listener);
          if (!suspendCounts?.size) delete group.suspendCounts;
        }
      }
    };
    const storeSync = (keys, listener) => {
      runInitialListener(syncListenerGroup, listener, state2);
      return registerListener(keys, listener);
    };
    const storeBatch = (keys, listener) => {
      if (!batchListenerGroup.listeners.size && !inDispatch) prevStateBatch = state2;
      runInitialListener(batchListenerGroup, listener, prevStateBatch);
      return registerListener(keys, listener, batchListenerGroup);
    };
    const storePick = (keys) => createStore(pick(state2, keys), finalStore);
    const storeOmit = (keys) => createStore(omit(state2, keys), finalStore);
    const getState2 = () => state2;
    const runListeners = (group, prevState, updatedKey) => {
      if (!(updatedKey instanceof Set) && !group.allKeysListeners?.size) {
        const keyedListeners = group.listenersByKey?.get(updatedKey);
        if (!keyedListeners) return;
        const frame = {
          group,
          keyedListeners,
          updatedKey,
          currentListener: null
        };
        fastPathFrames.push(frame);
        try {
          for (const listener of keyedListeners) {
            if (frame.notifiedListeners?.has(listener)) continue;
            frame.currentListener = listener;
            frame.notifiedListeners?.add(listener);
            notifyStoreListener(group, listener, state2, prevState, getState2, updatedKey);
            if (!group.allKeysListeners?.size && !frame.recoverToLive) continue;
            const notifiedListeners = frame.notifiedListeners ?? getFastPathNotifiedListeners(frame);
            frame.notifiedListeners = notifiedListeners;
            frame.recovering = true;
            runLiveListeners({
              group,
              getState: getState2,
              prevState,
              updatedKey,
              notifiedListeners
            });
            return;
          }
        } finally {
          fastPathFrames.pop();
        }
        return;
      }
      runLiveListeners({
        group,
        getState: getState2,
        prevState,
        updatedKey
      });
    };
    const setState = (key, value, fromStores = false) => {
      if (!hasOwnProperty(state2, key)) return;
      const currentValue = state2[key];
      const nextValue = applyState(value, () => currentValue);
      if (isSameValue(nextValue, currentValue)) return;
      const wasInDispatch = inDispatch;
      inDispatch = true;
      const prevState = state2;
      const nextState = {
        ...state2,
        [key]: nextValue
      };
      state2 = nextState;
      let superseded = false;
      try {
        if (!fromStores && stores.length) {
          for (const store4 of stores) {
            store4?.setState?.(key, nextValue);
            if (isSameValue(state2[key], nextValue)) continue;
            superseded = true;
            break;
          }
          if (superseded) {
            let pass = 0;
            for (; pass < MAX_REPAIR_PASSES; pass += 1) {
              let changed = false;
              for (const store4 of stores) {
                const previousValue = state2[key];
                store4?.setState?.(key, previousValue);
                if (!isSameValue(state2[key], previousValue)) changed = true;
              }
              if (!changed) break;
            }
            if (pass === MAX_REPAIR_PASSES) console.warn("Parent stores did not converge after a superseded fan-out; a parent listener may be rewriting this key in a cycle.");
          }
        }
        if (!superseded) {
          const listenerPrevState = state2 === nextState ? prevState : {
            ...state2,
            [key]: prevState[key]
          };
          runListeners(syncListenerGroup, listenerPrevState, key);
        }
      } finally {
        inDispatch = wasInDispatch;
      }
      if (!batchListenerGroup.listeners.size) {
        if (!inDispatch) prevStateBatch = state2;
        return;
      }
      updatedKeys.add(key);
      if (batchPending) return;
      batchPending = true;
      queueMicrotask(() => {
        batchPending = false;
        const snapshot = state2;
        const updatedKeysSnapshot = updatedKeys;
        updatedKeys = /* @__PURE__ */ new Set();
        const prevStateBatchBefore = prevStateBatch;
        runListeners(batchListenerGroup, prevStateBatchBefore, updatedKeysSnapshot);
        if (prevStateBatch === prevStateBatchBefore) prevStateBatch = snapshot;
      });
    };
    const finalStore = {
      getState: getState2,
      setState,
      __unstableInternals: {
        setup: storeSetup,
        init: storeInit,
        subscribe: storeSubscribe,
        sync: storeSync,
        batch: storeBatch,
        pick: storePick,
        omit: storeOmit
      }
    };
    return finalStore;
  }
  function setup(store4, ...args) {
    if (!store4) return;
    return getInternal(store4, "setup")(...args);
  }
  function init(store4, ...args) {
    if (!store4) return;
    return getInternal(store4, "init")(...args);
  }
  function subscribe2(store4, ...args) {
    if (!store4) return;
    return getInternal(store4, "subscribe")(...args);
  }
  function sync2(store4, ...args) {
    if (!store4) return;
    return getInternal(store4, "sync")(...args);
  }
  function batch(store4, ...args) {
    if (!store4) return;
    return getInternal(store4, "batch")(...args);
  }
  function omit2(store4, ...args) {
    if (!store4) return;
    return getInternal(store4, "omit")(...args);
  }
  function pick2(store4, ...args) {
    if (!store4) return;
    return getInternal(store4, "pick")(...args);
  }
  function mergeStore(...stores) {
    const initialState = {};
    for (const store5 of stores) {
      const nextState = store5?.getState?.();
      if (nextState) Object.assign(initialState, nextState);
    }
    const store4 = createStore(initialState, ...stores);
    return Object.assign({}, ...stores, store4);
  }
  function throwOnConflictingProps(props, store4) {
    if (false) return;
    if (!store4) return;
    const defaultKeys = Object.entries(props).filter(([key, value]) => key.startsWith("default") && value !== void 0).map(([key]) => {
      const stateKey = key.replace("default", "");
      return `${stateKey[0]?.toLowerCase() || ""}${stateKey.slice(1)}`;
    });
    if (!defaultKeys.length) return;
    const storeState = store4.getState();
    if (!defaultKeys.filter((key) => hasOwnProperty(storeState, key)).length) return;
    throw new Error(`Passing a store prop in conjunction with a default state is not supported.

const store = useSelectStore();
<SelectProvider store={store} defaultValue="Apple" />
                ^             ^

Instead, pass the default state to the topmost store:

const store = useSelectStore({ defaultValue: "Apple" });
<SelectProvider store={store} />

See https://github.com/ariakit/ariakit/pull/2745 for more details.

If there's a particular need for this, please submit a feature request at https://github.com/ariakit/ariakit
`);
  }

  // node_modules/@ariakit/components/dist/collection/collection-store.js
  function getCommonParent(items) {
    const firstItem = items.find((item) => !!item.element);
    const lastElement = [...items].reverse().find((item) => !!item.element)?.element;
    let parentElement = firstItem?.element?.parentElement;
    if (!lastElement) return getDocument(parentElement).body;
    while (parentElement) {
      if (parentElement.contains(lastElement)) return parentElement;
      parentElement = parentElement.parentElement;
    }
    return getDocument(parentElement).body;
  }
  function getPrivateStore(store4) {
    return store4?.__unstablePrivateStore;
  }
  var itemIdCacheThreshold = 64;
  function getCachedItemIds(items, cache) {
    if (items.length < itemIdCacheThreshold) {
      if (cache.ids) {
        cache.items = void 0;
        cache.ids = void 0;
      }
      return;
    }
    if (cache.items === items) return cache.ids;
    const ids = /* @__PURE__ */ new Set();
    for (const item of items) ids.add(item.id);
    cache.items = items;
    cache.ids = ids;
    return ids;
  }
  function setCachedItemIds(items, cache, ids) {
    if (items.length < itemIdCacheThreshold) {
      if (cache.ids) {
        cache.items = void 0;
        cache.ids = void 0;
      }
      return;
    }
    if (!ids) {
      ids = /* @__PURE__ */ new Set();
      for (const item of items) ids.add(item.id);
    }
    cache.items = items;
    cache.ids = ids;
  }
  function createCollectionStore(props = {}) {
    throwOnConflictingProps(props, props.store);
    const syncState = props.store?.getState();
    const items = defaultValue(props.items, syncState?.items, props.defaultItems, []);
    const syncPrivateStore = getPrivateStore(props.store);
    const collectionLookup = syncPrivateStore?.__unstableCollectionLookup ?? {
      controlledItems: new Map(items.map((item) => [item.id, item])),
      registeredItems: /* @__PURE__ */ new Map(),
      controlledItemsSource: items,
      propagatedItems: items
    };
    const { controlledItems, registeredItems } = collectionLookup;
    const itemIdCache = {};
    const renderedItemIdCache = {};
    const initialState = {
      items,
      renderedItems: defaultValue(syncState?.renderedItems, [])
    };
    const collection = createStore(initialState, props.store);
    const privateStore = Object.assign(createStore({
      items,
      renderedItems: initialState.renderedItems
    }, syncPrivateStore), { __unstableCollectionLookup: collectionLookup });
    const sortItems = (renderedItems) => {
      const sortedItems = sortBasedOnDOMPosition(renderedItems, (i2) => i2.element);
      privateStore.setState("renderedItems", sortedItems);
      collection.setState("renderedItems", sortedItems);
    };
    const indexControlledItems = (items2) => {
      if (items2 === collectionLookup.controlledItemsSource) return;
      collectionLookup.controlledItemsSource = items2;
      controlledItems.clear();
      for (const item of items2) controlledItems.set(item.id, item);
    };
    const setState = (key, value) => {
      if (key !== "items") {
        collection.setState(key, value);
        return;
      }
      collection.setState("items", (items2) => {
        const nextItems = applyState(value, items2);
        if (nextItems === items2) return items2;
        collectionLookup.propagatedItems = nextItems;
        indexControlledItems(nextItems);
        return nextItems;
      });
    };
    setup(collection, () => init(privateStore));
    if (!syncPrivateStore) {
      subscribe2(collection, ["items"], ({ items: items2 }) => {
        if (items2 === collectionLookup.propagatedItems) return;
        collectionLookup.propagatedItems = items2;
        indexControlledItems(items2);
      });
      setup(privateStore, () => {
        return batch(privateStore, ["items"], ({ items: items2 }) => {
          collectionLookup.propagatedItems = items2;
          collection.setState("items", items2);
        });
      });
    }
    setup(privateStore, () => {
      return batch(privateStore, ["renderedItems"], (state2) => {
        if (state2.renderedItems !== collection.getState().renderedItems) sortItems(state2.renderedItems);
        if (typeof IntersectionObserver !== "function") return;
        let firstRun = true;
        let raf2 = 0;
        const ioCallback = () => {
          if (firstRun) {
            firstRun = false;
            return;
          }
          cancelAnimationFrame(raf2);
          raf2 = requestAnimationFrame(() => sortItems(state2.renderedItems));
        };
        const root = getCommonParent(state2.renderedItems);
        const observer = new IntersectionObserver(ioCallback, { root });
        for (const item of state2.renderedItems) {
          if (!item.element) continue;
          observer.observe(item.element);
        }
        return () => {
          cancelAnimationFrame(raf2);
          observer.disconnect();
        };
      });
    });
    const createMergeItem = (key, cache, lookup) => {
      const registeredItems2 = lookup?.registeredItems;
      const controlledItems2 = lookup?.controlledItems;
      return (item) => {
        const previousRegisteredItem = registeredItems2?.get(item.id);
        const wasKnown = !!previousRegisteredItem || !!controlledItems2?.has(item.id);
        let prevItem;
        privateStore.setState(key, (items2) => {
          const ids = !!cache.ids || items2.length >= itemIdCacheThreshold && !wasKnown ? getCachedItemIds(items2, cache) : void 0;
          const index3 = ids && !ids.has(item.id) ? -1 : items2.findIndex(({ id }) => id === item.id);
          const nextItems = items2.slice();
          if (index3 !== -1) {
            prevItem = items2[index3];
            const nextItem = {
              ...prevItem,
              ...item
            };
            nextItems[index3] = nextItem;
            registeredItems2?.set(item.id, nextItem);
          } else {
            nextItems.push(item);
            registeredItems2?.set(item.id, item);
            ids?.add(item.id);
          }
          if (cache.ids || index3 === -1 && nextItems.length >= itemIdCacheThreshold) setCachedItemIds(nextItems, cache, ids);
          return nextItems;
        });
        const unmergeItem = () => {
          if (registeredItems2) {
            if (previousRegisteredItem) registeredItems2.set(item.id, previousRegisteredItem);
            else registeredItems2.delete(item.id);
          }
          privateStore.setState(key, (items2) => {
            const ids = cache.ids ? getCachedItemIds(items2, cache) : void 0;
            if (!prevItem) {
              const nextItems2 = items2.filter(({ id }) => id !== item.id);
              ids?.delete(item.id);
              if (cache.ids) setCachedItemIds(nextItems2, cache, ids);
              return nextItems2;
            }
            const index3 = items2.findIndex(({ id }) => id === item.id);
            if (index3 === -1) return items2;
            const nextItems = items2.slice();
            nextItems[index3] = prevItem;
            if (cache.ids) setCachedItemIds(nextItems, cache, ids);
            return nextItems;
          });
        };
        return unmergeItem;
      };
    };
    const registerItem = createMergeItem("items", itemIdCache, collectionLookup);
    const mergeRenderedItem = createMergeItem("renderedItems", renderedItemIdCache);
    return {
      ...collection,
      setState,
      registerItem,
      renderItem: (item) => chain(registerItem(item), mergeRenderedItem(item)),
      item: (id) => {
        if (!id) return null;
        if (!registeredItems.size) return controlledItems.get(id) ?? null;
        return registeredItems.get(id) ?? controlledItems.get(id) ?? null;
      },
      __unstablePrivateStore: privateStore
    };
  }

  // node_modules/@ariakit/components/dist/composite/composite-store.js
  var NULL_ITEM = { id: null };
  function findFirstEnabledItem(items, excludeId) {
    return items.find((item) => {
      if (excludeId) return !item.disabled && item.id !== excludeId;
      return !item.disabled;
    });
  }
  function findLastEnabledItem(items) {
    for (let i2 = items.length - 1; i2 >= 0; i2 -= 1) {
      const item = items[i2];
      if (!item) continue;
      if (item.disabled) continue;
      return item;
    }
  }
  function getEnabledItems(items, excludeId) {
    return items.filter((item) => {
      if (excludeId) return !item.disabled && item.id !== excludeId;
      return !item.disabled;
    });
  }
  function getItemsInRow(items, rowId) {
    return items.filter((item) => item.rowId === rowId);
  }
  function findEnabledItemId({ items, fromIndex, step, rowId, excludeId }) {
    for (let i2 = fromIndex; i2 >= 0 && i2 < items.length; i2 += step) {
      const item = items[i2];
      if (!item) continue;
      if (item.rowId !== rowId) continue;
      if (item.disabled) continue;
      const itemId = item.id;
      if (excludeId != null && itemId === excludeId) continue;
      return itemId;
    }
  }
  function flipItems(items, activeId, shouldInsertNullItem = false) {
    const index3 = items.findIndex((item) => item.id === activeId);
    return [
      ...items.slice(index3 + 1),
      ...shouldInsertNullItem ? [NULL_ITEM] : [],
      ...items.slice(0, index3)
    ];
  }
  var rowMapItemThreshold = 48;
  var rowMapRowThreshold = 4;
  function groupSmallItemsByRows(items) {
    const rows = [];
    let previousRow;
    let previousRowId;
    for (const item of items) {
      const rowId = item.rowId;
      if (previousRow && previousRowId === rowId) {
        previousRow.push(item);
        continue;
      }
      const row = rows.find((currentRow) => currentRow[0]?.rowId === rowId);
      if (row) {
        row.push(item);
        previousRow = row;
      } else {
        previousRow = [item];
        rows.push(previousRow);
      }
      previousRowId = rowId;
    }
    return rows;
  }
  function groupLargeItemsByRows(items) {
    const firstItem = items[0];
    if (!firstItem) return [];
    let itemIndex = 1;
    while (itemIndex < items.length && items[itemIndex]?.rowId === firstItem.rowId) itemIndex += 1;
    const firstRow = items.slice(0, itemIndex);
    if (itemIndex === items.length) return [firstRow];
    const rows = [firstRow];
    let rowsById;
    for (; itemIndex < items.length; itemIndex += 1) {
      const item = items[itemIndex];
      if (!item) continue;
      const row = rowsById ? rowsById.get(item.rowId) : rows.find((currentRow) => currentRow[0]?.rowId === item.rowId);
      if (row) {
        row.push(item);
        continue;
      }
      const newRow = [item];
      rows.push(newRow);
      if (rowsById) rowsById.set(item.rowId, newRow);
      else if (rows.length === rowMapRowThreshold) rowsById = new Map(rows.map((currentRow) => [currentRow[0]?.rowId, currentRow]));
    }
    return rows;
  }
  function groupItemsByRows(items) {
    if (items.length >= rowMapItemThreshold) return groupLargeItemsByRows(items);
    return groupSmallItemsByRows(items);
  }
  function getMaxRowLength(array) {
    let maxLength = 0;
    for (const { length: length2 } of array) if (length2 > maxLength) maxLength = length2;
    return maxLength;
  }
  function createEmptyItem(rowId) {
    return {
      id: "__EMPTY_ITEM__",
      disabled: true,
      rowId
    };
  }
  function normalizeRows(rows, activeId, focusShift) {
    const maxLength = getMaxRowLength(rows);
    for (const row of rows) for (let i2 = 0; i2 < maxLength; i2 += 1) {
      const item = row[i2];
      if (!item || focusShift && item.disabled) {
        const previousItem = i2 === 0 && focusShift ? findFirstEnabledItem(row) : row[i2 - 1];
        row[i2] = previousItem && activeId !== previousItem.id && focusShift ? previousItem : createEmptyItem(previousItem?.rowId);
      }
    }
    return rows;
  }
  function verticalizeItems(items) {
    const rows = groupItemsByRows(items);
    const maxLength = getMaxRowLength(rows);
    const verticalized = [];
    for (let i2 = 0; i2 < maxLength; i2 += 1) for (const row of rows) {
      const item = row[i2];
      if (item) verticalized.push({
        ...item,
        rowId: item.rowId ? `${i2}` : void 0
      });
    }
    return verticalized;
  }
  function createCompositeStore(props = {}) {
    const syncState = props.store?.getState();
    const collection = createCollectionStore(props);
    const activeId = defaultValue(props.activeId, syncState?.activeId, props.defaultActiveId);
    const compositeElement = defaultValue(syncState?.compositeElement, syncState?.baseElement, null);
    const compositeElementInFocusOrder = defaultValue(props.compositeElementInFocusOrder, props.includesBaseElement, syncState?.compositeElementInFocusOrder, syncState?.includesBaseElement, activeId === null);
    const initialState = {
      ...collection.getState(),
      id: defaultValue(props.id, syncState?.id) ?? `id-${Math.random().toString(36).slice(2, 8)}`,
      activeId,
      compositeElement,
      baseElement: compositeElement,
      compositeElementInFocusOrder,
      includesBaseElement: compositeElementInFocusOrder,
      moves: defaultValue(syncState?.moves, 0),
      orientation: defaultValue(props.orientation, syncState?.orientation, "both"),
      rtl: defaultValue(props.rtl, syncState?.rtl, false),
      virtualFocus: defaultValue(props.virtualFocus, syncState?.virtualFocus, false),
      focusLoop: defaultValue(props.focusLoop, syncState?.focusLoop, false),
      focusWrap: defaultValue(props.focusWrap, syncState?.focusWrap, false),
      focusShift: defaultValue(props.focusShift, syncState?.focusShift, false)
    };
    const composite = createStore(initialState, collection, props.store);
    setup(composite, () => chain(sync2(composite, ["compositeElement"], (state2) => {
      composite.setState("baseElement", state2.compositeElement);
    }), sync2(composite, ["baseElement"], (state2) => {
      composite.setState("compositeElement", state2.baseElement);
    }), sync2(composite, ["compositeElementInFocusOrder"], (state2) => {
      composite.setState("includesBaseElement", state2.compositeElementInFocusOrder);
    }), sync2(composite, ["includesBaseElement"], (state2) => {
      composite.setState("compositeElementInFocusOrder", state2.includesBaseElement);
    })));
    setup(composite, () => sync2(composite, ["renderedItems", "activeId"], (state2) => {
      composite.setState("activeId", (activeId2) => {
        if (activeId2 !== void 0) return activeId2;
        return findFirstEnabledItem(state2.renderedItems)?.id;
      });
    }));
    const getNextId = (direction = "next", options = {}) => {
      const defaultState = composite.getState();
      const compositeElementInFocusOrder2 = defaultValue(options.compositeElementInFocusOrder, options.includesBaseElement, defaultState.compositeElementInFocusOrder);
      const { skip = 0, activeId: activeId2 = defaultState.activeId, focusShift = defaultState.focusShift, focusLoop = defaultState.focusLoop, focusWrap = defaultState.focusWrap, renderedItems = defaultState.renderedItems, rtl = defaultState.rtl } = options;
      const isVerticalDirection = direction === "up" || direction === "down";
      const isNextDirection = direction === "next" || direction === "down";
      const canReverse = isNextDirection ? rtl && !isVerticalDirection : !rtl || isVerticalDirection;
      const canShift = focusShift && !skip;
      if (!skip && !focusWrap && !compositeElementInFocusOrder2 && activeId2 != null) {
        if (!isVerticalDirection ? true : !canShift && !renderedItems.some((item) => item.rowId != null)) {
          let activeIndex2 = -1;
          if (renderedItems === defaultState.renderedItems) {
            const firstItem = renderedItems[0];
            if (firstItem && collection.item(firstItem.id) === firstItem) {
              const registeredItem = collection.item(activeId2);
              if (registeredItem?.id === activeId2) activeIndex2 = renderedItems.indexOf(registeredItem);
            }
          }
          if (activeIndex2 === -1) activeIndex2 = renderedItems.findIndex((item) => item.id === activeId2);
          const activeItem2 = renderedItems[activeIndex2];
          if (activeItem2) {
            const step = canReverse ? -1 : 1;
            const nextId2 = findEnabledItemId({
              items: renderedItems,
              fromIndex: activeIndex2 + step,
              step,
              rowId: activeItem2.rowId,
              excludeId: activeId2
            });
            if (nextId2 !== void 0) return nextId2;
            if (!(focusLoop && (isVerticalDirection ? focusLoop !== "horizontal" : focusLoop !== "vertical"))) return void 0;
            return findEnabledItemId({
              items: renderedItems,
              fromIndex: step === 1 ? 0 : renderedItems.length - 1,
              step,
              rowId: activeItem2.rowId,
              excludeId: activeId2
            });
          }
        }
      }
      let items = !isVerticalDirection ? renderedItems : flatten2DArray(normalizeRows(groupItemsByRows(renderedItems), activeId2, canShift));
      items = canReverse ? reverseArray(items) : items;
      items = isVerticalDirection ? verticalizeItems(items) : items;
      if (activeId2 == null) return findFirstEnabledItem(items)?.id;
      const activeItem = items.find((item) => item.id === activeId2);
      if (!activeItem) return findFirstEnabledItem(items)?.id;
      const isGrid2 = items.some((item) => item.rowId);
      const activeIndex = items.indexOf(activeItem);
      const nextItems = items.slice(activeIndex + 1);
      const nextItemsInRow = getItemsInRow(nextItems, activeItem.rowId);
      if (skip) {
        const nextEnabledItemsInRow = getEnabledItems(nextItemsInRow, activeId2);
        return (nextEnabledItemsInRow.slice(skip)[0] || nextEnabledItemsInRow[nextEnabledItemsInRow.length - 1])?.id;
      }
      const canLoop = focusLoop && (isVerticalDirection ? focusLoop !== "horizontal" : focusLoop !== "vertical");
      const canWrap = isGrid2 && focusWrap && (isVerticalDirection ? focusWrap !== "horizontal" : focusWrap !== "vertical");
      const hasNullItem = isNextDirection ? (!isGrid2 || isVerticalDirection) && canLoop && compositeElementInFocusOrder2 : isVerticalDirection ? compositeElementInFocusOrder2 : false;
      if (canLoop) return findFirstEnabledItem(flipItems(canWrap && !hasNullItem ? items : getItemsInRow(items, activeItem.rowId), activeId2, hasNullItem), activeId2)?.id;
      if (canWrap) {
        const nextItem2 = findFirstEnabledItem(hasNullItem ? nextItemsInRow : nextItems, activeId2);
        return hasNullItem ? nextItem2?.id || null : nextItem2?.id;
      }
      const nextItem = findFirstEnabledItem(nextItemsInRow, activeId2);
      if (!nextItem && hasNullItem) return null;
      return nextItem?.id;
    };
    const getNextIdFromOptions = (direction, options) => {
      if (typeof options === "number") return getNextId(direction, { skip: options });
      return getNextId(direction, options);
    };
    return {
      ...collection,
      ...composite,
      setCompositeElement: (element) => composite.setState("compositeElement", element),
      setBaseElement: (element) => composite.setState("compositeElement", element),
      setActiveId: (id) => composite.setState("activeId", id),
      move: (id) => {
        if (id === void 0) return;
        composite.setState("activeId", id);
        composite.setState("moves", (moves) => moves + 1);
      },
      first: () => findFirstEnabledItem(composite.getState().renderedItems)?.id,
      last: () => findLastEnabledItem(composite.getState().renderedItems)?.id,
      next: (options) => getNextIdFromOptions("next", options),
      previous: (options) => getNextIdFromOptions("previous", options),
      down: (options) => getNextIdFromOptions("down", options),
      up: (options) => getNextIdFromOptions("up", options)
    };
  }

  // node_modules/@ariakit/react-components/dist/composite/utils.js
  var findFirstEnabledItem2 = findFirstEnabledItem;
  var groupItemsByRows2 = groupItemsByRows;
  var unmountingItems = /* @__PURE__ */ new WeakSet();
  function markItemUnmounting(element) {
    if (getActiveElement(element) !== element) return;
    unmountingItems.add(element);
    queueMicrotask(() => unmountingItems.delete(element));
  }
  function markItemMounted(element) {
    unmountingItems.delete(element);
  }
  function withCompositeScrollPreserved(store4, callback) {
    const { virtualFocus, compositeElement } = store4.getState();
    if (!virtualFocus || !compositeElement || !isTextField(compositeElement)) {
      callback();
      return;
    }
    const savedScrollLeft = compositeElement.scrollLeft;
    const savedScrollTop = compositeElement.scrollTop;
    callback();
    compositeElement.scrollLeft = savedScrollLeft;
    compositeElement.scrollTop = savedScrollTop;
  }
  function getPopupElement(store4) {
    const state2 = store4.getState();
    if (!("contentElement" in state2)) return null;
    return state2.contentElement;
  }
  function ownsFocus(store4) {
    const { compositeElement } = store4.getState();
    const activeElement2 = getActiveElement(compositeElement);
    if (!activeElement2) return false;
    if (compositeElement?.contains(activeElement2)) return true;
    if (isItem(store4, activeElement2)) return true;
    return !!getPopupElement(store4)?.contains(activeElement2);
  }
  function presentItem({ store: store4, id, focus: focus2, markedOnly, requireFocus, scrollIntoView, onConsume }) {
    let element = null;
    let resolvedId;
    let focused = false;
    let focusLeftElement = false;
    let done = false;
    let wasMounted = false;
    let wasOpen = false;
    const compositeAtStart = store4.getState().compositeElement;
    const activeAtStart = getActiveElement(compositeAtStart);
    const owner = requireFocus ? activeAtStart : null;
    const startedOnComposite = !!compositeAtStart?.contains(activeAtStart);
    const stillOwnsFocus = (target) => {
      if (!owner) return true;
      const activeElement2 = getActiveElement(owner);
      if (activeElement2 === owner) return true;
      if (activeElement2 === target) return true;
      return ownsFocus(store4);
    };
    const abandonedByState = (state2) => {
      if ("mounted" in state2) {
        if (state2.mounted) wasMounted = true;
        else if (wasMounted) return true;
      }
      if ("open" in state2) {
        if (state2.open) wasOpen = true;
        else if (wasOpen) return true;
      }
      return id != null && state2.activeId != null && state2.activeId !== id;
    };
    const entersClosedPopup = (state2, target) => {
      if (!("open" in state2)) return false;
      if (state2.open) return false;
      const popup = getPopupElement(store4);
      if (!popup?.contains(target)) return false;
      const { compositeElement } = state2;
      if (!compositeElement) return false;
      if (popup.contains(compositeElement)) return false;
      return isVisible(target);
    };
    const resolveElement = (state2) => {
      const item = getEnabledItem(store4, resolvedId ?? (id === void 0 ? state2.activeId : id));
      if (!item?.element?.isConnected) return null;
      resolvedId = item.id;
      return item.element;
    };
    let removeFocusListeners;
    let unsubscribe;
    const cancel = () => {
      done = true;
      removeFocusListeners?.();
      unsubscribe?.();
    };
    let consumed = false;
    const consume = () => {
      if (consumed) return;
      consumed = true;
      onConsume?.();
    };
    const settle = () => {
      if (done) return;
      consume();
      return cancel();
    };
    const present = () => {
      if (done) return;
      const state2 = store4.getState();
      if (abandonedByState(state2)) return settle();
      let restoreFocus = false;
      if (!element) {
        element = resolveElement(state2);
        if (!element) return;
      } else if (!element.isConnected) {
        restoreFocus = focused && !focusLeftElement && getActiveElement(element) === getDocument(element).body;
        element = resolveElement(state2);
        if (!element) return settle();
      }
      if (restoreFocus) focused = false;
      else if (!stillOwnsFocus(element)) return settle();
      const focusWithheld = focus2 && startedOnComposite && entersClosedPopup(state2, element);
      if (focusWithheld) {
        const { activeId } = state2;
        if (activeId != null && activeId !== resolvedId) return settle();
      }
      if (focus2 && !focused && !focusWithheld) {
        focused = true;
        consume();
        focusLeftElement = false;
        const itemElement = element;
        removeFocusListeners?.();
        const onBlur = () => {
          focusLeftElement = !unmountingItems.has(itemElement);
        };
        const onFocus = () => {
          focusLeftElement = false;
        };
        itemElement.addEventListener("blur", onBlur);
        itemElement.addEventListener("focus", onFocus);
        removeFocusListeners = () => {
          itemElement.removeEventListener("blur", onBlur);
          itemElement.removeEventListener("focus", onFocus);
        };
        withCompositeScrollPreserved(store4, () => {
          itemElement.focus({ preventScroll: true });
        });
        if (done) return;
      }
      if (markedOnly && !element.hasAttribute("data-autofocus")) {
        if (focusWithheld) return;
        return settle();
      }
      if (!isVisible(element)) return;
      if ("unstable_placing" in state2 && state2.unstable_placing) return;
      if (!focusWithheld) settle();
      if (scrollIntoView) {
        scrollIntoView(element);
        return;
      }
      element.scrollIntoView({
        block: "nearest",
        inline: "nearest"
      });
    };
    unsubscribe = subscribe2(store4, [
      "activeId",
      "items",
      "mounted",
      "open",
      "unstable_placing"
    ], present);
    present();
    return Object.assign(cancel, { settle });
  }
  function usePresentItem(store4) {
    const cancelRef = (0, import_react65.useRef)(null);
    const ownerRef = (0, import_react65.useRef)(store4);
    const cancel = (0, import_react65.useCallback)(() => {
      cancelRef.current?.();
      cancelRef.current = null;
    }, []);
    const present = (0, import_react65.useCallback)((params) => {
      if (!store4) return;
      if (ownerRef.current !== store4) return;
      cancelRef.current?.settle();
      cancelRef.current = null;
      const cancelCurrent = presentItem({
        store: store4,
        ...params
      });
      cancelRef.current = cancelCurrent;
      return cancelCurrent;
    }, [store4]);
    useSafeLayoutEffect(() => {
      ownerRef.current = store4;
      return () => {
        ownerRef.current = void 0;
        cancel();
      };
    }, [store4, cancel]);
    return present;
  }
  function getEnabledItem(store4, id) {
    if (!id) return null;
    return store4.item(id) || null;
  }
  function selectTextField(element, collapseToEnd = false) {
    if (isTextField(element)) element.setSelectionRange(collapseToEnd ? element.value.length : 0, element.value.length);
    else if (element.isContentEditable) {
      const selection = getDocument(element).getSelection();
      selection?.selectAllChildren(element);
      if (collapseToEnd) selection?.collapseToEnd();
    }
  }
  var FOCUS_SILENTLY = /* @__PURE__ */ Symbol("FOCUS_SILENTLY");
  function focusSilently(element) {
    element[FOCUS_SILENTLY] = true;
    element.focus({ preventScroll: true });
  }
  function silentlyFocused(element) {
    const isSilentlyFocused = element[FOCUS_SILENTLY];
    delete element[FOCUS_SILENTLY];
    return isSilentlyFocused;
  }
  function isItem(store4, element, exclude) {
    if (!element) return false;
    if (element === exclude) return false;
    const item = store4.item(element.id);
    if (!item) return false;
    if (exclude && item.element === exclude) return false;
    return true;
  }

  // node_modules/@ariakit/react-components/dist/composite/composite-item.js
  var import_react66 = __toESM(require_react(), 1);
  var import_jsx_runtime307 = __toESM(require_jsx_runtime(), 1);

  // node_modules/@ariakit/react-store/dist/index.js
  var React207 = __toESM(require_react(), 1);
  var import_shim4 = __toESM(require_shim(), 1);
  var noopSubscribe = () => () => {
  };
  function isStoreKeyArray(value) {
    return Array.isArray(value);
  }
  function isSameValue2(value, other) {
    return value === other || value !== value && other !== other;
  }
  function hasSameStoreKeys(keys, otherKeys) {
    if (keys?.length !== otherKeys.length) return false;
    for (let index3 = 0; index3 < keys.length; index3 += 1) {
      const key = keys[index3];
      if (isSameValue2(key, otherKeys[index3])) continue;
      return false;
    }
    return true;
  }
  function useStableStoreKeys(keys) {
    const [stableKeys, setStableKeys] = React207.useState(() => keys === null ? null : [...keys]);
    if (keys === null) {
      if (stableKeys !== null) setStableKeys(null);
      return null;
    }
    if (hasSameStoreKeys(stableKeys, keys)) return stableKeys;
    const nextKeys = [...keys];
    setStableKeys(nextKeys);
    return nextKeys;
  }
  function useStoreState(store4, keyOrKeysOrSelector = identity, selector2) {
    const subscriptionKeys = useStableStoreKeys(isStoreKeyArray(keyOrKeysOrSelector) ? keyOrKeysOrSelector : typeof keyOrKeysOrSelector === "function" ? null : [keyOrKeysOrSelector]);
    const storeSubscribe = React207.useCallback((callback) => {
      if (!store4) return noopSubscribe();
      if (subscriptionKeys?.length === 0) return noopSubscribe();
      return subscribe2(store4, subscriptionKeys, callback);
    }, [store4, subscriptionKeys]);
    const getSnapshot2 = () => {
      const state2 = store4?.getState();
      if (isStoreKeyArray(keyOrKeysOrSelector)) return selector2?.(state2);
      if (typeof keyOrKeysOrSelector === "function") return keyOrKeysOrSelector(state2);
      if (!state2) return;
      if (!hasOwnProperty(state2, keyOrKeysOrSelector)) return;
      return state2[keyOrKeysOrSelector];
    };
    return (0, import_shim4.useSyncExternalStore)(storeSubscribe, getSnapshot2, getSnapshot2);
  }
  function getStoreStateObjectKeys(object, selectorKeys) {
    const keys = [];
    let hasSelector = false;
    for (const prop in object) {
      const keyOrSelector = object[prop];
      if (keyOrSelector === void 0) continue;
      if (typeof keyOrSelector === "function") {
        hasSelector = true;
        continue;
      }
      if (keys.includes(keyOrSelector)) continue;
      keys.push(keyOrSelector);
    }
    if (!hasSelector) return keys;
    if (!selectorKeys) return null;
    for (const key of selectorKeys) {
      if (keys.includes(key)) continue;
      keys.push(key);
    }
    return keys;
  }
  function useStoreStateObject(store4, objectOrKeys, object) {
    const stateObject = isStoreKeyArray(objectOrKeys) ? object ?? {} : objectOrKeys;
    const selectorKeys = isStoreKeyArray(objectOrKeys) ? objectOrKeys : void 0;
    const objRef = React207.useRef({});
    const subscriptionKeys = useStableStoreKeys(getStoreStateObjectKeys(stateObject, selectorKeys));
    const storeSubscribe = React207.useCallback((callback) => {
      if (!store4) return noopSubscribe();
      if (subscriptionKeys?.length === 0) return noopSubscribe();
      return subscribe2(store4, subscriptionKeys, callback);
    }, [store4, subscriptionKeys]);
    const getSnapshot2 = () => {
      const state2 = store4?.getState();
      let updated = false;
      const obj = objRef.current;
      for (const prop in stateObject) {
        const keyOrSelector = stateObject[prop];
        if (keyOrSelector === void 0) continue;
        if (typeof keyOrSelector === "function") {
          const value2 = keyOrSelector(state2);
          if (!Object.is(value2, obj[prop])) {
            obj[prop] = value2;
            updated = true;
          }
        }
        if (typeof keyOrSelector === "function") continue;
        const value = state2 && hasOwnProperty(state2, keyOrSelector) ? state2[keyOrSelector] : void 0;
        if (!Object.is(value, obj[prop])) {
          obj[prop] = value;
          updated = true;
        }
      }
      if (updated) objRef.current = { ...obj };
      return objRef.current;
    };
    return (0, import_shim4.useSyncExternalStore)(storeSubscribe, getSnapshot2, getSnapshot2);
  }
  function useStoreProps(store4, props, key, setKey) {
    const value = hasOwnProperty(props, key) ? props[key] : void 0;
    const setValue = setKey ? props[setKey] : void 0;
    const hasSetValue = !!setValue;
    const propsRef = useLiveRef({
      value,
      setValue
    });
    useSafeLayoutEffect(() => {
      if (!hasSetValue) return;
      return subscribe2(store4, [key], (state2, prev) => {
        const { value: value2, setValue: setValue2 } = propsRef.current;
        if (!setValue2) return;
        if (isSameValue2(state2[key], prev[key])) return;
        if (isSameValue2(state2[key], value2)) return;
        setValue2(state2[key]);
      });
    }, [
      store4,
      key,
      hasSetValue,
      propsRef
    ]);
    useSafeLayoutEffect(() => {
      if (value === void 0) return;
      store4.setState(key, value);
      return batch(store4, [key], () => {
        if (value === void 0) return;
        store4.setState(key, value);
      });
    });
  }
  function useStore2(createStore2, props) {
    const [store4, setStore] = React207.useState(() => createStore2(props));
    useSafeLayoutEffect(() => init(store4), [store4]);
    const useState178 = React207.useCallback((keyOrSelector) => useStoreState(store4, keyOrSelector), [store4]);
    return [React207.useMemo(() => ({
      ...store4,
      useState: useState178
    }), [store4, useState178]), useEvent3(() => {
      setStore((store5) => createStore2({
        ...props,
        ...store5.getState()
      }));
    })];
  }

  // node_modules/@ariakit/react-components/dist/composite/composite-item.js
  var TagName4 = "button";
  function isEditableElement(element) {
    if (isTextbox(element)) return true;
    return element.tagName === "INPUT" && !isButton(element);
  }
  function getNextPageOffset(scrollingElement, pageUp = false) {
    const height = scrollingElement.clientHeight;
    const { top } = scrollingElement.getBoundingClientRect();
    const pageSize = Math.max(height * 0.875, height - 40) * 1.5;
    const pageOffset = pageUp ? height - pageSize + top : pageSize + top;
    if (scrollingElement.tagName === "HTML") return pageOffset + scrollingElement.scrollTop;
    return pageOffset;
  }
  function getItemOffset(itemElement, pageUp = false) {
    const { top } = itemElement.getBoundingClientRect();
    if (pageUp) return top + itemElement.clientHeight;
    return top;
  }
  function findNextPageItemId(element, store4, next, pageUp = false) {
    if (!store4) return;
    if (!next) return;
    const { renderedItems } = store4.getState();
    const scrollingElement = getScrollingElement(element);
    if (!scrollingElement) return;
    const nextPageOffset = getNextPageOffset(scrollingElement, pageUp);
    let id;
    let prevDifference;
    for (let i2 = 0; i2 < renderedItems.length; i2 += 1) {
      const previousId = id;
      id = next(i2);
      if (!id) break;
      if (id === previousId) continue;
      const itemElement = getEnabledItem(store4, id)?.element;
      if (!itemElement) continue;
      const difference = getItemOffset(itemElement, pageUp) - nextPageOffset;
      const absDifference = Math.abs(difference);
      if (pageUp && difference <= 0 || !pageUp && difference >= 0) {
        if (prevDifference !== void 0 && prevDifference < absDifference) id = previousId;
        break;
      }
      prevDifference = absDifference;
    }
    return id;
  }
  function targetIsAnotherItem(event, store4) {
    if (isSelfTarget(event)) return false;
    return isItem(store4, event.target);
  }
  var useCompositeItem2 = createHook(function useCompositeItem3({ store: store4, rowId: rowIdProp, preventScrollOnKeyDown = false, moveOnKeyPress = true, tabbable: tabbable2 = false, getItem: getItemProp, typeaheadText, "aria-setsize": ariaSetSizeProp, "aria-posinset": ariaPosInSetProp, unstable_scrollIntoView: scrollIntoView, ...props }) {
    const context = useCompositeScopedContext();
    store4 = store4 || context;
    const accessibleWhenDisabled = accessibleWhenDisabledFromProps(props);
    const id = useId8(props.id);
    const ref = (0, import_react66.useRef)(null);
    const mountedElementRef = (0, import_react66.useRef)(null);
    const markUnmountingRef = (0, import_react66.useCallback)((element) => {
      const mountedElement = mountedElementRef.current;
      if (!element && mountedElement) markItemUnmounting(mountedElement);
      if (element) markItemMounted(element);
      mountedElementRef.current = element;
    }, []);
    const row = (0, import_react66.useContext)(CompositeRowContext);
    const disabled2 = disabledFromProps(props);
    const trulyDisabled = disabled2 && !accessibleWhenDisabled;
    const inactiveDisabled = disabled2 && props.focusable === false;
    const shouldRegisterItem = props.shouldRegisterItem;
    const getRowId = (state2) => {
      if (rowIdProp) return rowIdProp;
      if (!state2) return;
      if (!row?.compositeElement) return;
      if (row.compositeElement !== state2.compositeElement) return;
      return row.id;
    };
    const { rowId, compositeElement, ariaSetSize, ariaPosInSet } = useStoreStateObject(store4, ["compositeElement", "renderedItems"], {
      rowId: getRowId,
      compositeElement(state2) {
        return state2?.compositeElement || void 0;
      },
      ariaSetSize(state2) {
        if (ariaSetSizeProp != null) return ariaSetSizeProp;
        if (!state2) return;
        if (!row?.ariaSetSize) return;
        if (row.compositeElement !== state2.compositeElement) return;
        return row.ariaSetSize;
      },
      ariaPosInSet(state2) {
        if (ariaPosInSetProp != null) return ariaPosInSetProp;
        if (!state2) return;
        if (!row?.ariaPosInSet) return;
        if (row.compositeElement !== state2.compositeElement) return;
        const rowId2 = getRowId(state2);
        const itemsInRow = state2.renderedItems.filter((item) => item.rowId === rowId2);
        return row.ariaPosInSet + itemsInRow.findIndex((item) => item.id === id);
      }
    });
    const { isActiveItem, isTabbable: isTabbable2 } = useStoreStateObject(store4, [
      "activeId",
      "compositeElement",
      "renderedItems",
      "virtualFocus",
      "items"
    ], {
      isActiveItem(state2) {
        return !!state2 && state2.activeId === id;
      },
      isTabbable(state2) {
        if (!state2) return true;
        if (!state2.compositeElement && !state2.renderedItems.length) return true;
        if (state2.virtualFocus) return false;
        if (!state2.renderedItems.length) return true;
        if (tabbable2) return true;
        if (state2.activeId === null) return false;
        const item = store4?.item(state2.activeId);
        if (item?.disabled) return true;
        if (!item?.element) return true;
        return state2.activeId === id;
      }
    });
    const getItem = (0, import_react66.useCallback)((item) => {
      const itemDisabled = (item.element ? resolvedTrulyDisabledFromElement(item.element) : void 0) ?? (inactiveDisabled || trulyDisabled);
      const nextItem = {
        ...item,
        id: id || item.id,
        rowId,
        disabled: itemDisabled,
        children: item.element?.textContent,
        typeaheadText
      };
      if (getItemProp) return getItemProp(nextItem);
      return nextItem;
    }, [
      id,
      rowId,
      inactiveDisabled,
      trulyDisabled,
      typeaheadText,
      getItemProp
    ]);
    const onFocusProp = props.onFocus;
    const hasFocusedComposite = (0, import_react66.useRef)(false);
    const cancelScheduledFocusRedirectRef = (0, import_react66.useRef)(null);
    const present = usePresentItem(store4);
    const onFocus = useEvent3((event) => {
      onFocusProp?.(event);
      if (event.defaultPrevented) return;
      if (isPortalEvent(event)) return;
      if (!id) return;
      if (!store4) return;
      if (targetIsAnotherItem(event, store4)) return;
      const { virtualFocus, compositeElement: compositeElement2 } = store4.getState();
      store4.setActiveId(id);
      if (isTextbox(event.currentTarget)) selectTextField(event.currentTarget);
      if (!virtualFocus) {
        if (isSelfTarget(event) && store4.item(id)) present({
          id,
          markedOnly: true,
          requireFocus: true,
          scrollIntoView
        });
        return;
      }
      if (!isSelfTarget(event)) return;
      if (isEditableElement(event.currentTarget)) return;
      const redirectFocusToCompositeElement = (relatedTarget2, compositeElement3) => {
        if (!isFocusable(compositeElement3)) {
          if (true) warnOnce("A composite widget with `virtualFocus` enabled requires a focusable composite element. Set the `focusable` prop to `true` or the `virtualFocus` option to `false`.", compositeElement3);
          return;
        }
        const fromComposite = relatedTarget2 === compositeElement3 || isItem(store4, relatedTarget2);
        if (store4.item(id)) present({
          id,
          markedOnly: true,
          requireFocus: true,
          scrollIntoView
        });
        hasFocusedComposite.current = true;
        if (fromComposite) focusSilently(compositeElement3);
        else compositeElement3.focus({ preventScroll: true });
      };
      if (compositeElement2?.isConnected) {
        redirectFocusToCompositeElement(event.relatedTarget, compositeElement2);
        return;
      }
      if (shouldRegisterItem === false) return;
      const { currentTarget, relatedTarget } = event;
      const cancelScheduledFocusRedirect = () => {
        cancelScheduledFocusRedirectRef.current?.();
        cancelScheduledFocusRedirectRef.current = null;
      };
      cancelScheduledFocusRedirect();
      cancelScheduledFocusRedirectRef.current = subscribe2(store4, null, () => {
        if (getActiveElement(currentTarget) !== currentTarget) {
          cancelScheduledFocusRedirect();
          return;
        }
        const state2 = store4.getState();
        const nextCompositeElement = state2.compositeElement;
        if (!nextCompositeElement?.isConnected) return;
        cancelScheduledFocusRedirect();
        if (!state2.virtualFocus) return;
        redirectFocusToCompositeElement(relatedTarget, nextCompositeElement);
      });
    });
    const onBlurCaptureProp = props.onBlurCapture;
    const onBlurCapture = useEvent3((event) => {
      onBlurCaptureProp?.(event);
      if (event.defaultPrevented) return;
      if (store4?.getState()?.virtualFocus && hasFocusedComposite.current) {
        hasFocusedComposite.current = false;
        event.preventDefault();
        event.stopPropagation();
      }
    });
    const onKeyDownProp = props.onKeyDown;
    const preventScrollOnKeyDownProp = useBooleanEvent(preventScrollOnKeyDown);
    const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);
    const onKeyDown = useEvent3((event) => {
      onKeyDownProp?.(event);
      if (event.defaultPrevented) return;
      if (!isSelfTarget(event)) return;
      if (!store4) return;
      const { currentTarget } = event;
      const state2 = store4.getState();
      const isGrid2 = !!store4.item(id)?.rowId;
      const isVertical = state2.orientation !== "horizontal";
      const isHorizontal = state2.orientation !== "vertical";
      const canHomeEnd = () => {
        if (isGrid2) return true;
        if (isHorizontal) return true;
        if (!state2.compositeElement) return true;
        if (!isTextField(state2.compositeElement)) return true;
        return false;
      };
      const action = {
        ArrowUp: (isGrid2 || isVertical) && store4.up,
        ArrowRight: (isGrid2 || isHorizontal) && store4.next,
        ArrowDown: (isGrid2 || isVertical) && store4.down,
        ArrowLeft: (isGrid2 || isHorizontal) && store4.previous,
        Home: () => {
          if (!canHomeEnd()) return;
          if (!isGrid2 || event.ctrlKey) return store4?.first();
          return store4?.previous(-1);
        },
        End: () => {
          if (!canHomeEnd()) return;
          if (!isGrid2 || event.ctrlKey) return store4?.last();
          return store4?.next(-1);
        },
        PageUp: () => {
          return findNextPageItemId(currentTarget, store4, store4?.up, true);
        },
        PageDown: () => {
          return findNextPageItemId(currentTarget, store4, store4?.down);
        }
      }[event.key];
      if (action) {
        if (isTextbox(currentTarget)) {
          const selection = getTextboxSelection(currentTarget);
          const isLeft = isHorizontal && event.key === "ArrowLeft";
          const isRight = isHorizontal && event.key === "ArrowRight";
          const isUp = isVertical && event.key === "ArrowUp";
          const isDown = isVertical && event.key === "ArrowDown";
          if (isRight || isDown) {
            const { length: valueLength } = getTextboxValue(currentTarget);
            if (selection.end !== valueLength) return;
          } else if ((isLeft || isUp) && selection.start !== 0) return;
        }
        const nextId2 = action();
        if (preventScrollOnKeyDownProp(event) || nextId2 !== void 0) {
          if (!moveOnKeyPressProp(event)) return;
          event.preventDefault();
          store4.move(nextId2);
        }
      }
    });
    const providerValue = (0, import_react66.useMemo)(() => ({
      id,
      compositeElement
    }), [id, compositeElement]);
    props = useWrapElement(props, (element) => /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(CompositeItemContext.Provider, {
      value: providerValue,
      children: element
    }), [providerValue]);
    props = {
      "data-active-item": isActiveItem || void 0,
      ...props,
      id,
      ref: useMergeRefs6(ref, markUnmountingRef, props.ref),
      tabIndex: isTabbable2 ? props.tabIndex : -1,
      onFocus,
      onBlurCapture,
      onKeyDown
    };
    props = useCommand(props);
    props = useCollectionItem({
      store: store4,
      ...props,
      getItem,
      shouldRegisterItem: id ? shouldRegisterItem : false
    });
    return {
      ...props,
      "aria-setsize": ariaSetSize,
      "aria-posinset": ariaPosInSet
    };
  });
  var CompositeItem2 = memo7(forwardRef165(function CompositeItem3(props) {
    const htmlProps = useCompositeItem2(withDefaultButtonType(props));
    return createElement5(TagName4, htmlProps);
  }));

  // node_modules/@ariakit/react-components/dist/__chunks/C5dZ32Pk.js
  var cancelled = /* @__PURE__ */ Symbol("cancelled");
  var moveRequests = /* @__PURE__ */ new WeakMap();
  function getMoveRequest(store4) {
    const key = store4.item;
    const cached = moveRequests.get(key);
    if (cached) return cached;
    const request = {
      consumedBy: null,
      targetId: store4.getState().activeId
    };
    moveRequests.set(key, request);
    sync2(store4, ["moves", "activeId"], (state2, prevState) => {
      if (state2.moves !== prevState.moves) {
        request.consumedBy = null;
        request.targetId = state2.activeId;
        return;
      }
      if (state2.activeId !== prevState.activeId) request.targetId = cancelled;
    });
    return request;
  }

  // node_modules/@ariakit/react-components/dist/composite/composite.js
  var import_react67 = __toESM(require_react(), 1);
  var import_jsx_runtime308 = __toESM(require_jsx_runtime(), 1);
  var TagName5 = "div";
  function isGrid(items) {
    return items.some((item) => !!item.rowId);
  }
  function isPrintableKey(event) {
    const target = event.target;
    if (target && !isTextField(target)) return false;
    return event.key.length === 1 && !event.ctrlKey && !event.metaKey;
  }
  function isModifierKey(event) {
    return event.key === "Shift" || event.key === "Control" || event.key === "Alt" || event.key === "Meta";
  }
  function useKeyboardEventProxy(store4, onKeyboardEvent, previousElementRef) {
    return useEvent3((event) => {
      onKeyboardEvent?.(event);
      if (event.defaultPrevented) return;
      if (event.isPropagationStopped()) return;
      if (!isSelfTarget(event)) return;
      if (isModifierKey(event)) return;
      if (isPrintableKey(event)) return;
      const state2 = store4.getState();
      const activeElement2 = getEnabledItem(store4, state2.activeId)?.element;
      if (!activeElement2) return;
      const { view, ...eventInit } = event;
      if (activeElement2 !== previousElementRef?.current) activeElement2.focus({ preventScroll: true });
      if (!fireKeyboardEvent(activeElement2, event.type, eventInit)) event.preventDefault();
      if (event.currentTarget.contains(activeElement2)) event.stopPropagation();
    });
  }
  function findFirstEnabledItemInTheLastRow(items) {
    return findFirstEnabledItem2(flatten2DArray(reverseArray(groupItemsByRows2(items))));
  }
  function mayActOnMove(store4, instance) {
    const { consumedBy } = getMoveRequest(store4);
    return !consumedBy || consumedBy === instance;
  }
  function consumeMove(store4, instance, moves) {
    if (store4.getState().moves !== moves) return;
    getMoveRequest(store4).consumedBy = instance;
  }
  var CompositeFocusOnMove = memo7(function CompositeFocusOnMove2({ store: store4, focusOnMove, previousElementRef, present, scrollIntoView }) {
    const moves = useStoreState(store4, "moves");
    const compositeElement = useStoreState(store4, "compositeElement");
    const instanceRef = (0, import_react67.useRef)({});
    (0, import_react67.useEffect)(() => {
      const moveRequest = getMoveRequest(store4);
      if (!moves) return;
      if (!focusOnMove) return;
      const instance = instanceRef.current;
      if (!mayActOnMove(store4, instance)) return;
      const { activeId } = store4.getState();
      if (activeId == null) return;
      if (activeId !== moveRequest.targetId) return;
      return present({
        id: activeId,
        requireFocus: ownsFocus(store4),
        focus: true,
        scrollIntoView,
        onConsume: () => consumeMove(store4, instance, moves)
      });
    }, [
      store4,
      moves,
      focusOnMove,
      compositeElement,
      present,
      scrollIntoView
    ]);
    useSafeLayoutEffect(() => {
      const moveRequest = getMoveRequest(store4);
      if (!moves) return;
      if (!compositeElement) return;
      const instance = instanceRef.current;
      if (!mayActOnMove(store4, instance)) return;
      const { activeId } = store4.getState();
      if (!(activeId === null)) return;
      if (activeId !== moveRequest.targetId) return;
      consumeMove(store4, instance, moves);
      const previousElement = previousElementRef.current;
      previousElementRef.current = null;
      if (previousElement) fireBlurEvent(previousElement, { relatedTarget: compositeElement });
      if (!hasFocus(compositeElement)) {
        if (isFocusable(compositeElement)) compositeElement.scrollIntoView({
          block: "nearest",
          inline: "nearest"
        });
        compositeElement.focus({ preventScroll: true });
      }
    }, [
      store4,
      moves,
      compositeElement,
      previousElementRef
    ]);
    return null;
  });
  var useComposite = createHook(function useComposite2({ store: store4, composite = true, focusOnMove = composite, moveOnKeyPress = true, unstable_scrollIntoView: scrollIntoView, ...props }) {
    const context = useCompositeProviderContext();
    store4 = store4 || context;
    invariant(store4, "Composite must receive a `store` prop or be wrapped in a CompositeProvider component.");
    const ref = (0, import_react67.useRef)(null);
    const previousElementRef = (0, import_react67.useRef)(null);
    const present = usePresentItem(store4);
    const [, setCompositeElement] = useTransactionState(composite ? store4.setCompositeElement : null);
    const virtualFocus = useStoreState(store4, "virtualFocus");
    const activeId = useStoreState(store4, composite && virtualFocus ? ["activeId"] : [], (state2) => composite && virtualFocus ? state2.activeId : null);
    useSafeLayoutEffect(() => {
      if (!store4) return;
      if (!composite) return;
      if (!virtualFocus) return;
      const previousElement = previousElementRef.current;
      previousElementRef.current = null;
      if (!previousElement) return;
      const relatedTarget = getEnabledItem(store4, activeId)?.element || getActiveElement(previousElement);
      if (relatedTarget === previousElement) return;
      fireBlurEvent(previousElement, { relatedTarget });
    }, [
      store4,
      activeId,
      virtualFocus,
      composite
    ]);
    const onKeyDownCapture = useKeyboardEventProxy(store4, props.onKeyDownCapture, previousElementRef);
    const onKeyUpCapture = useKeyboardEventProxy(store4, props.onKeyUpCapture, previousElementRef);
    const onFocusCaptureProp = props.onFocusCapture;
    const onFocusCapture = useEvent3((event) => {
      onFocusCaptureProp?.(event);
      if (event.defaultPrevented) return;
      if (!store4) return;
      const { virtualFocus: virtualFocus2 } = store4.getState();
      if (!virtualFocus2) return;
      const previousActiveElement = event.relatedTarget;
      const isSilentlyFocused = silentlyFocused(event.currentTarget);
      if (isSelfTarget(event) && isSilentlyFocused) {
        event.stopPropagation();
        previousElementRef.current = previousActiveElement;
      }
    });
    const onFocusProp = props.onFocus;
    const onFocus = useEvent3((event) => {
      onFocusProp?.(event);
      if (event.defaultPrevented) return;
      if (!composite) return;
      if (!store4) return;
      const { relatedTarget } = event;
      const { virtualFocus: virtualFocus2 } = store4.getState();
      if (virtualFocus2) {
        if (isSelfTarget(event) && !isItem(store4, relatedTarget)) queueMicrotask(() => present({
          focus: true,
          markedOnly: true,
          requireFocus: true,
          scrollIntoView
        }));
      } else if (isSelfTarget(event)) {
        if (!isItem(store4, relatedTarget)) {
          const { activeId: activeId2 } = store4.getState();
          if (activeId2 != null) present({
            id: activeId2,
            markedOnly: true,
            requireFocus: true,
            scrollIntoView
          });
        }
        store4.setActiveId(null);
      }
    });
    const onBlurCaptureProp = props.onBlurCapture;
    const onBlurCapture = useEvent3((event) => {
      onBlurCaptureProp?.(event);
      if (event.defaultPrevented) return;
      if (!store4) return;
      const { virtualFocus: virtualFocus2, activeId: activeId2, compositeElement } = store4.getState();
      if (!virtualFocus2) return;
      if (event.currentTarget !== compositeElement) return;
      const activeElement2 = getEnabledItem(store4, activeId2)?.element;
      const nextActiveElement = event.relatedTarget;
      const nextActiveElementIsItem = isItem(store4, nextActiveElement);
      const previousElement = previousElementRef.current;
      previousElementRef.current = null;
      if (isSelfTarget(event) && nextActiveElementIsItem) {
        if (nextActiveElement === activeElement2) {
          if (previousElement && previousElement !== nextActiveElement) fireBlurEvent(previousElement, event);
        } else if (activeElement2) fireBlurEvent(activeElement2, event);
        else if (previousElement) fireBlurEvent(previousElement, event);
        event.stopPropagation();
      } else if (!isItem(store4, event.target) && activeElement2) fireBlurEvent(activeElement2, event);
    });
    const onKeyDownProp = props.onKeyDown;
    const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);
    const onKeyDown = useEvent3((event) => {
      onKeyDownProp?.(event);
      if (event.nativeEvent.isComposing) return;
      if (event.defaultPrevented) return;
      if (!store4) return;
      if (!isSelfTarget(event)) return;
      const { orientation, items, renderedItems, activeId: activeId2, rtl } = store4.getState();
      const activeItem = getEnabledItem(store4, activeId2);
      if (activeItem?.element?.isConnected) return;
      const elementlessActiveItem = activeItem && activeId2 != null;
      const movementItems = elementlessActiveItem ? items : renderedItems;
      const isVertical = orientation !== "horizontal";
      const isHorizontal = orientation !== "vertical";
      const grid = isGrid(movementItems);
      if ((event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End") && isTextField(event.currentTarget)) return;
      const up = () => {
        if (elementlessActiveItem) return store4.up({
          activeId: activeId2,
          renderedItems: movementItems
        });
        if (grid) return findFirstEnabledItemInTheLastRow(renderedItems)?.id;
        return store4?.last();
      };
      const right = () => {
        if (elementlessActiveItem) return store4.next({
          activeId: activeId2,
          renderedItems: movementItems
        });
        return rtl ? store4.last() : store4.first();
      };
      const down = () => {
        if (elementlessActiveItem) return store4.down({
          activeId: activeId2,
          renderedItems: movementItems
        });
        return store4.first();
      };
      const left = () => {
        if (elementlessActiveItem) return store4.previous({
          activeId: activeId2,
          renderedItems: movementItems
        });
        return rtl ? store4.first() : store4.last();
      };
      const action = {
        ArrowUp: (grid || isVertical) && up,
        ArrowRight: (grid || isHorizontal) && right,
        ArrowDown: (grid || isVertical) && down,
        ArrowLeft: (grid || isHorizontal) && left,
        Home: store4.first,
        End: store4.last,
        PageUp: store4.first,
        PageDown: store4.last
      }[event.key];
      if (action) {
        const id = action();
        if (id !== void 0) {
          if (!moveOnKeyPressProp(event)) return;
          event.preventDefault();
          store4.move(id);
        }
      }
    });
    props = useWrapElement(props, (element) => /* @__PURE__ */ (0, import_jsx_runtime308.jsxs)(CompositeScopedContextProvider, {
      value: store4,
      children: [element, composite && /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(CompositeFocusOnMove, {
        store: store4,
        focusOnMove,
        previousElementRef,
        present,
        scrollIntoView
      })]
    }), [
      store4,
      composite,
      focusOnMove,
      present
    ]);
    props = {
      "aria-activedescendant": useStoreState(store4, composite && virtualFocus ? ["items"] : [], () => {
        if (!store4) return;
        if (!composite) return;
        if (!virtualFocus) return;
        return getEnabledItem(store4, activeId)?.id;
      }),
      ...props,
      ref: useMergeRefs6(ref, setCompositeElement, props.ref),
      onKeyDownCapture,
      onKeyUpCapture,
      onFocusCapture,
      onFocus,
      onBlurCapture,
      onKeyDown
    };
    const focusable2 = useStoreState(store4, composite && !virtualFocus ? ["activeId"] : [], (state2) => composite && (virtualFocus || state2.activeId === null));
    props = useFocusable({
      focusable: focusable2,
      ...props
    });
    return props;
  });
  var Composite6 = forwardRef165(function Composite7(props) {
    const htmlProps = useComposite(props);
    return createElement5(TagName5, htmlProps);
  });

  // node_modules/@ariakit/react-components/dist/disclosure/disclosure-context.js
  var ctx4 = createStoreContext();
  var useDisclosureContext = ctx4.useContext;
  var useDisclosureScopedContext = ctx4.useScopedContext;
  var useDisclosureProviderContext = ctx4.useProviderContext;
  var DisclosureContextProvider = ctx4.ContextProvider;
  var DisclosureScopedContextProvider = ctx4.ScopedContextProvider;

  // node_modules/@ariakit/react-components/dist/dialog/dialog-context.js
  var import_react68 = __toESM(require_react(), 1);
  var ctx5 = createStoreContext([DisclosureContextProvider], [DisclosureScopedContextProvider]);
  var useDialogContext = ctx5.useContext;
  var useDialogScopedContext = ctx5.useScopedContext;
  var useDialogProviderContext = ctx5.useProviderContext;
  var DialogContextProvider = ctx5.ContextProvider;
  var DialogScopedContextProvider = ctx5.ScopedContextProvider;
  var DialogHeadingContext = (0, import_react68.createContext)(void 0);
  var DialogDescriptionContext = (0, import_react68.createContext)(void 0);

  // node_modules/@ariakit/react-components/dist/disclosure/disclosure-content.js
  var import_react69 = __toESM(require_react(), 1);
  var import_jsx_runtime309 = __toESM(require_jsx_runtime(), 1);
  var import_react_dom4 = __toESM(require_react_dom(), 1);
  var TagName6 = "div";
  function afterTimeout(timeoutMs, cb) {
    const timeoutId = setTimeout(cb, timeoutMs);
    return () => clearTimeout(timeoutId);
  }
  function parseCSSTime(time) {
    const value = time?.trim() || "0s";
    const multiplier = value.endsWith("ms") ? 1 : 1e3;
    const parsed = Number.parseFloat(value) * multiplier;
    return Number.isNaN(parsed) ? 0 : parsed;
  }
  function getEndTime(names, delays, durations) {
    const nameList = names.split(",");
    const delayList = delays.split(",");
    const durationList = durations.split(",");
    let endTime = 0;
    for (const [index3, name2] of nameList.entries()) {
      if (name2.trim() === "none") continue;
      const delay = parseCSSTime(delayList[index3 % delayList.length]);
      const duration = parseCSSTime(durationList[index3 % durationList.length]);
      endTime = Math.max(endTime, delay + duration);
    }
    return endTime;
  }
  function getElementEndTime(element) {
    const { transitionProperty, transitionDuration, transitionDelay, animationName, animationDuration, animationDelay } = getComputedStyle(element);
    return Math.max(getEndTime(transitionProperty, transitionDelay, transitionDuration), getEndTime(animationName, animationDelay, animationDuration));
  }
  function isHidden(mounted, hidden, alwaysVisible) {
    return !alwaysVisible && hidden !== false && (!mounted || !!hidden);
  }
  var useDisclosureContent = createHook(function useDisclosureContent2({ store: store4, alwaysVisible, unstable_otherElementRef: otherElementRef, ...props }) {
    const context = useDisclosureProviderContext();
    store4 = store4 || context;
    invariant(store4, "DisclosureContent must receive a `store` prop or be wrapped in a DisclosureProvider component.");
    const ref = (0, import_react69.useRef)(null);
    const id = useId8(props.id);
    const [transition, setTransition] = (0, import_react69.useState)(null);
    const { open: open3, mounted, animated: animated2, contentElement } = useStoreStateObject(store4, {
      open: "open",
      mounted: "mounted",
      animated: "animated",
      contentElement: "contentElement"
    });
    const otherElement = useStoreState(store4.disclosure, "contentElement");
    const hasClosedRef = (0, import_react69.useRef)(false);
    useSafeLayoutEffect(() => {
      if (!ref.current) return;
      store4?.setContentElement(ref.current);
    }, [store4]);
    useSafeLayoutEffect(() => {
      let previousAnimated;
      store4?.setState("animated", (animated3) => {
        previousAnimated = animated3;
        return true;
      });
      return () => {
        if (previousAnimated === void 0) return;
        store4?.setState("animated", previousAnimated);
      };
    }, [store4]);
    useSafeLayoutEffect(() => {
      if (!animated2) {
        if (!open3) {
          hasClosedRef.current = true;
          setTransition(null);
        } else if (hasClosedRef.current) {
          hasClosedRef.current = false;
          setTransition("enter");
        }
        return;
      }
      if (!contentElement?.isConnected) {
        setTransition(null);
        return;
      }
      return afterPaint(() => {
        setTransition(open3 ? "enter" : mounted ? "leave" : null);
      });
    }, [
      animated2,
      contentElement,
      open3,
      mounted
    ]);
    useSafeLayoutEffect(() => {
      if (!store4) return;
      if (!animated2) return;
      if (!transition) return;
      if (!contentElement) return;
      const stopAnimation = () => store4?.setState("animating", false);
      const stopAnimationSync = () => (0, import_react_dom4.flushSync)(stopAnimation);
      if (transition === "leave" && open3) return;
      if (transition === "enter" && !open3) return;
      if (typeof animated2 === "number") return afterTimeout(animated2, stopAnimationSync);
      const elements2 = [contentElement];
      if (otherElement) elements2.push(otherElement);
      const relatedElement = otherElementRef?.current;
      if (relatedElement) elements2.push(relatedElement);
      const timeout = Math.max(...elements2.map(getElementEndTime));
      if (!timeout) {
        if (transition === "enter") store4.setState("animated", false);
        stopAnimation();
        return;
      }
      return afterTimeout(Math.max(timeout - 1e3 / 60, 0), stopAnimationSync);
    }, [
      store4,
      animated2,
      contentElement,
      otherElement,
      otherElementRef,
      open3,
      transition
    ]);
    props = useWrapElement(props, (element) => /* @__PURE__ */ (0, import_jsx_runtime309.jsx)(DialogScopedContextProvider, {
      value: store4,
      children: element
    }), [store4]);
    const hidden = isHidden(mounted, props.hidden, alwaysVisible);
    const styleProp = props.style;
    const style = (0, import_react69.useMemo)(() => {
      if (hidden) return {
        ...styleProp,
        display: "none"
      };
      return styleProp;
    }, [hidden, styleProp]);
    props = {
      "data-open": open3 || void 0,
      "data-enter": transition === "enter" || void 0,
      "data-leave": transition === "leave" || void 0,
      hidden,
      ...props,
      id,
      ref: useMergeRefs6(id ? store4.setContentElement : null, ref, props.ref),
      style
    };
    return removeUndefinedValues(props);
  });
  var DisclosureContentImpl = forwardRef165(function DisclosureContentImpl2(props) {
    const htmlProps = useDisclosureContent(props);
    return createElement5(TagName6, htmlProps);
  });
  var DisclosureContent = forwardRef165(function DisclosureContent2({ unmountOnHide, ...props }) {
    const context = useDisclosureProviderContext();
    const store4 = props.store || context;
    if (useStoreState(store4, ["mounted"], (state2) => !unmountOnHide || state2?.mounted) === false) return null;
    return /* @__PURE__ */ (0, import_jsx_runtime309.jsx)(DisclosureContentImpl, { ...props });
  });

  // node_modules/@ariakit/components/dist/disclosure/disclosure-store.js
  function createDisclosureStore(props = {}) {
    const store4 = props.store || props.disclosure ? mergeStore(props.store, omit2(props.disclosure, ["contentElement", "disclosureElement"])) : void 0;
    throwOnConflictingProps(props, store4);
    const syncState = store4?.getState();
    const open3 = defaultValue(props.open, syncState?.open, props.defaultOpen, false);
    const animated2 = defaultValue(props.animated, syncState?.animated, false);
    const initialState = {
      open: open3,
      animated: animated2,
      animating: !!animated2 && open3,
      mounted: open3,
      contentElement: defaultValue(syncState?.contentElement, null),
      disclosureElement: defaultValue(syncState?.disclosureElement, null)
    };
    const disclosure = store4 ? createStore(initialState, store4) : createStore(initialState);
    setup(disclosure, () => sync2(disclosure, ["animated", "animating"], (state2) => {
      if (state2.animated) return;
      disclosure.setState("animating", false);
    }));
    setup(disclosure, () => subscribe2(disclosure, ["open"], () => {
      if (!disclosure.getState().animated) return;
      disclosure.setState("animating", true);
    }));
    setup(disclosure, () => sync2(disclosure, ["open", "animating"], (state2) => {
      disclosure.setState("mounted", state2.open || state2.animating);
    }));
    return {
      ...disclosure,
      disclosure: props.disclosure,
      setOpen: (value) => disclosure.setState("open", value),
      show: () => disclosure.setState("open", true),
      hide: () => disclosure.setState("open", false),
      toggle: () => disclosure.setState("open", (open4) => !open4),
      stopAnimation: () => disclosure.setState("animating", false),
      setContentElement: (value) => disclosure.setState("contentElement", value),
      setDisclosureElement: (value) => disclosure.setState("disclosureElement", value)
    };
  }

  // node_modules/@ariakit/react-components/dist/disclosure/disclosure-store.js
  function useDisclosureStoreProps(store4, update4, props) {
    useUpdateEffect(update4, [
      props.store,
      props.disclosure,
      update4
    ]);
    useStoreProps(store4, props, "open", "setOpen");
    useStoreProps(store4, props, "mounted", "setMounted");
    useStoreProps(store4, props, "animated");
    return Object.assign(store4, { disclosure: props.disclosure });
  }

  // node_modules/@ariakit/react-components/dist/popover/popover-context.js
  var ctx6 = createStoreContext([DialogContextProvider], [DialogScopedContextProvider]);
  var usePopoverContext = ctx6.useContext;
  var usePopoverScopedContext = ctx6.useScopedContext;
  var usePopoverProviderContext = ctx6.useProviderContext;
  var PopoverContextProvider = ctx6.ContextProvider;
  var PopoverScopedContextProvider = ctx6.ScopedContextProvider;

  // node_modules/@ariakit/react-components/dist/combobox/combobox-context.js
  var import_react70 = __toESM(require_react(), 1);
  var ComboboxListRoleContext = (0, import_react70.createContext)(null);
  var ctx7 = createStoreContext([PopoverContextProvider, CompositeContextProvider], [PopoverScopedContextProvider, CompositeScopedContextProvider]);
  var useComboboxContext = ctx7.useContext;
  var useComboboxScopedContext = ctx7.useScopedContext;
  var useComboboxProviderContext = ctx7.useProviderContext;
  var ComboboxContextProvider = ctx7.ContextProvider;
  var ComboboxScopedContextProvider = ctx7.ScopedContextProvider;
  var ComboboxItemValueContext = (0, import_react70.createContext)(void 0);
  var ComboboxItemCheckedContext = (0, import_react70.createContext)(false);
  var ComboboxHeadingContext = (0, import_react70.createContext)(null);

  // node_modules/@ariakit/react-components/dist/collection/collection-store.js
  function useCollectionStoreProps(store4, update4, props) {
    useUpdateEffect(update4, [props.store, update4]);
    useStoreProps(store4, props, "items", "setItems");
    return store4;
  }

  // node_modules/@ariakit/react-components/dist/composite/composite-store.js
  function useCompositeStoreOptions(props) {
    return {
      id: useId8(props.id),
      ...props
    };
  }
  function useCompositeStoreProps(store4, update4, props) {
    store4 = useCollectionStoreProps(store4, update4, props);
    getMoveRequest(store4);
    useStoreProps(store4, props, "activeId", "setActiveId");
    const focusOrderProps = { compositeElementInFocusOrder: props.compositeElementInFocusOrder ?? props.includesBaseElement };
    useStoreProps(store4, focusOrderProps, "compositeElementInFocusOrder");
    useStoreProps(store4, props, "virtualFocus");
    useStoreProps(store4, props, "orientation");
    useStoreProps(store4, props, "rtl");
    useStoreProps(store4, props, "focusLoop");
    useStoreProps(store4, props, "focusWrap");
    useStoreProps(store4, props, "focusShift");
    return store4;
  }

  // node_modules/@ariakit/components/dist/dialog/dialog-store.js
  function createDialogStore(props = {}) {
    return createDisclosureStore(props);
  }

  // node_modules/@ariakit/react-components/dist/dialog/dialog-store.js
  function useDialogStoreProps(store4, update4, props) {
    return useDisclosureStoreProps(store4, update4, props);
  }

  // node_modules/@ariakit/components/dist/popover/popover-store.js
  function createPopoverStore({ popover: otherPopover, ...props } = {}) {
    const store4 = mergeStore(props.store, omit2(otherPopover, [
      "arrowElement",
      "anchorElement",
      "contentElement",
      "popoverElement",
      "disclosureElement",
      "unstable_placing"
    ]));
    throwOnConflictingProps(props, store4);
    const syncState = store4?.getState();
    const dialog = createDialogStore({
      ...props,
      store: store4
    });
    const placement = defaultValue(props.placement, syncState?.placement, "bottom");
    const initialState = {
      ...dialog.getState(),
      placement,
      currentPlacement: placement,
      anchorElement: defaultValue(syncState?.anchorElement, null),
      popoverElement: defaultValue(syncState?.popoverElement, null),
      arrowElement: defaultValue(syncState?.arrowElement, null),
      rendered: /* @__PURE__ */ Symbol("rendered"),
      unstable_placing: false
    };
    const popover = createStore(initialState, dialog, store4);
    let syncedAnchorElement = initialState.anchorElement === initialState.disclosureElement ? initialState.anchorElement : null;
    setup(popover, () => sync2(popover, ["anchorElement", "disclosureElement"], (state2) => {
      if (state2.anchorElement && state2.anchorElement !== syncedAnchorElement) {
        syncedAnchorElement = null;
        return;
      }
      syncedAnchorElement = state2.disclosureElement;
      popover.setState("anchorElement", syncedAnchorElement);
    }));
    return {
      ...dialog,
      ...popover,
      setAnchorElement: (element) => popover.setState("anchorElement", element),
      setPopoverElement: (element) => popover.setState("popoverElement", element),
      setArrowElement: (element) => popover.setState("arrowElement", element),
      render: () => popover.setState("rendered", /* @__PURE__ */ Symbol("rendered"))
    };
  }

  // node_modules/@ariakit/react-components/dist/popover/popover-store.js
  function usePopoverStoreProps(store4, update4, props) {
    useUpdateEffect(update4, [props.popover, update4]);
    useStoreProps(store4, props, "placement");
    return useDialogStoreProps(store4, update4, props);
  }

  // node_modules/@ariakit/react-components/dist/composite/composite-hover.js
  var import_react71 = __toESM(require_react(), 1);
  var TagName7 = "div";
  function hoveringInside(event) {
    const nextElement = event.relatedTarget;
    if (!isElement2(nextElement)) return false;
    return contains2(event.currentTarget, nextElement);
  }
  var symbol2 = /* @__PURE__ */ Symbol("composite-hover");
  function movingToAnotherItem(event) {
    const { relatedTarget } = event;
    if (!isElement2(relatedTarget)) return false;
    let dest = relatedTarget;
    do {
      if (hasOwnProperty(dest, symbol2) && dest[symbol2]) return true;
      dest = dest.parentElement;
    } while (dest);
    return false;
  }
  var useCompositeHover = createHook(function useCompositeHover2({ store: store4, focusOnHover = true, blurOnHoverEnd = !!focusOnHover, ...props }) {
    const context = useCompositeScopedContext();
    store4 = store4 || context;
    invariant(store4, "CompositeHover must be wrapped in a Composite component.");
    const isMouseMoving = useIsMouseMoving();
    const onMouseMoveProp = props.onMouseMove;
    const focusOnHoverProp = useBooleanEvent(focusOnHover);
    const onMouseMove = useEvent3((event) => {
      onMouseMoveProp?.(event);
      if (event.defaultPrevented) return;
      if (!isMouseMoving()) return;
      if (!focusOnHoverProp(event)) return;
      if (!hasFocusWithin(event.currentTarget)) {
        const compositeElement = store4?.getState().compositeElement;
        if (compositeElement && !hasFocus(compositeElement)) compositeElement.focus({ preventScroll: true });
      }
      store4?.setActiveId(event.currentTarget.id);
    });
    const onMouseLeaveProp = props.onMouseLeave;
    const blurOnHoverEndProp = useBooleanEvent(blurOnHoverEnd);
    const onMouseLeave = useEvent3((event) => {
      onMouseLeaveProp?.(event);
      if (event.defaultPrevented) return;
      if (!isMouseMoving()) return;
      if (hoveringInside(event)) return;
      if (movingToAnotherItem(event)) return;
      if (!focusOnHoverProp(event)) return;
      if (!blurOnHoverEndProp(event)) return;
      store4?.setActiveId(null);
      store4?.getState().compositeElement?.focus({ preventScroll: true });
    });
    const ref = (0, import_react71.useCallback)((element) => {
      if (!element) return;
      element[symbol2] = true;
    }, []);
    props = {
      ...props,
      ref: useMergeRefs6(ref, props.ref),
      onMouseMove,
      onMouseLeave
    };
    return props;
  });
  var CompositeHover = memo7(forwardRef165(function CompositeHover2(props) {
    const htmlProps = useCompositeHover(props);
    return createElement5(TagName7, htmlProps);
  }));

  // node_modules/@ariakit/react-components/dist/__chunks/DAieEu03.js
  var openingMovesByStore = /* @__PURE__ */ new WeakMap();
  var scrollItemIntoViewByStore = /* @__PURE__ */ new WeakMap();
  function scrollIntoViewNearest(element) {
    element.scrollIntoView({
      block: "nearest",
      inline: "nearest"
    });
  }
  function getSingleVerticalScrollport(element, popup) {
    const view = getWindow2(element);
    if (!view.getComputedStyle(popup).writingMode.startsWith("horizontal")) return null;
    let scrollport = null;
    let inlineScrollport = null;
    let current = element.parentElement;
    while (current && popup.contains(current)) {
      const style = view.getComputedStyle(current);
      if (style.overflowY !== "visible" && style.overflowY !== "clip" && current.scrollHeight > current.clientHeight) {
        if (scrollport) return null;
        scrollport = current;
      }
      if (style.overflowX !== "visible" && style.overflowX !== "clip" && current.scrollWidth > current.clientWidth) {
        if (inlineScrollport) return null;
        inlineScrollport = current;
      }
      if (current === popup) break;
      current = current.parentElement;
    }
    if (inlineScrollport && inlineScrollport !== scrollport) return null;
    return scrollport;
  }
  function centerItemInScrollport(element, scrollport) {
    const elementRect = element.getBoundingClientRect();
    const scrollportRect = scrollport.getBoundingClientRect();
    const scaleX = scrollportRect.width / scrollport.offsetWidth || 1;
    const scrollportLeft = scrollportRect.left + scrollport.clientLeft * scaleX;
    const scrollportRight = scrollportLeft + scrollport.clientWidth * scaleX;
    const scrollportWidth = scrollport.clientWidth * scaleX;
    const elementLeftOutside = elementRect.left < scrollportLeft;
    const elementRightOutside = elementRect.right > scrollportRight;
    const alignLeft = elementLeftOutside && !elementRightOutside && elementRect.width < scrollportWidth || elementRightOutside && !elementLeftOutside && elementRect.width > scrollportWidth;
    const alignRight = elementLeftOutside && !elementRightOutside && elementRect.width > scrollportWidth || elementRightOutside && !elementLeftOutside && elementRect.width < scrollportWidth;
    let left = 0;
    if (alignLeft) left = (elementRect.left - scrollportLeft) / scaleX;
    else if (alignRight) left = (elementRect.right - scrollportRight) / scaleX;
    const scaleY = scrollportRect.height / scrollport.offsetHeight || 1;
    const top = (elementRect.top + elementRect.height / 2 - (scrollportRect.top + (scrollport.clientTop + scrollport.clientHeight / 2) * scaleY)) / scaleY;
    scrollport.scrollBy({
      left,
      top
    });
  }
  function getScrollItemIntoView(store4) {
    if (!store4) return scrollIntoViewNearest;
    const cached = scrollItemIntoViewByStore.get(store4);
    if (cached) return cached;
    const scrollItemIntoView = (element) => {
      const { contentElement, moves, selectElement } = store4.getState();
      if (!selectElement) return scrollIntoViewNearest(element);
      if (moves !== openingMovesByStore.get(store4)) return scrollIntoViewNearest(element);
      if (!contentElement?.contains(element)) return scrollIntoViewNearest(element);
      const scrollport = getSingleVerticalScrollport(element, contentElement);
      if (!scrollport) return scrollIntoViewNearest(element);
      centerItemInScrollport(element, scrollport);
    };
    scrollItemIntoViewByStore.set(store4, scrollItemIntoView);
    return scrollItemIntoView;
  }

  // node_modules/@ariakit/react-components/dist/combobox/combobox.js
  var import_react72 = __toESM(require_react(), 1);
  var import_jsx_runtime310 = __toESM(require_jsx_runtime(), 1);
  var TagName8 = "input";
  function isFirstItemAutoSelected(items, activeValue, autoSelect) {
    if (!autoSelect) return false;
    return items.find((item) => !item.disabled && item.value)?.value === activeValue;
  }
  function hasCompletionString(value, activeValue) {
    if (!activeValue) return false;
    if (value == null) return false;
    const normalizedValue = normalizeString(value);
    const normalizedActiveValue = normalizeString(activeValue);
    if (normalizedValue.length !== value.length) return false;
    if (normalizedActiveValue.length !== activeValue.length) return false;
    return normalizedActiveValue.length > normalizedValue.length && normalizedActiveValue.toLowerCase().startsWith(normalizedValue.toLowerCase());
  }
  function isAriaAutoCompleteValue(value) {
    return value === "inline" || value === "list" || value === "both" || value === "none";
  }
  function getDefaultAutoSelectId(items) {
    return items.find((item) => {
      if (item.disabled) return false;
      return item.element?.getAttribute("role") !== "tab";
    })?.id;
  }
  var useCombobox = createHook(function useCombobox2({ store: store4, focusable: focusable2 = true, autoSelect: autoSelectProp = false, getAutoSelectId, setValueOnChange, showMinLength = 0, showOnChange, showOnMouseDown, showOnClick = showOnMouseDown, showOnKeyDown, showOnKeyPress = showOnKeyDown, blurActiveItemOnClick, setValueOnClick = true, moveOnKeyPress = true, autoComplete = "list", name: name2, form, disabled: disabled2, ...props }) {
    const scopedContext = useComboboxScopedContext(true);
    const context = useComboboxProviderContext();
    store4 = store4 || context || scopedContext;
    invariant(store4, "Combobox must receive a `store` prop or be wrapped in a ComboboxProvider component.");
    const ref = (0, import_react72.useRef)(null);
    const [valueUpdated, forceValueUpdate] = useForceUpdate2();
    const canAutoSelectRef = (0, import_react72.useRef)(false);
    const composingRef = (0, import_react72.useRef)(false);
    const compositionEndFrameRef = (0, import_react72.useRef)(null);
    const cancelCompositionEndFrame = () => {
      const frame = compositionEndFrameRef.current;
      if (frame == null) return;
      cancelAnimationFrame(frame);
      compositionEndFrameRef.current = null;
    };
    const autoSelect = useStoreState(store4, ["virtualFocus"], (state2) => state2.virtualFocus && autoSelectProp);
    const inline4 = autoComplete === "inline" || autoComplete === "both";
    const [canInline, setCanInline] = (0, import_react72.useState)(inline4);
    useUpdateLayoutEffect(() => {
      if (!inline4) return;
      setCanInline(true);
    }, [inline4]);
    const storeInputValue = useStoreState(store4, "inputValue");
    const selectedValue = useStoreState(store4, ["selectedValue"], (state2) => {
      if (!name2) return;
      if (!Array.isArray(state2.selectedValue)) return;
      return state2.selectedValue;
    });
    const multiSelectable = Array.isArray(selectedValue);
    const prevSelectedValueRef = (0, import_react72.useRef)(void 0);
    (0, import_react72.useEffect)(() => {
      return sync2(store4, ["selectedValue", "activeId"], (_, prev) => {
        prevSelectedValueRef.current = prev.selectedValue;
      });
    }, [store4]);
    const inlineActiveValue = useStoreState(store4, [
      "activeValue",
      "selectedValue",
      "activeId"
    ], (state2) => {
      if (!inline4) return;
      if (!canInline) return;
      if (state2.activeValue && Array.isArray(state2.selectedValue)) {
        if (state2.selectedValue.includes(state2.activeValue)) return;
        if (prevSelectedValueRef.current?.includes(state2.activeValue)) return;
      }
      return state2.activeValue;
    });
    const items = useStoreState(store4, "renderedItems");
    const open3 = useStoreState(store4, "open");
    const contentElement = useStoreState(store4, "contentElement");
    const placing = useStoreState(store4, "unstable_placing");
    const firstItemAutoSelected = isFirstItemAutoSelected(items, inlineActiveValue, autoSelect);
    const inputValue = (0, import_react72.useMemo)(() => {
      if (!inline4) return storeInputValue;
      if (!canInline) return storeInputValue;
      if (firstItemAutoSelected) {
        if (hasCompletionString(storeInputValue, inlineActiveValue)) {
          const slice2 = inlineActiveValue?.slice(storeInputValue.length) || "";
          return storeInputValue + slice2;
        }
        return storeInputValue;
      }
      return inlineActiveValue || storeInputValue;
    }, [
      inline4,
      canInline,
      firstItemAutoSelected,
      inlineActiveValue,
      storeInputValue
    ]);
    (0, import_react72.useEffect)(() => {
      const element = ref.current;
      if (!element) return;
      const onCompositeItemMove = () => setCanInline(true);
      element.addEventListener("combobox-item-move", onCompositeItemMove);
      return () => {
        element.removeEventListener("combobox-item-move", onCompositeItemMove);
      };
    }, []);
    (0, import_react72.useEffect)(() => {
      if (!inline4) return;
      if (!canInline) return;
      if (!inlineActiveValue) return;
      if (!firstItemAutoSelected) return;
      if (!hasCompletionString(storeInputValue, inlineActiveValue)) return;
      let cleanup = noop5;
      queueMicrotask(() => {
        const element = ref.current;
        if (!element) return;
        const { start: prevStart, end: prevEnd } = getTextboxSelection(element);
        const nextStart = storeInputValue.length;
        const nextEnd = inlineActiveValue.length;
        setSelectionRange(element, nextStart, nextEnd);
        cleanup = () => {
          if (!hasFocus(element)) return;
          const { start: start2, end } = getTextboxSelection(element);
          if (start2 !== nextStart) return;
          if (end !== nextEnd) return;
          setSelectionRange(element, prevStart, prevEnd);
        };
      });
      return () => cleanup();
    }, [
      valueUpdated,
      inline4,
      canInline,
      inlineActiveValue,
      firstItemAutoSelected,
      storeInputValue
    ]);
    const getAutoSelectIdProp = useEvent3(getAutoSelectId);
    const autoSelectIdRef = (0, import_react72.useRef)(null);
    const autoSelectMovedRef = (0, import_react72.useRef)(void 0);
    const userScrolledRef = (0, import_react72.useRef)(false);
    const isAutoScrollingRef = (0, import_react72.useRef)(false);
    (0, import_react72.useEffect)(() => {
      if (!open3) return;
      if (!contentElement) return;
      const scrollingElement = getScrollingElement(contentElement);
      if (!scrollingElement) return;
      const onUserScroll = () => {
        canAutoSelectRef.current = false;
        userScrolledRef.current = true;
      };
      const onScroll = () => {
        if (!isAutoScrollingRef.current) userScrolledRef.current = true;
        if (!store4) return;
        if (!canAutoSelectRef.current) return;
        const { activeId } = store4.getState();
        if (activeId === null) return;
        if (activeId === autoSelectIdRef.current) return;
        canAutoSelectRef.current = false;
      };
      const options = {
        passive: true,
        capture: true
      };
      scrollingElement.addEventListener("wheel", onUserScroll, options);
      scrollingElement.addEventListener("touchmove", onUserScroll, options);
      scrollingElement.addEventListener("scroll", onScroll, options);
      return () => {
        scrollingElement.removeEventListener("wheel", onUserScroll, true);
        scrollingElement.removeEventListener("touchmove", onUserScroll, true);
        scrollingElement.removeEventListener("scroll", onScroll, true);
      };
    }, [
      open3,
      contentElement,
      store4
    ]);
    useSafeLayoutEffect(() => {
      userScrolledRef.current = false;
      if (!storeInputValue) return;
      if (composingRef.current) return;
      canAutoSelectRef.current = true;
    }, [storeInputValue]);
    useSafeLayoutEffect(() => {
      if (autoSelect !== "always" && open3) return;
      canAutoSelectRef.current = open3;
    }, [autoSelect, open3]);
    useSafeLayoutEffect(() => {
      if (open3) return;
      autoSelectMovedRef.current = void 0;
    }, [open3]);
    const resetValueOnSelect = useStoreState(store4, "resetValueOnSelect");
    useUpdateEffect(() => {
      const canAutoSelect = canAutoSelectRef.current;
      if (!store4) return;
      if (!open3) return;
      if (composingRef.current) return;
      if (!canAutoSelect && (!resetValueOnSelect || userScrolledRef.current)) return;
      const state2 = store4.getState();
      const { compositeElement: compositeElement2, activeId, selectElement, selectedValue: selectedValue2 } = state2;
      if (compositeElement2 && !hasFocus(compositeElement2)) return;
      if (state2.unstable_placing) return;
      const activeValue = store4.item(activeId)?.value;
      const activeValueSelected = activeValue != null && (Array.isArray(selectedValue2) ? selectedValue2.includes(activeValue) : selectedValue2 === activeValue);
      if (autoSelect && canAutoSelect && !(!!selectElement && !storeInputValue && activeValueSelected)) {
        const userAutoSelectId = getAutoSelectIdProp(items);
        const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : getDefaultAutoSelectId(items) ?? store4.first();
        autoSelectIdRef.current = autoSelectId;
        const nextActiveId = autoSelectId ?? null;
        const nextActiveValue = store4.item(nextActiveId)?.value;
        const moved = autoSelectMovedRef.current;
        if (nextActiveId !== activeId || moved?.id !== nextActiveId || moved?.value !== nextActiveValue) {
          autoSelectMovedRef.current = {
            id: nextActiveId,
            value: nextActiveValue
          };
          store4.move(nextActiveId);
        } else store4.setState("activeValue", nextActiveValue);
      } else {
        const element = store4.item(activeId || store4.first())?.element;
        if (element && "scrollIntoView" in element) {
          isAutoScrollingRef.current = true;
          element.scrollIntoView({
            block: "nearest",
            inline: "nearest"
          });
          requestAnimationFrame(() => {
            isAutoScrollingRef.current = false;
          });
        }
      }
    }, [
      store4,
      open3,
      placing,
      valueUpdated,
      storeInputValue,
      autoSelect,
      resetValueOnSelect,
      getAutoSelectIdProp,
      items
    ]);
    (0, import_react72.useEffect)(() => {
      if (!inline4) return;
      const combobox = ref.current;
      if (!combobox) return;
      const elements2 = [combobox, contentElement].filter((value) => !!value);
      const onBlur2 = (event) => {
        if (elements2.every((el) => isFocusEventOutside(event, el))) store4?.setInputValue(inputValue);
      };
      for (const element of elements2) element.addEventListener("focusout", onBlur2);
      return () => {
        for (const element of elements2) element.removeEventListener("focusout", onBlur2);
      };
    }, [
      inline4,
      contentElement,
      store4,
      inputValue
    ]);
    const canShow = (event) => {
      return event.currentTarget.value.length >= showMinLength;
    };
    const onChangeProp = props.onChange;
    const showOnChangeProp = useBooleanEvent(showOnChange ?? canShow);
    const setValueOnChangeProp = useBooleanEvent(setValueOnChange ?? !store4.tag);
    const onChange = useEvent3((event) => {
      onChangeProp?.(event);
      if (event.defaultPrevented) return;
      if (!store4) return;
      const currentTarget = event.currentTarget;
      const { value, selectionStart, selectionEnd } = currentTarget;
      const nativeEvent = event.nativeEvent;
      canAutoSelectRef.current = true;
      if (isInputEvent(nativeEvent)) {
        if (nativeEvent.isComposing) {
          canAutoSelectRef.current = false;
          composingRef.current = true;
        }
        if (inline4) {
          const textInserted = nativeEvent.inputType === "insertText" || nativeEvent.inputType === "insertCompositionText";
          const caretAtEnd = selectionStart === value.length;
          setCanInline(textInserted && caretAtEnd);
        }
      }
      if (setValueOnChangeProp(event)) {
        const isSameValue3 = value === store4.getState().inputValue;
        store4.setInputValue(value);
        queueMicrotask(() => {
          setSelectionRange(currentTarget, selectionStart, selectionEnd);
        });
        if (inline4 && autoSelect && isSameValue3) forceValueUpdate();
      }
      if (showOnChangeProp(event)) store4.show();
      if (!autoSelect || !canAutoSelectRef.current) store4.setActiveId(null);
    });
    (0, import_react72.useEffect)(() => cancelCompositionEndFrame, []);
    const onCompositionStartProp = props.onCompositionStart;
    const onCompositionStart = useEvent3((event) => {
      cancelCompositionEndFrame();
      canAutoSelectRef.current = false;
      composingRef.current = true;
      onCompositionStartProp?.(event);
    });
    const onCompositionEndProp = props.onCompositionEnd;
    const onCompositionEnd = useEvent3((event) => {
      canAutoSelectRef.current = true;
      composingRef.current = false;
      onCompositionEndProp?.(event);
      if (event.defaultPrevented) return;
      if (!autoSelect) return;
      cancelCompositionEndFrame();
      compositionEndFrameRef.current = requestAnimationFrame(() => {
        compositionEndFrameRef.current = null;
        if (composingRef.current) return;
        forceValueUpdate();
      });
    });
    const onMouseDownProp = props.onMouseDown;
    const blurActiveItemOnClickProp = useBooleanEvent(blurActiveItemOnClick ?? (() => store4.getState().compositeElementInFocusOrder));
    const setValueOnClickProp = useBooleanEvent(setValueOnClick);
    const showOnClickProp = useBooleanEvent(showOnClick ?? canShow);
    const onMouseDown = useEvent3((event) => {
      onMouseDownProp?.(event);
      if (event.defaultPrevented) return;
      if (event.button) return;
      if (event.ctrlKey) return;
      if (!store4) return;
      if (blurActiveItemOnClickProp(event)) store4.setActiveId(null);
      if (setValueOnClickProp(event)) store4.setInputValue(inputValue);
      if (showOnClickProp(event)) queueBeforeEvent(event.currentTarget, "mouseup", store4.show);
    });
    const onKeyDownProp = props.onKeyDown;
    const showOnKeyPressProp = useBooleanEvent(showOnKeyPress ?? canShow);
    const onKeyDown = useEvent3((event) => {
      onKeyDownProp?.(event);
      if (!event.repeat) canAutoSelectRef.current = false;
      if (event.defaultPrevented) return;
      if (!store4) return;
      const { open: open4 } = store4.getState();
      if (open4 && event.key === "Enter") {
        event.preventDefault();
        return;
      }
      if (event.ctrlKey) return;
      if (event.altKey) return;
      if (event.shiftKey) return;
      if (event.metaKey) return;
      if (open4) return;
      if (event.key === "ArrowUp" || event.key === "ArrowDown") {
        if (showOnKeyPressProp(event)) {
          event.preventDefault();
          store4.show();
        }
      }
    });
    const onBlurProp = props.onBlur;
    const onBlur = useEvent3((event) => {
      canAutoSelectRef.current = false;
      onBlurProp?.(event);
    });
    const id = useId8(props.id);
    const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0;
    const isActiveItem = useStoreState(store4, ["activeId"], (state2) => state2.activeId === null);
    const formDisabled = disabledFromProps({
      disabled: disabled2,
      "aria-disabled": props["aria-disabled"]
    });
    const composite = props.composite !== false;
    const [, setCompositeElement] = useTransactionState(composite ? null : store4.setCompositeElement);
    const compositeElement = useStoreState(store4, multiSelectable ? ["compositeElement"] : [], (state2) => multiSelectable ? state2.compositeElement : null);
    props = useWrapElement(props, (element) => {
      if (!name2) return element;
      if (!Array.isArray(selectedValue)) return element;
      if (composite && !compositeElement) return element;
      return /* @__PURE__ */ (0, import_jsx_runtime310.jsxs)(import_jsx_runtime310.Fragment, { children: [element, selectedValue.map((value, index3) => /* @__PURE__ */ (0, import_jsx_runtime310.jsx)("input", {
        type: "hidden",
        name: name2,
        form,
        disabled: formDisabled,
        value
      }, index3))] });
    }, [
      name2,
      form,
      formDisabled,
      composite,
      compositeElement,
      selectedValue
    ]);
    props = {
      role: "combobox",
      "aria-autocomplete": ariaAutoComplete,
      "aria-haspopup": getPopupRole(contentElement, "listbox"),
      "aria-expanded": open3,
      "aria-controls": contentElement?.id,
      "data-active-item": isActiveItem || void 0,
      value: inputValue,
      ...props,
      id,
      name: multiSelectable ? void 0 : name2,
      form,
      disabled: disabled2,
      ref: useMergeRefs6(ref, store4.setInputElement, composite ? void 0 : setCompositeElement, props.ref),
      onChange,
      onCompositionStart,
      onCompositionEnd,
      onMouseDown,
      onKeyDown,
      onBlur
    };
    const scrollItemIntoView = getScrollItemIntoView(store4);
    props = useComposite({
      store: store4,
      unstable_scrollIntoView: scrollItemIntoView,
      focusable: focusable2,
      ...props,
      moveOnKeyPress: (event) => {
        if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false;
        if (inline4) setCanInline(true);
        return true;
      }
    });
    return {
      autoComplete: "off",
      ...props
    };
  });
  var Combobox = forwardRef165(function Combobox2(props) {
    const htmlProps = useCombobox(props);
    return createElement5(TagName8, htmlProps);
  });

  // node_modules/@ariakit/react-components/dist/combobox/combobox-item.js
  var import_react73 = __toESM(require_react(), 1);
  var import_jsx_runtime311 = __toESM(require_jsx_runtime(), 1);
  var TagName9 = "div";
  function isSelected(storeValue, itemValue) {
    if (itemValue == null) return;
    if (storeValue == null) return false;
    if (Array.isArray(storeValue)) return storeValue.includes(itemValue);
    return storeValue === itemValue;
  }
  function getItemRole(popupRole) {
    return getItemRoleByPopupRole(popupRole) ?? "option";
  }
  var useComboboxItem = createHook(function useComboboxItem2({ store: store4, value, hideOnClick, setValueOnClick, selectValueOnClick = true, resetValueOnSelect, focusOnHover, moveOnKeyPress = true, preventScrollOnKeyDown, getItem: getItemProp, ...props }) {
    const context = useComboboxScopedContext();
    store4 = store4 || context;
    invariant(store4, "ComboboxItem must be wrapped in a ComboboxList or ComboboxPopover component.");
    const id = useId8(props.id);
    const listRole = (0, import_react73.useContext)(ComboboxListRoleContext);
    const listRoleMatchesStore = listRole?.store === store4;
    const { resetValueOnSelectState, multiSelectable, selected, autoFocusSelected, selectElement, contentElement } = useStoreStateObject(store4, ["selectedValue"], {
      resetValueOnSelectState: "resetValueOnSelect",
      multiSelectable(state2) {
        return Array.isArray(state2.selectedValue);
      },
      selected(state2) {
        return isSelected(state2.selectedValue, value);
      },
      autoFocusSelected(state2) {
        if (value == null) return false;
        if (!Array.isArray(state2.selectedValue)) return state2.selectedValue === value;
        return state2.selectedValue[state2.selectedValue.length - 1] === value;
      },
      selectElement: "selectElement",
      contentElement: "contentElement"
    });
    const autoFocusSelectedItem = !!selectElement;
    const selectMode = !!selectElement;
    const disabled2 = disabledFromProps(props);
    const getItem = (0, import_react73.useCallback)((item) => {
      const nextItem = {
        ...item,
        value: selectMode && disabled2 ? void 0 : value
      };
      if (getItemProp) return getItemProp(nextItem);
      return nextItem;
    }, [
      selectMode,
      disabled2,
      value,
      getItemProp
    ]);
    setValueOnClick = setValueOnClick ?? (!selectMode && !multiSelectable);
    hideOnClick = hideOnClick ?? (value != null && !multiSelectable);
    preventScrollOnKeyDown = preventScrollOnKeyDown ?? selectMode;
    const popupRole = listRoleMatchesStore ? listRole?.role : getPopupRole(contentElement);
    const role = getItemRole(typeof popupRole === "string" ? popupRole : void 0);
    const onClickProp = props.onClick;
    const setValueOnClickProp = useBooleanEvent(setValueOnClick);
    const selectValueOnClickProp = useBooleanEvent(selectValueOnClick);
    const resetValueOnSelectProp = useBooleanEvent(resetValueOnSelect ?? resetValueOnSelectState);
    const hideOnClickProp = useBooleanEvent(hideOnClick);
    const onClick = useEvent3((event) => {
      onClickProp?.(event);
      if (event.defaultPrevented) return;
      if (isDownloading(event)) return;
      if (isOpeningInNewTab(event)) return;
      if (value != null) {
        if (selectValueOnClickProp(event)) {
          if (resetValueOnSelectProp(event)) store4?.resetInputValue();
          store4?.setSelectedValue((prevValue) => {
            if (!Array.isArray(prevValue)) return value;
            if (prevValue.includes(value)) return prevValue.filter((v3) => v3 !== value);
            return [...prevValue, value];
          });
        }
        if (setValueOnClickProp(event)) store4?.setInputValue(value);
      }
      if (hideOnClickProp(event)) store4?.hide();
    });
    const onKeyDownProp = props.onKeyDown;
    const onKeyDown = useEvent3((event) => {
      onKeyDownProp?.(event);
      if (event.defaultPrevented) return;
      const compositeElement = store4?.getState().compositeElement;
      if (!compositeElement) return;
      if (hasFocus(compositeElement)) return;
      const printable = event.key.length === 1 && !event.ctrlKey && !event.metaKey;
      const paste = (!isApple() ? event.ctrlKey : event.metaKey) && event.key.toLowerCase() === "v";
      const deleteKey = event.key === "Backspace" || event.key === "Delete";
      if (printable || paste || deleteKey) {
        if (compositeElement === selectElement) return;
        if (isTextField(compositeElement)) {
          queueMicrotask(() => compositeElement.focus());
          store4?.setInputValue(compositeElement.value);
          return;
        }
        compositeElement.focus();
        if ("value" in compositeElement && typeof compositeElement.value === "string") store4?.setInputValue(compositeElement.value);
      }
    });
    if ((selectMode || multiSelectable) && selected != null) props = {
      "aria-selected": selected,
      ...props
    };
    props = useWrapElement(props, (element) => /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(ComboboxItemValueContext.Provider, {
      value,
      children: /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(ComboboxItemCheckedContext.Provider, {
        value: selected ?? false,
        children: element
      })
    }), [value, selected]);
    const defaultAutoFocus = autoFocusSelectedItem ? autoFocusSelected : void 0;
    props = {
      role,
      children: value,
      ...props,
      id,
      onClick,
      onKeyDown
    };
    if (props.autoFocus === void 0 && defaultAutoFocus !== void 0) {
      props.autoFocus = false;
      props["data-autofocus"] = defaultAutoFocus || void 0;
    }
    const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);
    const scrollItemIntoView = getScrollItemIntoView(store4);
    props = useCompositeItem2({
      store: store4,
      unstable_scrollIntoView: scrollItemIntoView,
      ...props,
      getItem,
      preventScrollOnKeyDown,
      moveOnKeyPress: (event) => {
        if (!moveOnKeyPressProp(event)) return false;
        const moveEvent = new Event("combobox-item-move");
        store4?.getState().compositeElement?.dispatchEvent(moveEvent);
        return true;
      }
    });
    const focusOnHoverProp = useBooleanEvent(focusOnHover ?? selectMode);
    props = useCompositeHover({
      store: store4,
      ...props,
      focusOnHover(event) {
        if (!store4.getState().open) return false;
        if (!focusOnHoverProp(event)) return false;
        return store4.getState().open;
      }
    });
    return props;
  });
  var ComboboxItem3 = memo7(forwardRef165(function ComboboxItem4(props) {
    const htmlProps = useComboboxItem(props);
    return createElement5(TagName9, htmlProps);
  }));

  // node_modules/@ariakit/react-components/dist/combobox/combobox-item-value.js
  var import_react74 = __toESM(require_react(), 1);
  var import_jsx_runtime312 = __toESM(require_jsx_runtime(), 1);
  var TagName10 = "span";
  function normalizeValue2(value) {
    return normalizeString(value).toLowerCase();
  }
  function getOffsets(string, values) {
    const offsets = [];
    for (const value of values) {
      if (!value) continue;
      let pos = 0;
      const length2 = value.length;
      let index3 = string.indexOf(value, pos);
      while (index3 !== -1) {
        offsets.push([index3, length2]);
        pos = index3 + 1;
        index3 = string.indexOf(value, pos);
      }
    }
    return offsets;
  }
  function mergeOverlappingOffsets(offsets) {
    offsets.sort(([a2], [b2]) => a2 - b2);
    const merged = [];
    for (const [offset4, length2] of offsets) {
      const last = merged[merged.length - 1];
      if (last && offset4 < last[0] + last[1]) last[1] = Math.max(last[1], offset4 + length2 - last[0]);
      else merged.push([offset4, length2]);
    }
    return merged;
  }
  function getNormalizedIndexes(itemValue) {
    const starts = [];
    const ends = [];
    let index3 = 0;
    for (const char of itemValue) {
      const normalizedLength = normalizeValue2(char).length;
      for (let i2 = 0; i2 < normalizedLength; i2 += 1) {
        starts.push(i2 === 0 ? index3 : -1);
        ends.push(index3);
      }
      index3 += char.length;
    }
    starts.push(itemValue.length);
    ends.push(itemValue.length);
    let nextBoundary = itemValue.length;
    for (let i2 = starts.length - 1; i2 >= 0; i2 -= 1) {
      const start2 = starts[i2];
      if (start2 == null) continue;
      if (start2 === -1) starts[i2] = nextBoundary;
      else nextBoundary = start2;
    }
    return {
      starts,
      ends
    };
  }
  function toOriginalOffsets(itemValue, normalizedOffsets) {
    if (!normalizedOffsets.length) return normalizedOffsets;
    const { starts, ends } = getNormalizedIndexes(itemValue);
    const offsets = [];
    for (const [normalizedOffset, normalizedLength] of normalizedOffsets) {
      const start2 = starts[normalizedOffset];
      const end = ends[normalizedOffset + normalizedLength];
      if (start2 == null || end == null) continue;
      if (end <= start2) continue;
      offsets.push([start2, end - start2]);
    }
    return offsets;
  }
  function splitValue(itemValue, userValue) {
    if (!itemValue) return itemValue;
    if (!userValue) return itemValue;
    const userValues = toArray2(userValue).map(normalizeValue2);
    const parts = [];
    const span = (value, autocomplete = false) => /* @__PURE__ */ (0, import_jsx_runtime312.jsx)("span", {
      "data-autocomplete-value": autocomplete ? "" : void 0,
      "data-user-value": autocomplete ? void 0 : "",
      children: value
    }, parts.length);
    const offsets = toOriginalOffsets(itemValue, mergeOverlappingOffsets(getOffsets(normalizeValue2(itemValue), new Set(userValues))));
    const firstEntry = offsets[0];
    if (!firstEntry) {
      parts.push(span(itemValue, true));
      return parts;
    }
    const [firstOffset] = firstEntry;
    [itemValue.slice(0, firstOffset), ...offsets.flatMap(([offset4, length2], i2) => {
      const value = itemValue.slice(offset4, offset4 + length2);
      const nextOffset = offsets[i2 + 1]?.[0];
      return [value, itemValue.slice(offset4 + length2, nextOffset)];
    })].forEach((value, i2) => {
      if (!value) return;
      parts.push(span(value, i2 % 2 === 0));
    });
    return parts;
  }
  var useComboboxItemValue = createHook(function useComboboxItemValue2({ store: store4, value, userValue, ...props }) {
    const context = useComboboxScopedContext();
    store4 = store4 || context;
    const itemContext = (0, import_react74.useContext)(ComboboxItemValueContext);
    const itemValue = value ?? itemContext;
    const inputValue = useStoreState(store4, ["inputValue"], (state2) => userValue ?? state2?.inputValue);
    props = {
      children: (0, import_react74.useMemo)(() => {
        if (!itemValue) return;
        if (!inputValue) return itemValue;
        return splitValue(itemValue, inputValue);
      }, [itemValue, inputValue]),
      ...props
    };
    return props;
  });
  var ComboboxItemValue = forwardRef165(function ComboboxItemValue2(props) {
    const htmlProps = useComboboxItemValue(props);
    return createElement5(TagName10, htmlProps);
  });

  // node_modules/@ariakit/react-components/dist/combobox/combobox-label.js
  var TagName11 = "label";
  var useComboboxLabel = createHook(function useComboboxLabel2({ store: store4, ...props }) {
    const scopedContext = useComboboxScopedContext(true);
    const context = useComboboxProviderContext();
    store4 = store4 || context || scopedContext;
    invariant(store4, "ComboboxLabel must receive a `store` prop or be wrapped in a ComboboxProvider component.");
    const inputElement = useStoreState(store4, "inputElement");
    useAttribute(inputElement, "id");
    const comboboxId = inputElement?.id;
    const id = useId8(props.id);
    props = {
      htmlFor: comboboxId,
      ...props,
      id,
      ref: useMergeRefs6(store4.setLabelElement, props.ref)
    };
    return props;
  });
  var ComboboxLabel3 = memo7(forwardRef165(function ComboboxLabel4(props) {
    const htmlProps = useComboboxLabel(props);
    return createElement5(TagName11, htmlProps);
  }));

  // node_modules/@ariakit/react-components/dist/combobox/combobox-list.js
  var import_react75 = __toESM(require_react(), 1);
  var import_jsx_runtime313 = __toESM(require_jsx_runtime(), 1);
  var TagName12 = "div";
  var useComboboxList = createHook(function useComboboxList2({ store: store4, alwaysVisible, ...props }) {
    const scopedContext = useComboboxScopedContext(true);
    const context = useComboboxContext();
    store4 = store4 || context;
    const scopedContextSameStore = !!store4 && store4 === scopedContext;
    invariant(store4, "ComboboxList must receive a `store` prop or be wrapped in a ComboboxProvider component.");
    const onFocusProp = props.onFocus;
    const onFocus = useEvent3((event) => {
      onFocusProp?.(event);
      if (event.defaultPrevented) return;
      if (!isSelfTarget(event)) return;
      const compositeElement = store4.getState().compositeElement;
      if (!compositeElement) return;
      if (!isFocusable(compositeElement)) return;
      const list = event.currentTarget;
      queueMicrotask(() => {
        if (getActiveElement(list) !== list) return;
        compositeElement.focus();
      });
    });
    const ref = (0, import_react75.useRef)(null);
    const id = useId8(props.id);
    const mounted = useStoreState(store4, "mounted");
    const hidden = isHidden(mounted, props.hidden, alwaysVisible);
    const style = hidden ? {
      ...props.style,
      display: "none"
    } : props.style;
    const multiSelectable = useStoreState(store4, ["selectedValue"], (state2) => Array.isArray(state2.selectedValue));
    const role = useAttribute(ref, "role", props.role);
    const listRole = (0, import_react75.useMemo)(() => ({
      store: store4,
      role
    }), [store4, role]);
    const ariaMultiSelectable = role === "listbox" || role === "tree" || role === "grid" ? multiSelectable || void 0 : void 0;
    const [hasNestedList, setHasNestedList] = (0, import_react75.useState)(false);
    const contentElement = useStoreState(store4, "contentElement");
    const parentHeadingContext = (0, import_react75.useContext)(ComboboxHeadingContext);
    const headingState = (0, import_react75.useState)();
    const [headingId, setHeadingId] = parentHeadingContext || headingState;
    const headingContext = (0, import_react75.useMemo)(() => [headingId, setHeadingId], [headingId, setHeadingId]);
    useSafeLayoutEffect(() => {
      if (!mounted) return;
      const element = ref.current;
      if (!element) return;
      if (contentElement !== element) return;
      const update4 = () => {
        setHasNestedList(!!element.querySelector("[data-combobox-list]"));
      };
      const observer = new MutationObserver(update4);
      observer.observe(element, {
        subtree: true,
        childList: true
      });
      update4();
      return () => observer.disconnect();
    }, [mounted, contentElement]);
    if (!hasNestedList) props = {
      role: "listbox",
      "aria-multiselectable": ariaMultiSelectable,
      ...props
    };
    props = useWrapElement(props, (element) => /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(ComboboxScopedContextProvider, {
      value: store4,
      children: /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(ComboboxHeadingContext.Provider, {
        value: headingContext,
        children: /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(DialogHeadingContext.Provider, {
          value: setHeadingId,
          children: /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(ComboboxListRoleContext.Provider, {
            value: listRole,
            children: element
          })
        })
      })
    }), [
      store4,
      listRole,
      headingContext
    ]);
    const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store4.setContentElement : null;
    const labelElement = useStoreState(store4, ["labelElement", "selectLabelElement"], (state2) => {
      if (headingId) return null;
      return state2.selectLabelElement || state2.labelElement;
    });
    useAttribute(labelElement, "id");
    const labelId = headingId || labelElement?.id;
    props = {
      "data-combobox-list": "",
      "aria-labelledby": props["aria-label"] != null ? void 0 : labelId,
      hidden,
      ...props,
      id,
      onFocus,
      ref: useMergeRefs6(setContentElement, ref, props.ref),
      style,
      tabIndex: -1
    };
    return props;
  });
  var ComboboxList3 = forwardRef165(function ComboboxList4(props) {
    const htmlProps = useComboboxList(props);
    return createElement5(TagName12, htmlProps);
  });

  // node_modules/@ariakit/react-components/dist/tag/tag-context.js
  var import_react76 = __toESM(require_react(), 1);
  var TagValueContext = (0, import_react76.createContext)(null);
  var TagRemoveIdContext = (0, import_react76.createContext)(null);
  var ctx8 = createStoreContext([CompositeContextProvider], [CompositeScopedContextProvider]);
  var useTagContext = ctx8.useContext;
  var useTagScopedContext = ctx8.useScopedContext;
  var useTagProviderContext = ctx8.useProviderContext;
  var TagContextProvider = ctx8.ContextProvider;
  var TagScopedContextProvider = ctx8.ScopedContextProvider;

  // node_modules/@ariakit/components/dist/combobox/combobox-store.js
  var isTouchSafari = isSafari() && isTouchDevice();
  function createComboboxStore({ tag, ...props } = {}) {
    const store4 = mergeStore(props.store, pick2(tag, ["value", "rtl"]));
    const defaultInputValue = defaultValue(props.defaultInputValue, props.defaultValue);
    throwOnConflictingProps({
      ...props,
      defaultInputValue,
      defaultValue: defaultInputValue
    }, store4);
    const tagState = tag?.getState();
    const syncState = store4?.getState();
    const activeId = defaultValue(props.activeId, syncState?.activeId, props.defaultActiveId, null);
    const composite = createCompositeStore({
      ...props,
      activeId,
      compositeElementInFocusOrder: defaultValue(props.compositeElementInFocusOrder, props.includesBaseElement, syncState?.compositeElementInFocusOrder, syncState?.includesBaseElement, true),
      orientation: defaultValue(props.orientation, syncState?.orientation, "vertical"),
      focusLoop: defaultValue(props.focusLoop, syncState?.focusLoop, true),
      focusWrap: defaultValue(props.focusWrap, syncState?.focusWrap, true),
      virtualFocus: defaultValue(props.virtualFocus, syncState?.virtualFocus, true)
    });
    const popover = createPopoverStore({
      ...props,
      placement: defaultValue(props.placement, syncState?.placement, "bottom-start")
    });
    const inputValue = defaultValue(props.inputValue, props.value, syncState?.inputValue, syncState?.value, defaultInputValue, "");
    const selectedValue = defaultValue(props.selectedValue, syncState?.selectedValue, tagState?.values, props.defaultSelectedValue, "");
    let shouldSetDefaultSelectedValue = props.selectedValue === void 0 && syncState?.selectedValue === void 0 && tagState?.values === void 0 && props.defaultSelectedValue === void 0;
    const multiSelectable = Array.isArray(selectedValue);
    const initialState = {
      ...composite.getState(),
      ...popover.getState(),
      inputValue,
      value: inputValue,
      selectedValue,
      resetValueOnSelect: defaultValue(props.resetValueOnSelect, syncState?.resetValueOnSelect, multiSelectable),
      resetValueOnHide: defaultValue(props.resetValueOnHide, syncState?.resetValueOnHide, multiSelectable && !tag),
      selectOnMove: defaultValue(props.selectOnMove, syncState?.selectOnMove, false),
      activeValue: syncState?.activeValue,
      inputElement: defaultValue(syncState?.inputElement, null),
      labelElement: defaultValue(syncState?.labelElement, null),
      selectElement: defaultValue(syncState?.selectElement, null),
      selectLabelElement: defaultValue(syncState?.selectLabelElement, null)
    };
    const combobox = createStore(initialState, composite, popover, store4);
    setup(combobox, () => chain(sync2(combobox, ["inputValue"], (state2) => {
      combobox.setState("value", state2.inputValue);
    }), sync2(combobox, ["value"], (state2) => {
      combobox.setState("inputValue", state2.value);
    })));
    let resolveSelectedItemOnOpen = false;
    const selectDefaultOptions = /* @__PURE__ */ new Set();
    if (props.focusLoop === void 0 && syncState?.focusLoop === void 0) selectDefaultOptions.add("focusLoop");
    if (props.focusWrap === void 0 && syncState?.focusWrap === void 0) selectDefaultOptions.add("focusWrap");
    if (props.compositeElementInFocusOrder === void 0 && props.includesBaseElement === void 0 && syncState?.compositeElementInFocusOrder === void 0 && syncState?.includesBaseElement === void 0) selectDefaultOptions.add("compositeElementInFocusOrder");
    if (props.resetValueOnSelect === void 0 && syncState?.resetValueOnSelect === void 0) selectDefaultOptions.add("resetValueOnSelect");
    let syncedSelectElement = initialState.compositeElement === initialState.selectElement ? initialState.selectElement : null;
    const initialFallback = initialState.selectElement || initialState.compositeElement || initialState.disclosureElement;
    let syncedAnchorElement = initialState.anchorElement === initialFallback ? initialState.anchorElement : null;
    setup(combobox, () => sync2(combobox, ["compositeElement", "selectElement"], (state2) => {
      if (!state2.selectElement && !syncedSelectElement) return;
      if (state2.compositeElement && state2.compositeElement === state2.selectElement) {
        syncedSelectElement = state2.selectElement;
        return;
      }
      if (state2.compositeElement && state2.compositeElement !== syncedSelectElement) {
        syncedSelectElement = null;
        return;
      }
      syncedSelectElement = state2.selectElement;
      combobox.setState("compositeElement", syncedSelectElement);
    }));
    setup(combobox, () => sync2(combobox, ["selectElement"], (state2) => {
      if (!state2.selectElement) return;
      const { focusLoop, focusWrap, compositeElementInFocusOrder, resetValueOnSelect } = combobox.getState();
      if (selectDefaultOptions.has("focusLoop")) composite.setState("focusLoop", false);
      if (selectDefaultOptions.has("focusWrap")) composite.setState("focusWrap", false);
      if (selectDefaultOptions.has("compositeElementInFocusOrder")) composite.setState("compositeElementInFocusOrder", false);
      if (selectDefaultOptions.has("resetValueOnSelect")) combobox.setState("resetValueOnSelect", true);
      return () => {
        const current = combobox.getState();
        if (selectDefaultOptions.has("focusLoop") && !current.focusLoop) composite.setState("focusLoop", focusLoop);
        if (selectDefaultOptions.has("focusWrap") && !current.focusWrap) composite.setState("focusWrap", focusWrap);
        if (selectDefaultOptions.has("compositeElementInFocusOrder") && !current.compositeElementInFocusOrder) composite.setState("compositeElementInFocusOrder", compositeElementInFocusOrder);
        if (selectDefaultOptions.has("resetValueOnSelect") && current.resetValueOnSelect) combobox.setState("resetValueOnSelect", resetValueOnSelect);
      };
    }));
    setup(combobox, () => sync2(combobox, [
      "anchorElement",
      "compositeElement",
      "disclosureElement",
      "selectElement"
    ], (state2) => {
      if (state2.anchorElement && state2.anchorElement !== syncedAnchorElement) {
        syncedAnchorElement = null;
        return;
      }
      syncedAnchorElement = state2.selectElement || state2.compositeElement || state2.disclosureElement;
      combobox.setState("anchorElement", syncedAnchorElement);
    }));
    setup(combobox, () => sync2(combobox, [
      "items",
      "selectedValue",
      "selectElement"
    ], (state2, prevState) => {
      if (!shouldSetDefaultSelectedValue) return;
      if (state2.selectedValue !== prevState.selectedValue) {
        shouldSetDefaultSelectedValue = false;
        return;
      }
      if (!state2.selectElement) return;
      queueMicrotask(() => {
        if (!shouldSetDefaultSelectedValue) return;
        const state3 = combobox.getState();
        if (!state3.selectElement) return;
        const item = state3.items.find((item2) => !item2.disabled && item2.value != null);
        if (item?.value == null) return;
        shouldSetDefaultSelectedValue = false;
        combobox.setState("selectedValue", item.value);
      });
    }));
    if (isTouchSafari) setup(combobox, () => sync2(combobox, ["virtualFocus"], () => {
      combobox.setState("virtualFocus", false);
    }));
    setup(combobox, () => {
      if (!tag) return;
      return chain(sync2(combobox, ["selectedValue"], (state2) => {
        if (!Array.isArray(state2.selectedValue)) return;
        tag.setValues(state2.selectedValue);
      }), sync2(tag, ["values"], (state2) => {
        combobox.setState("selectedValue", state2.values);
      }));
    });
    setup(combobox, () => sync2(combobox, ["resetValueOnHide", "mounted"], (state2) => {
      if (!state2.resetValueOnHide) return;
      if (state2.mounted) return;
      combobox.setState("inputValue", inputValue);
    }));
    setup(combobox, () => sync2(combobox, ["open"], (state2) => {
      if (state2.open) {
        resolveSelectedItemOnOpen = true;
        return;
      }
      resolveSelectedItemOnOpen = false;
      combobox.setState("activeId", activeId);
      combobox.setState("moves", 0);
    }));
    setup(combobox, () => sync2(combobox, ["moves", "activeId"], (state2, prevState) => {
      if (state2.moves !== prevState.moves) resolveSelectedItemOnOpen = false;
      if (state2.activeId !== prevState.activeId) resolveSelectedItemOnOpen = false;
      if (state2.moves === prevState.moves) combobox.setState("activeValue", void 0);
    }));
    setup(combobox, () => batch(combobox, ["moves", "renderedItems"], (state2, prev) => {
      if (state2.moves === prev.moves) return;
      const { activeId: activeId2 } = combobox.getState();
      const activeItem = composite.item(activeId2);
      combobox.setState("activeValue", activeItem?.value);
    }));
    setup(combobox, () => sync2(combobox, [
      "items",
      "mounted",
      "open",
      "selectedValue",
      "selectElement"
    ], (state2) => {
      if (!state2.selectElement) return;
      if (state2.mounted && !resolveSelectedItemOnOpen) return;
      const values = Array.isArray(state2.selectedValue) ? state2.selectedValue : [state2.selectedValue];
      const lastValue = values[values.length - 1];
      if (lastValue == null) return;
      const item = state2.items.find((item2) => !item2.disabled && item2.value === lastValue);
      if (!item) return;
      resolveSelectedItemOnOpen = false;
      combobox.setState("activeId", item.id);
    }));
    setup(combobox, () => batch(combobox, ["selectOnMove", "moves"], (state2) => {
      const { activeId: activeId2, open: open3, selectedValue: selectedValue2, selectElement } = combobox.getState();
      if (!selectElement) return;
      if (!state2.selectOnMove && open3) return;
      if (Array.isArray(selectedValue2)) return;
      if (!state2.moves) return;
      if (!activeId2) return;
      const item = composite.item(activeId2);
      if (!item || item.disabled || item.value == null) return;
      combobox.setState("selectedValue", item.value);
    }));
    const setInputValue = (value) => {
      combobox.setState("inputValue", value);
    };
    const resetInputValue = () => setInputValue(initialState.inputValue);
    const setState = (key, value) => {
      selectDefaultOptions.delete(key);
      if (key === "includesBaseElement") selectDefaultOptions.delete("compositeElementInFocusOrder");
      if (key === "selectedValue") shouldSetDefaultSelectedValue = false;
      combobox.setState(key, value);
    };
    return {
      ...popover,
      ...composite,
      ...combobox,
      setState,
      tag,
      setInputValue,
      resetInputValue,
      setValue: setInputValue,
      resetValue: resetInputValue,
      setSelectedValue: (selectedValue2) => setState("selectedValue", selectedValue2),
      setInputElement: (element) => combobox.setState("inputElement", element),
      setLabelElement: (element) => combobox.setState("labelElement", element),
      setSelectElement: (element) => combobox.setState("selectElement", element),
      setSelectLabelElement: (element) => combobox.setState("selectLabelElement", element)
    };
  }

  // node_modules/@ariakit/react-components/dist/combobox/combobox-store.js
  function useComboboxStoreOptions(props) {
    const tag = useTagContext();
    props = {
      ...props,
      tag: props.tag !== void 0 ? props.tag : tag
    };
    return useCompositeStoreOptions(props);
  }
  function useComboboxStoreProps(store4, update4, props) {
    useUpdateEffect(update4, [props.tag, update4]);
    const inputValueProps = {
      inputValue: props.inputValue ?? props.value,
      setInputValue: props.setInputValue ?? props.setValue
    };
    useStoreProps(store4, inputValueProps, "inputValue", "setInputValue");
    useStoreProps(store4, props, "selectedValue", "setSelectedValue");
    useStoreProps(store4, props, "selectOnMove");
    useStoreProps(store4, props, "resetValueOnHide");
    useStoreProps(store4, props, "resetValueOnSelect");
    return Object.assign(useCompositeStoreProps(usePopoverStoreProps(store4, update4, props), update4, props), { tag: props.tag });
  }
  function useComboboxStore(props = {}) {
    props = useComboboxStoreOptions(props);
    const [store4, update4] = useStore2(createComboboxStore, props);
    return useComboboxStoreProps(store4, update4, props);
  }

  // node_modules/@ariakit/react-components/dist/combobox/combobox-provider.js
  var import_jsx_runtime314 = __toESM(require_jsx_runtime(), 1);
  function ComboboxProvider(props = {}) {
    const store4 = useComboboxStore(props);
    return /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(ComboboxContextProvider, {
      value: store4,
      children: props.children
    });
  }

  // packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs
  var import_remove_accents3 = __toESM(require_remove_accents(), 1);
  var import_compose20 = __toESM(require_compose(), 1);
  var import_i18n114 = __toESM(require_i18n(), 1);
  var import_element176 = __toESM(require_element(), 1);
  var import_components44 = __toESM(require_components(), 1);

  // packages/dataviews/build-module/components/dataviews-filters/utils.mjs
  var EMPTY_ARRAY7 = [];
  var getCurrentValue = (filterDefinition, currentFilter) => {
    if (filterDefinition.singleSelection) {
      return currentFilter?.value;
    }
    if (Array.isArray(currentFilter?.value)) {
      return currentFilter.value;
    }
    if (!Array.isArray(currentFilter?.value) && !!currentFilter?.value) {
      return [currentFilter.value];
    }
    return EMPTY_ARRAY7;
  };

  // packages/dataviews/build-module/hooks/use-elements.mjs
  var import_element175 = __toESM(require_element(), 1);
  var EMPTY_ARRAY8 = [];
  function useElements({
    elements: elements2,
    getElements
  }) {
    const staticElements = Array.isArray(elements2) && elements2.length > 0 ? elements2 : EMPTY_ARRAY8;
    const [records, setRecords] = (0, import_element175.useState)(staticElements);
    const [isLoading, setIsLoading] = (0, import_element175.useState)(false);
    (0, import_element175.useEffect)(() => {
      if (!getElements) {
        setRecords(staticElements);
        return;
      }
      let cancelled2 = false;
      setIsLoading(true);
      getElements().then((fetchedElements) => {
        if (!cancelled2) {
          const dynamicElements = Array.isArray(fetchedElements) && fetchedElements.length > 0 ? fetchedElements : staticElements;
          setRecords(dynamicElements);
        }
      }).catch(() => {
        if (!cancelled2) {
          setRecords(staticElements);
        }
      }).finally(() => {
        if (!cancelled2) {
          setIsLoading(false);
        }
      });
      return () => {
        cancelled2 = true;
      };
    }, [getElements, staticElements]);
    return {
      elements: records,
      isLoading
    };
  }

  // packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs
  var import_jsx_runtime315 = __toESM(require_jsx_runtime(), 1);
  function normalizeSearchInput(input = "") {
    return (0, import_remove_accents3.default)(input.trim().toLowerCase());
  }
  var getNewValue = (filterDefinition, currentFilter, value) => {
    if (filterDefinition.singleSelection) {
      return value;
    }
    if (Array.isArray(currentFilter?.value)) {
      return currentFilter.value.includes(value) ? currentFilter.value.filter((v3) => v3 !== value) : [...currentFilter.value, value];
    }
    return [value];
  };
  function generateFilterElementCompositeItemId(prefix2, filterElementValue) {
    return `${prefix2}-${filterElementValue}`;
  }
  var MultiSelectionOption = ({ selected }) => {
    return /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
      "span",
      {
        className: clsx_default(
          "dataviews-filters__search-widget-listitem-multi-selection",
          { "is-selected": selected }
        ),
        children: selected && /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(import_components44.Icon, { icon: check_default })
      }
    );
  };
  var SingleSelectionOption = ({ selected }) => {
    return /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
      "span",
      {
        className: clsx_default(
          "dataviews-filters__search-widget-listitem-single-selection",
          { "is-selected": selected }
        )
      }
    );
  };
  function ListBox({ view, filter, onChangeView }) {
    const baseId = (0, import_compose20.useInstanceId)(ListBox, "dataviews-filter-list-box");
    const [activeCompositeId, setActiveCompositeId] = (0, import_element176.useState)(
      // When there are one or less operators, the first item is set as active
      // (by setting the initial `activeId` to `undefined`).
      // With 2 or more operators, the focus is moved on the operators control
      // (by setting the initial `activeId` to `null`), meaning that there won't
      // be an active item initially. Focus is then managed via the
      // `onFocusVisible` callback.
      filter.operators?.length === 1 ? void 0 : null
    );
    const currentFilter = view.filters?.find(
      (f2) => f2.field === filter.field
    );
    const currentValue = getCurrentValue(filter, currentFilter);
    return /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
      import_components44.Composite,
      {
        virtualFocus: true,
        focusLoop: true,
        activeId: activeCompositeId,
        setActiveId: setActiveCompositeId,
        role: "listbox",
        className: "dataviews-filters__search-widget-listbox",
        "aria-label": (0, import_i18n114.sprintf)(
          /* translators: List of items for a filter. 1: Filter name. e.g.: "List of: Author". */
          (0, import_i18n114.__)("List of: %1$s"),
          filter.name
        ),
        onFocusVisible: () => {
          if (!activeCompositeId && filter.elements.length) {
            setActiveCompositeId(
              generateFilterElementCompositeItemId(
                baseId,
                filter.elements[0].value
              )
            );
          }
        },
        render: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(import_components44.Composite.Typeahead, {}),
        children: filter.elements.map((element) => /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)(
          import_components44.Composite.Hover,
          {
            render: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
              import_components44.Composite.Item,
              {
                id: generateFilterElementCompositeItemId(
                  baseId,
                  element.value
                ),
                render: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
                  "div",
                  {
                    "aria-label": element.label,
                    role: "option",
                    className: "dataviews-filters__search-widget-listitem"
                  }
                ),
                onClick: () => {
                  const newFilters = currentFilter ? [
                    ...(view.filters ?? []).map(
                      (_filter) => {
                        if (_filter.field === filter.field) {
                          return {
                            ..._filter,
                            operator: currentFilter.operator || filter.operators[0],
                            value: getNewValue(
                              filter,
                              currentFilter,
                              element.value
                            )
                          };
                        }
                        return _filter;
                      }
                    )
                  ] : [
                    ...view.filters ?? [],
                    {
                      field: filter.field,
                      operator: filter.operators[0],
                      value: getNewValue(
                        filter,
                        currentFilter,
                        element.value
                      )
                    }
                  ];
                  onChangeView({
                    ...view,
                    page: 1,
                    filters: newFilters
                  });
                }
              }
            ),
            children: [
              filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
                SingleSelectionOption,
                {
                  selected: currentValue === element.value
                }
              ),
              !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
                MultiSelectionOption,
                {
                  selected: currentValue.includes(element.value)
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
                "span",
                {
                  className: "dataviews-filters__search-widget-listitem-value",
                  title: element.label,
                  children: element.label
                }
              )
            ]
          },
          element.value
        ))
      }
    );
  }
  function ComboboxList22({ view, filter, onChangeView }) {
    const [searchValue, setSearchValue] = (0, import_element176.useState)("");
    const deferredSearchValue = (0, import_element176.useDeferredValue)(searchValue);
    const currentFilter = view.filters?.find(
      (_filter) => _filter.field === filter.field
    );
    const currentValue = getCurrentValue(filter, currentFilter);
    const matches = (0, import_element176.useMemo)(() => {
      const normalizedSearch = normalizeSearchInput(deferredSearchValue);
      return filter.elements.filter(
        (item) => normalizeSearchInput(item.label).includes(normalizedSearch)
      );
    }, [filter.elements, deferredSearchValue]);
    return /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)(
      ComboboxProvider,
      {
        selectedValue: currentValue,
        setSelectedValue: (value) => {
          const newFilters = currentFilter ? [
            ...(view.filters ?? []).map((_filter) => {
              if (_filter.field === filter.field) {
                return {
                  ..._filter,
                  operator: currentFilter.operator || filter.operators[0],
                  value
                };
              }
              return _filter;
            })
          ] : [
            ...view.filters ?? [],
            {
              field: filter.field,
              operator: filter.operators[0],
              value
            }
          ];
          onChangeView({
            ...view,
            page: 1,
            filters: newFilters
          });
        },
        setValue: setSearchValue,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)("div", { className: "dataviews-filters__search-widget-filter-combobox__wrapper", children: [
            /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(ComboboxLabel3, {}), children: (0, import_i18n114.__)("Search items") }),
            /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
              Combobox,
              {
                autoSelect: "always",
                placeholder: (0, import_i18n114.__)("Search"),
                className: "dataviews-filters__search-widget-filter-combobox__input"
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "dataviews-filters__search-widget-filter-combobox__icon", children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(import_components44.Icon, { icon: search_default }) })
          ] }),
          /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)(
            ComboboxList3,
            {
              className: "dataviews-filters__search-widget-filter-combobox-list",
              alwaysVisible: true,
              children: [
                matches.map((element) => {
                  return /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)(
                    ComboboxItem3,
                    {
                      resetValueOnSelect: false,
                      value: element.value,
                      className: "dataviews-filters__search-widget-listitem",
                      hideOnClick: false,
                      setValueOnClick: false,
                      focusOnHover: true,
                      children: [
                        filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
                          SingleSelectionOption,
                          {
                            selected: currentValue === element.value
                          }
                        ),
                        !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
                          MultiSelectionOption,
                          {
                            selected: currentValue.includes(
                              element.value
                            )
                          }
                        ),
                        /* @__PURE__ */ (0, import_jsx_runtime315.jsxs)(
                          "span",
                          {
                            className: "dataviews-filters__search-widget-listitem-value",
                            title: element.label,
                            children: [
                              /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
                                ComboboxItemValue,
                                {
                                  className: "dataviews-filters__search-widget-filter-combobox-item-value",
                                  value: element.label
                                }
                              ),
                              !!element.description && /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("span", { className: "dataviews-filters__search-widget-listitem-description", children: element.description })
                            ]
                          }
                        )
                      ]
                    },
                    element.value
                  );
                }),
                !matches.length && /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("p", { children: (0, import_i18n114.__)("No results found") })
              ]
            }
          )
        ]
      }
    );
  }
  function SearchWidget(props) {
    const { elements: elements2, isLoading } = useElements({
      elements: props.filter.elements,
      getElements: props.filter.getElements
    });
    if (isLoading) {
      return /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(import_components44.Spinner, {}) });
    }
    if (elements2.length === 0) {
      return /* @__PURE__ */ (0, import_jsx_runtime315.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: (0, import_i18n114.__)("No elements found") });
    }
    const Widget = elements2.length > 10 ? ComboboxList22 : ListBox;
    return /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(Widget, { ...props, filter: { ...props.filter, elements: elements2 } });
  }

  // packages/dataviews/build-module/components/dataviews-filters/input-widget.mjs
  var import_es62 = __toESM(require_es6(), 1);
  var import_compose21 = __toESM(require_compose(), 1);
  var import_element177 = __toESM(require_element(), 1);
  var import_components45 = __toESM(require_components(), 1);
  var import_jsx_runtime316 = __toESM(require_jsx_runtime(), 1);
  function InputWidget({
    filter,
    view,
    onChangeView,
    fields: fields2
  }) {
    const currentFilter = view.filters?.find(
      (f2) => f2.field === filter.field
    );
    const currentValue = getCurrentValue(filter, currentFilter);
    const field = (0, import_element177.useMemo)(() => {
      const currentField = fields2.find((f2) => f2.id === filter.field);
      if (currentField) {
        return {
          ...currentField,
          // Deactivate validation for filters.
          isValid: {},
          // Filter controls are always enabled.
          isDisabled: () => false,
          // Filter controls are always visible.
          isVisible: () => true,
          // Configure getValue/setValue as if Item was a plain object.
          getValue: ({ item }) => item[currentField.id],
          setValue: ({ value }) => ({
            [currentField.id]: value
          })
        };
      }
      return currentField;
    }, [fields2, filter.field]);
    const data = (0, import_element177.useMemo)(() => {
      return (view.filters ?? []).reduce(
        (acc, activeFilter) => {
          acc[activeFilter.field] = activeFilter.value;
          return acc;
        },
        {}
      );
    }, [view.filters]);
    const handleChange = (0, import_compose21.useEvent)((updatedData) => {
      if (!field || !currentFilter) {
        return;
      }
      const nextValue = field.getValue({ item: updatedData });
      if ((0, import_es62.default)(nextValue, currentValue)) {
        return;
      }
      onChangeView({
        ...view,
        filters: (view.filters ?? []).map(
          (_filter) => _filter.field === filter.field ? {
            ..._filter,
            operator: currentFilter.operator || filter.operators[0],
            // Consider empty strings as undefined:
            //
            // - undefined as value means the filter is unset: the filter widget displays no value and the search returns all records
            // - empty string as value means "search empty string": returns only the records that have an empty string as value
            //
            // In practice, this means the filter will not be able to find an empty string as the value.
            value: nextValue === "" ? void 0 : nextValue
          } : _filter
        )
      });
    });
    if (!field || !field.Edit || !currentFilter) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
      import_components45.Flex,
      {
        className: "dataviews-filters__user-input-widget",
        gap: 2.5,
        direction: "column",
        children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
          field.Edit,
          {
            hideLabelFromVision: true,
            data,
            field,
            operator: currentFilter.operator,
            onChange: handleChange
          }
        )
      }
    );
  }

  // packages/dataviews/build-module/utils/operators.mjs
  var import_i18n115 = __toESM(require_i18n(), 1);
  var import_element178 = __toESM(require_element(), 1);
  var import_date7 = __toESM(require_date(), 1);

  // packages/dataviews/build-module/field-types/utils/parse-time.mjs
  var ZONE_DESIGNATOR = /(?:[Zz]|[+-](?:[01]\d|2[0-3]):?[0-5]\d)$/;
  var TIME_FORMATS = ["HH:mm", "HH:mm:ss"];
  var REFERENCE_DATE = new Date(2e3, 0, 1);
  function parseTime2(value) {
    if (typeof value !== "string") {
      return null;
    }
    const time = value.trim().replace(ZONE_DESIGNATOR, "");
    for (const timeFormat of TIME_FORMATS) {
      const parsed = parse2(time, timeFormat, REFERENCE_DATE);
      if (isValid(parsed)) {
        return parsed.getHours() * 3600 + parsed.getMinutes() * 60 + parsed.getSeconds();
      }
    }
    return null;
  }

  // packages/dataviews/build-module/utils/operators.mjs
  var import_jsx_runtime317 = __toESM(require_jsx_runtime(), 1);
  var filterTextWrappers = {
    Name: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)("span", { className: "dataviews-filters__summary-filter-text-name" }),
    Value: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)("span", { className: "dataviews-filters__summary-filter-text-value" })
  };
  function toComparableTemporals(fieldValue, filterValue) {
    const filterTime = parseTime2(filterValue);
    if (filterTime !== null) {
      return [parseTime2(fieldValue) ?? NaN, filterTime];
    }
    return [
      (0, import_date7.getDate)(fieldValue).getTime(),
      (0, import_date7.getDate)(filterValue).getTime()
    ];
  }
  function getRelativeDate(value, unit) {
    switch (unit) {
      case "days":
        return subDays(/* @__PURE__ */ new Date(), value);
      case "weeks":
        return subWeeks(/* @__PURE__ */ new Date(), value);
      case "months":
        return subMonths(/* @__PURE__ */ new Date(), value);
      case "years":
        return subYears(/* @__PURE__ */ new Date(), value);
      default:
        return /* @__PURE__ */ new Date();
    }
  }
  var isNoneOperatorDefinition = {
    /* translators: DataViews operator name */
    label: (0, import_i18n115.__)("Is none of"),
    filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
      (0, import_i18n115.sprintf)(
        /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is none of: Admin, Editor". */
        (0, import_i18n115.__)("<Name>%1$s is none of: </Name><Value>%2$s</Value>"),
        filter.name,
        activeElements.map((element) => element.label).join(", ")
      ),
      filterTextWrappers
    ),
    filter: ((item, field, filterValue) => {
      if (!filterValue?.length) {
        return true;
      }
      const fieldValue = field.getValue({ item });
      if (Array.isArray(fieldValue)) {
        return !filterValue.some(
          (fv) => fieldValue.includes(fv)
        );
      } else if (typeof fieldValue === "string" || typeof fieldValue === "number") {
        return !filterValue.includes(fieldValue);
      }
      return false;
    }),
    selection: "multi"
  };
  var OPERATORS = [
    {
      name: OPERATOR_IS_ANY2,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Includes"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is any: Admin, Editor". */
          (0, import_i18n115.__)("<Name>%1$s includes: </Name><Value>%2$s</Value>"),
          filter.name,
          activeElements.map((element) => element.label).join(", ")
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (!filterValue?.length) {
          return true;
        }
        const fieldValue = field.getValue({ item });
        if (Array.isArray(fieldValue)) {
          return filterValue.some(
            (fv) => fieldValue.includes(fv)
          );
        } else if (typeof fieldValue === "string" || typeof fieldValue === "number") {
          return filterValue.includes(fieldValue);
        }
        return false;
      },
      selection: "multi"
    },
    {
      name: OPERATOR_IS_NONE,
      ...isNoneOperatorDefinition
    },
    {
      name: OPERATOR_IS_ALL,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Includes all"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author includes all: Admin, Editor". */
          (0, import_i18n115.__)("<Name>%1$s includes all: </Name><Value>%2$s</Value>"),
          filter.name,
          activeElements.map((element) => element.label).join(", ")
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (!filterValue?.length) {
          return true;
        }
        const fieldValue = field.getValue({ item });
        if (!Array.isArray(fieldValue)) {
          return false;
        }
        return filterValue.every(
          (value) => fieldValue.includes(value)
        );
      },
      selection: "multi"
    },
    {
      name: OPERATOR_IS_NOT_ALL,
      ...isNoneOperatorDefinition
    },
    {
      name: OPERATOR_BETWEEN,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Between (inc)"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Item count"). 2: Filter value min. 3: Filter value max. e.g.: "Item count between (inc): 10 and 180". */
          (0, import_i18n115.__)(
            "<Name>%1$s between (inc): </Name><Value>%2$s and %3$s</Value>"
          ),
          filter.name,
          activeElements[0].label[0],
          activeElements[0].label[1]
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (!Array.isArray(filterValue) || filterValue.length !== 2 || // An unfilled bound is `undefined` from the controls, `''`
        // when it arrives from a persisted view, or `null` once
        // `undefined` round-trips through JSON persistence.
        filterValue.includes(void 0) || filterValue.includes("") || filterValue.includes(null)) {
          return true;
        }
        const fieldValue = field.getValue({ item });
        const [min4, max4] = filterValue.map(parseTime2);
        if (min4 !== null && max4 !== null) {
          const value = parseTime2(fieldValue);
          return value !== null && value >= min4 && value <= max4;
        }
        if (typeof fieldValue === "number" || fieldValue instanceof Date || typeof fieldValue === "string") {
          return fieldValue >= filterValue[0] && fieldValue <= filterValue[1];
        }
        return false;
      },
      selection: "custom"
    },
    {
      name: OPERATOR_IN_THE_PAST,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("In the past"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is in the past: 7 days". */
          (0, import_i18n115.__)(
            "<Name>%1$s is in the past: </Name><Value>%2$s</Value>"
          ),
          filter.name,
          `${activeElements[0].value.value} ${activeElements[0].value.unit}`
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue?.value === void 0 || filterValue?.unit === void 0) {
          return true;
        }
        const targetDate = getRelativeDate(
          filterValue.value,
          filterValue.unit
        );
        const fieldValue = (0, import_date7.getDate)(field.getValue({ item }));
        return fieldValue >= targetDate && fieldValue <= /* @__PURE__ */ new Date();
      },
      selection: "custom"
    },
    {
      name: OPERATOR_OVER,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Over"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is over: 7 days". */
          (0, import_i18n115.__)("<Name>%1$s is over: </Name><Value>%2$s</Value>"),
          filter.name,
          `${activeElements[0].value.value} ${activeElements[0].value.unit}`
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue?.value === void 0 || filterValue?.unit === void 0) {
          return true;
        }
        const targetDate = getRelativeDate(
          filterValue.value,
          filterValue.unit
        );
        const fieldValue = (0, import_date7.getDate)(field.getValue({ item }));
        return fieldValue < targetDate;
      },
      selection: "custom"
    },
    {
      name: OPERATOR_IS,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Is"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is: Admin". */
          (0, import_i18n115.__)("<Name>%1$s is: </Name><Value>%2$s</Value>"),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        return filterValue === field.getValue({ item }) || filterValue === void 0;
      },
      selection: "single"
    },
    {
      name: OPERATOR_IS_NOT,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Is not"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is not: Admin". */
          (0, import_i18n115.__)("<Name>%1$s is not: </Name><Value>%2$s</Value>"),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        return filterValue !== field.getValue({ item });
      },
      selection: "single"
    },
    {
      name: OPERATOR_LESS_THAN,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Less than"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than: 10". */
          (0, import_i18n115.__)("<Name>%1$s is less than: </Name><Value>%2$s</Value>"),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue === void 0) {
          return true;
        }
        const fieldValue = field.getValue({ item });
        return fieldValue < filterValue;
      },
      selection: "single"
    },
    {
      name: OPERATOR_GREATER_THAN,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Greater than"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than: 10". */
          (0, import_i18n115.__)(
            "<Name>%1$s is greater than: </Name><Value>%2$s</Value>"
          ),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue === void 0) {
          return true;
        }
        const fieldValue = field.getValue({ item });
        return fieldValue > filterValue;
      },
      selection: "single"
    },
    {
      name: OPERATOR_LESS_THAN_OR_EQUAL,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Less than or equal"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than or equal to: 10". */
          (0, import_i18n115.__)(
            "<Name>%1$s is less than or equal to: </Name><Value>%2$s</Value>"
          ),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue === void 0) {
          return true;
        }
        const fieldValue = field.getValue({ item });
        return fieldValue <= filterValue;
      },
      selection: "single"
    },
    {
      name: OPERATOR_GREATER_THAN_OR_EQUAL,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Greater than or equal"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than or equal to: 10". */
          (0, import_i18n115.__)(
            "<Name>%1$s is greater than or equal to: </Name><Value>%2$s</Value>"
          ),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue === void 0) {
          return true;
        }
        const fieldValue = field.getValue({ item });
        return fieldValue >= filterValue;
      },
      selection: "single"
    },
    {
      name: OPERATOR_BEFORE,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Before"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is before: 2024-01-01". */
          (0, import_i18n115.__)("<Name>%1$s is before: </Name><Value>%2$s</Value>"),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue === void 0) {
          return true;
        }
        const [fieldTemporal, filterTemporal] = toComparableTemporals(
          field.getValue({ item }),
          filterValue
        );
        return fieldTemporal < filterTemporal;
      },
      selection: "single"
    },
    {
      name: OPERATOR_AFTER,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("After"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is after: 2024-01-01". */
          (0, import_i18n115.__)("<Name>%1$s is after: </Name><Value>%2$s</Value>"),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue === void 0) {
          return true;
        }
        const [fieldTemporal, filterTemporal] = toComparableTemporals(
          field.getValue({ item }),
          filterValue
        );
        return fieldTemporal > filterTemporal;
      },
      selection: "single"
    },
    {
      name: OPERATOR_BEFORE_INC,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Before (inc)"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or before: 2024-01-01". */
          (0, import_i18n115.__)(
            "<Name>%1$s is on or before: </Name><Value>%2$s</Value>"
          ),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue === void 0) {
          return true;
        }
        const [fieldTemporal, filterTemporal] = toComparableTemporals(
          field.getValue({ item }),
          filterValue
        );
        return fieldTemporal <= filterTemporal;
      },
      selection: "single"
    },
    {
      name: OPERATOR_AFTER_INC,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("After (inc)"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or after: 2024-01-01". */
          (0, import_i18n115.__)(
            "<Name>%1$s is on or after: </Name><Value>%2$s</Value>"
          ),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue === void 0) {
          return true;
        }
        const [fieldTemporal, filterTemporal] = toComparableTemporals(
          field.getValue({ item }),
          filterValue
        );
        return fieldTemporal >= filterTemporal;
      },
      selection: "single"
    },
    {
      name: OPERATOR_CONTAINS,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Contains"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title contains: Hello". */
          (0, import_i18n115.__)("<Name>%1$s contains: </Name><Value>%2$s</Value>"),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue === void 0) {
          return true;
        }
        const fieldValue = field.getValue({ item });
        return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().includes(String(filterValue).toLowerCase());
      },
      selection: "single"
    },
    {
      name: OPERATOR_NOT_CONTAINS,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Doesn't contain"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title doesn't contain: Hello". */
          (0, import_i18n115.__)(
            "<Name>%1$s doesn't contain: </Name><Value>%2$s</Value>"
          ),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue === void 0) {
          return true;
        }
        const fieldValue = field.getValue({ item });
        return typeof fieldValue === "string" && filterValue && !fieldValue.toLowerCase().includes(String(filterValue).toLowerCase());
      },
      selection: "single"
    },
    {
      name: OPERATOR_STARTS_WITH,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Starts with"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title starts with: Hello". */
          (0, import_i18n115.__)("<Name>%1$s starts with: </Name><Value>%2$s</Value>"),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue === void 0) {
          return true;
        }
        const fieldValue = field.getValue({ item });
        return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().startsWith(String(filterValue).toLowerCase());
      },
      selection: "single"
    },
    {
      name: OPERATOR_ON,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("On"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is: 2024-01-01". */
          (0, import_i18n115.__)("<Name>%1$s is: </Name><Value>%2$s</Value>"),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue === void 0) {
          return true;
        }
        const [fieldTemporal, filterTemporal] = toComparableTemporals(
          field.getValue({ item }),
          filterValue
        );
        return fieldTemporal === filterTemporal;
      },
      selection: "single"
    },
    {
      name: OPERATOR_NOT_ON,
      /* translators: DataViews operator name */
      label: (0, import_i18n115.__)("Not on"),
      filterText: (filter, activeElements) => (0, import_element178.createInterpolateElement)(
        (0, import_i18n115.sprintf)(
          /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is not: 2024-01-01". */
          (0, import_i18n115.__)("<Name>%1$s is not: </Name><Value>%2$s</Value>"),
          filter.name,
          activeElements[0].label
        ),
        filterTextWrappers
      ),
      filter(item, field, filterValue) {
        if (filterValue === void 0) {
          return true;
        }
        const [fieldTemporal, filterTemporal] = toComparableTemporals(
          field.getValue({ item }),
          filterValue
        );
        return fieldTemporal !== filterTemporal;
      },
      selection: "single"
    }
  ];
  var getOperatorByName = (name2) => OPERATORS.find((op) => op.name === name2);
  var getAllOperatorNames = () => OPERATORS.map((op) => op.name);
  var isSingleSelectionOperator = (name2) => OPERATORS.filter((op) => op.selection === "single").some(
    (op) => op.name === name2
  );
  var isRegisteredOperator = (name2) => OPERATORS.some((op) => op.name === name2);

  // packages/dataviews/build-module/components/dataviews-filters/filter.mjs
  var import_jsx_runtime318 = __toESM(require_jsx_runtime(), 1);
  var ENTER = "Enter";
  var SPACE = " ";
  var FilterText = ({
    activeElements,
    filterInView,
    filter
  }) => {
    if (activeElements === void 0 || activeElements.length === 0) {
      return filter.name;
    }
    const operator = getOperatorByName(filterInView?.operator);
    if (operator !== void 0) {
      return operator.filterText(filter, activeElements);
    }
    return (0, import_i18n116.sprintf)(
      /* translators: 1: Filter name e.g.: "Unknown status for Author". */
      (0, import_i18n116.__)("Unknown status for %1$s"),
      filter.name
    );
  };
  function OperatorSelector({
    filter,
    view,
    onChangeView
  }) {
    const operatorOptions = filter.operators?.map((operator) => ({
      value: operator,
      label: getOperatorByName(operator)?.label || operator
    }));
    const currentFilter = view.filters?.find(
      (_filter) => _filter.field === filter.field
    );
    const value = currentFilter?.operator || filter.operators[0];
    return operatorOptions.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime318.jsxs)(
      Stack,
      {
        direction: "row",
        gap: "sm",
        justify: "flex-start",
        className: "dataviews-filters__summary-operators-container",
        align: "center",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(import_components46.FlexItem, { className: "dataviews-filters__summary-operators-filter-name", children: filter.name }),
          /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
            import_components46.SelectControl,
            {
              className: "dataviews-filters__summary-operators-filter-select",
              label: (0, import_i18n116.__)("Conditions"),
              value,
              options: operatorOptions,
              onChange: (newValue) => {
                const newOperator = newValue;
                const currentOperator = currentFilter?.operator;
                const newFilters = currentFilter ? [
                  ...(view.filters ?? []).map(
                    (_filter) => {
                      if (_filter.field === filter.field) {
                        const currentOpSelectionModel = getOperatorByName(
                          currentOperator
                        )?.selection;
                        const newOpSelectionModel = getOperatorByName(
                          newOperator
                        )?.selection;
                        const shouldResetValue = currentOpSelectionModel !== newOpSelectionModel || [
                          currentOpSelectionModel,
                          newOpSelectionModel
                        ].includes("custom");
                        return {
                          ..._filter,
                          value: shouldResetValue ? void 0 : _filter.value,
                          operator: newOperator
                        };
                      }
                      return _filter;
                    }
                  )
                ] : [
                  ...view.filters ?? [],
                  {
                    field: filter.field,
                    operator: newOperator,
                    value: void 0
                  }
                ];
                onChangeView({
                  ...view,
                  page: 1,
                  filters: newFilters
                });
              },
              size: "small",
              variant: "minimal",
              hideLabelFromVision: true
            }
          )
        ]
      }
    );
  }
  function Filter({
    addFilterRef,
    openedFilter,
    fields: fields2,
    ...commonProps
  }) {
    const toggleRef = (0, import_element179.useRef)(null);
    const { filter, view, onChangeView } = commonProps;
    const filterInView = view.filters?.find(
      (f2) => f2.field === filter.field
    );
    let activeElements = [];
    const field = (0, import_element179.useMemo)(() => {
      const currentField = fields2.find((f2) => f2.id === filter.field);
      if (currentField) {
        return {
          ...currentField,
          // Configure getValue as if Item was a plain object.
          // See related input-widget.tsx
          getValue: ({ item }) => item[currentField.id]
        };
      }
      return currentField;
    }, [fields2, filter.field]);
    const { elements: elements2 } = useElements({
      elements: filter.elements,
      getElements: filter.getElements
    });
    if (elements2.length > 0) {
      activeElements = elements2.filter((element) => {
        if (filter.singleSelection) {
          return element.value === filterInView?.value;
        }
        return filterInView?.value?.includes(element.value);
      });
    } else if (Array.isArray(filterInView?.value)) {
      const isComplete = !filterInView.value.some(
        (v3) => v3 === void 0 || v3 === null || v3 === ""
      );
      if (isComplete) {
        const label = filterInView.value.map((v3) => {
          const formattedValue = field?.getValueFormatted({
            item: { [field.id]: v3 },
            field
          });
          return formattedValue || String(v3);
        });
        activeElements = [
          {
            value: filterInView.value,
            // @ts-expect-error `label` is a `string[]` here, but the element type expects a `string`.
            label
          }
        ];
      }
    } else if (typeof filterInView?.value === "object") {
      activeElements = [
        { value: filterInView.value, label: filterInView.value }
      ];
    } else if (filterInView?.value !== void 0) {
      const label = field !== void 0 ? field.getValueFormatted({
        item: { [field.id]: filterInView.value },
        field
      }) : String(filterInView.value);
      activeElements = [
        {
          value: filterInView.value,
          label
        }
      ];
    }
    const isPrimary = filter.isPrimary;
    const isLocked = filterInView?.isLocked;
    const hasValues = !isLocked && filterInView?.value !== void 0;
    const canResetOrRemove = !isLocked && (!isPrimary || hasValues);
    const resetOrRemoveLabel = isPrimary ? (0, import_i18n116.__)("Reset") : (0, import_i18n116.__)("Remove");
    return /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
      import_components46.Dropdown,
      {
        defaultOpen: openedFilter === filter.field,
        contentClassName: "dataviews-filters__summary-popover",
        popoverProps: { placement: "bottom-start", role: "dialog" },
        onClose: () => {
          toggleRef.current?.focus();
        },
        renderToggle: ({ isOpen: isOpen2, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime318.jsxs)("div", { className: "dataviews-filters__summary-chip-container", children: [
          /* @__PURE__ */ (0, import_jsx_runtime318.jsxs)(tooltip_exports.Root, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
              tooltip_exports.Trigger,
              {
                render: /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
                  "div",
                  {
                    className: clsx_default(
                      "dataviews-filters__summary-chip",
                      {
                        "has-reset": canResetOrRemove,
                        "has-values": hasValues,
                        "is-not-clickable": isLocked
                      }
                    ),
                    role: "button",
                    tabIndex: isLocked ? -1 : 0,
                    onClick: () => {
                      if (!isLocked) {
                        onToggle();
                      }
                    },
                    onKeyDown: (event) => {
                      if (!isLocked && [ENTER, SPACE].includes(
                        event.key
                      )) {
                        onToggle();
                        event.preventDefault();
                      }
                    },
                    "aria-disabled": isLocked,
                    "aria-pressed": isOpen2,
                    "aria-expanded": isOpen2,
                    ref: toggleRef,
                    children: /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
                      FilterText,
                      {
                        activeElements,
                        filterInView,
                        filter
                      }
                    )
                  }
                )
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(tooltip_exports.Popup, { children: (0, import_i18n116.sprintf)(
              /* translators: 1: Filter name. */
              (0, import_i18n116.__)("Filter by: %1$s"),
              filter.name.toLowerCase()
            ) })
          ] }),
          canResetOrRemove && /* @__PURE__ */ (0, import_jsx_runtime318.jsxs)(tooltip_exports.Root, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
              tooltip_exports.Trigger,
              {
                render: /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
                  "button",
                  {
                    className: clsx_default(
                      "dataviews-filters__summary-chip-remove",
                      { "has-values": hasValues }
                    ),
                    "aria-label": resetOrRemoveLabel,
                    onClick: () => {
                      onChangeView({
                        ...view,
                        page: 1,
                        filters: view.filters?.filter(
                          (_filter) => _filter.field !== filter.field
                        )
                      });
                      if (!isPrimary) {
                        addFilterRef.current?.focus();
                      } else {
                        toggleRef.current?.focus();
                      }
                    },
                    children: /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(import_components46.Icon, { icon: close_small_default })
                  }
                )
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(tooltip_exports.Popup, { children: resetOrRemoveLabel })
          ] })
        ] }),
        renderContent: () => {
          return /* @__PURE__ */ (0, import_jsx_runtime318.jsxs)(Stack, { direction: "column", justify: "flex-start", children: [
            /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(OperatorSelector, { ...commonProps }),
            commonProps.filter.hasElements ? /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
              SearchWidget,
              {
                ...commonProps,
                filter: {
                  ...commonProps.filter,
                  elements: elements2
                }
              }
            ) : /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(InputWidget, { ...commonProps, fields: fields2 })
          ] });
        }
      }
    );
  }

  // packages/dataviews/build-module/components/dataviews-filters/add-filter.mjs
  var import_components47 = __toESM(require_components(), 1);
  var import_i18n117 = __toESM(require_i18n(), 1);
  var import_element180 = __toESM(require_element(), 1);
  var import_jsx_runtime319 = __toESM(require_jsx_runtime(), 1);
  function AddFilterMenu({
    filters,
    view,
    onChangeView,
    setOpenedFilter,
    triggerProps
  }) {
    const inactiveFilters = filters.filter((filter) => !filter.isVisible);
    return (
      // The `disabled` prop on `Menu.Root` (rather than on the trigger)
      // keeps the menu from opening while letting the trigger button stay
      // focusable via its own `accessibleWhenDisabled`.
      /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)(menu_exports.Root, { disabled: !inactiveFilters.length, children: [
        /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(menu_exports.Trigger, { ...triggerProps }),
        /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(menu_exports.Popup, { children: inactiveFilters.map((filter) => {
          return /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
            menu_exports.Item,
            {
              onClick: () => {
                setOpenedFilter(filter.field);
                onChangeView({
                  ...view,
                  page: 1,
                  filters: [
                    ...view.filters || [],
                    {
                      field: filter.field,
                      value: void 0,
                      operator: filter.operators[0]
                    }
                  ]
                });
              },
              children: /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(menu_exports.ItemLabel, { children: filter.name })
            },
            filter.field
          );
        }) })
      ] })
    );
  }
  function AddFilter({ filters, view, onChangeView, setOpenedFilter }, ref) {
    if (!filters.length || filters.every(({ isPrimary }) => isPrimary)) {
      return null;
    }
    const inactiveFilters = filters.filter((filter) => !filter.isVisible);
    return /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
      AddFilterMenu,
      {
        triggerProps: {
          render: /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
            import_components47.Button,
            {
              accessibleWhenDisabled: true,
              size: "compact",
              className: "dataviews-filters-button",
              variant: "tertiary",
              disabled: !inactiveFilters.length,
              ref
            }
          ),
          children: (0, import_i18n117.__)("Add filter")
        },
        ...{ filters, view, onChangeView, setOpenedFilter }
      }
    );
  }
  var add_filter_default = (0, import_element180.forwardRef)(AddFilter);

  // packages/dataviews/build-module/components/dataviews-filters/reset-filters.mjs
  var import_components48 = __toESM(require_components(), 1);
  var import_i18n118 = __toESM(require_i18n(), 1);
  var import_jsx_runtime320 = __toESM(require_jsx_runtime(), 1);
  function ResetFilter({
    filters,
    view,
    onChangeView
  }) {
    const isPrimary = (field) => filters.some(
      (_filter) => _filter.field === field && _filter.isPrimary
    );
    const isDisabled = !view.search && !view.filters?.some(
      (_filter) => !_filter.isLocked && (_filter.value !== void 0 || !isPrimary(_filter.field))
    );
    return /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
      import_components48.Button,
      {
        disabled: isDisabled,
        accessibleWhenDisabled: true,
        size: "compact",
        variant: "tertiary",
        className: "dataviews-filters__reset-button",
        onClick: () => {
          onChangeView({
            ...view,
            page: 1,
            search: "",
            filters: view.filters?.filter((f2) => !!f2.isLocked) || []
          });
        },
        children: (0, import_i18n118.__)("Reset")
      }
    );
  }

  // packages/dataviews/build-module/components/dataviews-filters/use-filters.mjs
  var import_element181 = __toESM(require_element(), 1);
  function useFilters(fields2, view) {
    return (0, import_element181.useMemo)(() => {
      const filters = [];
      fields2.forEach((field) => {
        if (field.filterBy === false || !field.hasElements && !field.Edit) {
          return;
        }
        const operators = field.filterBy.operators;
        const isPrimary = !!field.filterBy?.isPrimary;
        const isLocked = view.filters?.some(
          (f2) => f2.field === field.id && !!f2.isLocked
        ) ?? false;
        filters.push({
          field: field.id,
          name: field.label,
          elements: field.elements,
          getElements: field.getElements,
          hasElements: field.hasElements,
          singleSelection: operators.some(
            (op) => isSingleSelectionOperator(op)
          ),
          operators,
          isVisible: isLocked || isPrimary || !!view.filters?.some(
            (f2) => f2.field === field.id && isRegisteredOperator(f2.operator)
          ),
          isPrimary,
          isLocked
        });
      });
      filters.sort((a2, b2) => {
        if (a2.isLocked && !b2.isLocked) {
          return -1;
        }
        if (!a2.isLocked && b2.isLocked) {
          return 1;
        }
        if (a2.isPrimary && !b2.isPrimary) {
          return -1;
        }
        if (!a2.isPrimary && b2.isPrimary) {
          return 1;
        }
        return a2.name.localeCompare(b2.name);
      });
      return filters;
    }, [fields2, view]);
  }
  var use_filters_default = useFilters;

  // packages/dataviews/build-module/components/dataviews-filters/filters.mjs
  var import_jsx_runtime321 = __toESM(require_jsx_runtime(), 1);
  function Filters({ className }) {
    const { fields: fields2, view, onChangeView, openedFilter, setOpenedFilter } = (0, import_element182.useContext)(dataviews_context_default);
    const addFilterRef = (0, import_element182.useRef)(null);
    const filters = use_filters_default(fields2, view);
    const addFilter10 = /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
      add_filter_default,
      {
        filters,
        view,
        onChangeView,
        ref: addFilterRef,
        setOpenedFilter
      },
      "add-filter"
    );
    const visibleFilters = filters.filter((filter) => filter.isVisible);
    if (visibleFilters.length === 0) {
      return null;
    }
    const filterComponents = [
      ...visibleFilters.map((filter) => {
        return /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
          Filter,
          {
            filter,
            view,
            fields: fields2,
            onChangeView,
            addFilterRef,
            openedFilter
          },
          filter.field
        );
      }),
      addFilter10
    ];
    filterComponents.push(
      /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
        ResetFilter,
        {
          filters,
          view,
          onChangeView
        },
        "reset-filters"
      )
    );
    return /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
      Stack,
      {
        direction: "row",
        justify: "flex-start",
        gap: "sm",
        style: { width: "fit-content" },
        wrap: "wrap",
        className,
        children: filterComponents
      }
    );
  }
  var filters_default = (0, import_element182.memo)(Filters);

  // packages/dataviews/build-module/components/dataviews-filters/toggle.mjs
  var import_element183 = __toESM(require_element(), 1);
  var import_components49 = __toESM(require_components(), 1);
  var import_i18n119 = __toESM(require_i18n(), 1);
  var import_jsx_runtime322 = __toESM(require_jsx_runtime(), 1);
  function FiltersToggle() {
    const {
      filters,
      view,
      onChangeView,
      setOpenedFilter,
      isShowingFilter,
      setIsShowingFilter
    } = (0, import_element183.useContext)(dataviews_context_default);
    const buttonRef = (0, import_element183.useRef)(null);
    const onChangeViewWithFilterVisibility = (0, import_element183.useCallback)(
      (_view) => {
        onChangeView(_view);
        setIsShowingFilter(true);
      },
      [onChangeView, setIsShowingFilter]
    );
    if (filters.length === 0) {
      return null;
    }
    const hasVisibleFilters = filters.some((filter) => filter.isVisible);
    const addFilterButtonProps = {
      label: (0, import_i18n119.__)("Add filter"),
      "aria-expanded": false,
      isPressed: false
    };
    const toggleFiltersButtonProps = {
      label: (0, import_i18n119._x)("Filter", "verb"),
      "aria-expanded": isShowingFilter,
      isPressed: isShowingFilter,
      onClick: () => {
        if (!isShowingFilter) {
          setOpenedFilter(null);
        }
        setIsShowingFilter(!isShowingFilter);
      }
    };
    const hasPrimaryOrLockedFilters = filters.some(
      (filter) => filter.isPrimary || filter.isLocked
    );
    const buttonComponent = /* @__PURE__ */ (0, import_jsx_runtime322.jsx)(
      import_components49.Button,
      {
        ref: buttonRef,
        className: "dataviews-filters__visibility-toggle",
        size: "compact",
        icon: funnel_default,
        disabled: hasPrimaryOrLockedFilters,
        accessibleWhenDisabled: true,
        ...hasVisibleFilters ? toggleFiltersButtonProps : addFilterButtonProps
      }
    );
    return /* @__PURE__ */ (0, import_jsx_runtime322.jsx)("div", { className: "dataviews-filters__container-visibility-toggle", children: !hasVisibleFilters ? /* @__PURE__ */ (0, import_jsx_runtime322.jsx)(
      AddFilterMenu,
      {
        filters,
        view,
        onChangeView: onChangeViewWithFilterVisibility,
        setOpenedFilter,
        triggerProps: { render: buttonComponent }
      }
    ) : /* @__PURE__ */ (0, import_jsx_runtime322.jsx)(
      FilterVisibilityToggle,
      {
        buttonRef,
        filtersCount: view.filters?.length,
        children: buttonComponent
      }
    ) });
  }
  function FilterVisibilityToggle({
    buttonRef,
    filtersCount,
    children
  }) {
    (0, import_element183.useEffect)(
      () => () => {
        buttonRef.current?.focus();
      },
      [buttonRef]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime322.jsxs)(import_jsx_runtime322.Fragment, { children: [
      children,
      !!filtersCount && /* @__PURE__ */ (0, import_jsx_runtime322.jsx)("span", { className: "dataviews-filters-toggle__count", children: filtersCount })
    ] });
  }
  var toggle_default = FiltersToggle;

  // packages/dataviews/build-module/components/dataviews-filters/filters-toggled.mjs
  var import_element184 = __toESM(require_element(), 1);
  var import_jsx_runtime323 = __toESM(require_jsx_runtime(), 1);
  function FiltersToggled(props) {
    const { isShowingFilter } = (0, import_element184.useContext)(dataviews_context_default);
    if (!isShowingFilter) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime323.jsx)(filters_default, { ...props });
  }
  var filters_toggled_default = FiltersToggled;

  // packages/dataviews/build-module/components/dataviews-layout/index.mjs
  var import_element185 = __toESM(require_element(), 1);
  var import_components50 = __toESM(require_components(), 1);
  var import_i18n120 = __toESM(require_i18n(), 1);
  var import_jsx_runtime324 = __toESM(require_jsx_runtime(), 1);
  function DataViewsLayout({ className }) {
    const {
      actions: actions2 = [],
      data,
      fields: fields2,
      getItemId: getItemId3,
      getItemLevel,
      hasInitiallyLoaded,
      isLoading,
      view,
      onChangeView,
      selection,
      onChangeSelection,
      setOpenedFilter,
      onClickItem,
      isItemClickable: isItemClickable2,
      renderItemLink,
      defaultLayouts: defaultLayouts2,
      containerRef,
      empty = /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("p", { children: (0, import_i18n120.__)("No results") })
    } = (0, import_element185.useContext)(dataviews_context_default);
    const isDelayedInitialLoading = useDelayedLoading(!hasInitiallyLoaded, {
      delay: 200
    });
    if (!hasInitiallyLoaded) {
      if (!isDelayedInitialLoading) {
        return null;
      }
      return /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("div", { className: "dataviews-loading", children: /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(import_components50.Spinner, {}) }) });
    }
    const ViewComponent = VIEW_LAYOUTS.find(
      (v3) => v3.type === view.type && defaultLayouts2[v3.type]
    )?.component;
    return /* @__PURE__ */ (0, import_jsx_runtime324.jsx)("div", { className: "dataviews-layout__container", ref: containerRef, children: /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
      ViewComponent,
      {
        className,
        actions: actions2,
        data,
        fields: fields2,
        getItemId: getItemId3,
        getItemLevel,
        isLoading,
        onChangeView,
        onChangeSelection,
        selection,
        setOpenedFilter,
        onClickItem,
        renderItemLink,
        isItemClickable: isItemClickable2,
        view,
        empty
      }
    ) });
  }

  // packages/dataviews/build-module/components/dataviews-search/index.mjs
  var import_i18n121 = __toESM(require_i18n(), 1);
  var import_element186 = __toESM(require_element(), 1);
  var import_components51 = __toESM(require_components(), 1);
  var import_compose22 = __toESM(require_compose(), 1);
  var import_jsx_runtime325 = __toESM(require_jsx_runtime(), 1);
  var DataViewsSearch = (0, import_element186.memo)(function Search({ label }) {
    const { view, onChangeView } = (0, import_element186.useContext)(dataviews_context_default);
    const [search, setSearch, debouncedSearch] = (0, import_compose22.useDebouncedInput)(
      view.search
    );
    (0, import_element186.useEffect)(() => {
      if (view.search !== debouncedSearch) {
        setSearch(view.search ?? "");
      }
    }, [view.search, setSearch]);
    const onChangeViewRef = (0, import_element186.useRef)(onChangeView);
    const viewRef = (0, import_element186.useRef)(view);
    (0, import_element186.useEffect)(() => {
      onChangeViewRef.current = onChangeView;
      viewRef.current = view;
    }, [onChangeView, view]);
    (0, import_element186.useEffect)(() => {
      if (debouncedSearch !== viewRef.current?.search) {
        onChangeViewRef.current({
          ...viewRef.current,
          page: view.page ? 1 : void 0,
          startPosition: view.startPosition ? 1 : void 0,
          search: debouncedSearch
        });
      }
    }, [debouncedSearch]);
    const searchLabel = label || (0, import_i18n121.__)("Search");
    return /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
      import_components51.SearchControl,
      {
        className: "dataviews-search",
        onChange: setSearch,
        value: search,
        label: searchLabel,
        placeholder: searchLabel,
        size: "compact"
      }
    );
  });
  var dataviews_search_default = DataViewsSearch;

  // packages/dataviews/build-module/components/dataviews-view-config/index.mjs
  var import_components52 = __toESM(require_components(), 1);
  var import_i18n122 = __toESM(require_i18n(), 1);
  var import_element187 = __toESM(require_element(), 1);
  var import_warning2 = __toESM(require_warning(), 1);
  var import_compose23 = __toESM(require_compose(), 1);
  var import_jsx_runtime326 = __toESM(require_jsx_runtime(), 1);
  var DATAVIEWS_CONFIG_POPOVER_PROPS = {
    className: "dataviews-config__popover",
    placement: "bottom-end",
    offset: 9
  };
  function ViewTypeMenu() {
    const { view, onChangeView, defaultLayouts: defaultLayouts2 } = (0, import_element187.useContext)(dataviews_context_default);
    const availableLayouts = Object.keys(defaultLayouts2);
    if (availableLayouts.length <= 1) {
      return null;
    }
    const activeView = VIEW_LAYOUTS.find((v3) => view.type === v3.type);
    return /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)(menu_exports.Root, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
        menu_exports.Trigger,
        {
          render: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
            import_components52.Button,
            {
              size: "compact",
              icon: activeView?.icon,
              label: (0, import_i18n122.__)("Layout")
            }
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(menu_exports.Popup, { children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
        menu_exports.RadioGroup,
        {
          value: view.type,
          onValueChange: (value) => {
            switch (value) {
              case "list":
              case "grid":
              case "table":
              case "pickerGrid":
              case "pickerTable":
              case "pickerActivity":
              case "activity":
                const viewWithoutLayout = { ...view };
                if ("layout" in viewWithoutLayout) {
                  delete viewWithoutLayout.layout;
                }
                return onChangeView({
                  ...viewWithoutLayout,
                  type: value,
                  ...defaultLayouts2[value]
                });
            }
            (0, import_warning2.default)("Invalid dataview");
          },
          children: availableLayouts.map((layout) => {
            const config2 = VIEW_LAYOUTS.find(
              (v3) => v3.type === layout
            );
            if (!config2) {
              return null;
            }
            return /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
              menu_exports.RadioItem,
              {
                value: layout,
                closeOnClick: true,
                children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(menu_exports.ItemLabel, { children: config2.label })
              },
              layout
            );
          })
        }
      ) })
    ] });
  }
  function SortFieldControl() {
    const { view, fields: fields2, onChangeView } = (0, import_element187.useContext)(dataviews_context_default);
    const orderOptions = (0, import_element187.useMemo)(() => {
      const sortableFields = fields2.filter(
        (field) => field.enableSorting !== false
      );
      return sortableFields.map((field) => {
        return {
          label: field.label,
          value: field.id
        };
      });
    }, [fields2]);
    return /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
      import_components52.SelectControl,
      {
        label: (0, import_i18n122.__)("Sort by"),
        value: view.sort?.field,
        options: orderOptions,
        onChange: (value) => {
          onChangeView({
            ...view,
            sort: {
              direction: view?.sort?.direction || "desc",
              field: value
            },
            showLevels: false
          });
        }
      }
    );
  }
  function SortDirectionControl() {
    const { view, fields: fields2, onChangeView } = (0, import_element187.useContext)(dataviews_context_default);
    const sortableFields = fields2.filter(
      (field) => field.enableSorting !== false
    );
    if (sortableFields.length === 0) {
      return null;
    }
    let value = view.sort?.direction;
    if (!value && view.sort?.field) {
      value = "desc";
    }
    return /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
      import_components52.__experimentalToggleGroupControl,
      {
        className: "dataviews-view-config__sort-direction",
        isBlock: true,
        label: (0, import_i18n122.__)("Order"),
        value,
        onChange: (newDirection) => {
          if (newDirection === "asc" || newDirection === "desc") {
            onChangeView({
              ...view,
              sort: {
                direction: newDirection,
                field: view.sort?.field || // If there is no field assigned as the sorting field assign the first sortable field.
                fields2.find(
                  (field) => field.enableSorting !== false
                )?.id || ""
              },
              showLevels: false
            });
            return;
          }
          (0, import_warning2.default)("Invalid direction");
        },
        children: SORTING_DIRECTIONS.map((direction) => {
          return /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
            import_components52.__experimentalToggleGroupControlOptionIcon,
            {
              value: direction,
              icon: sortIcons[direction],
              label: sortLabels[direction]
            },
            direction
          );
        })
      }
    );
  }
  function ItemsPerPageControl() {
    const { view, config: config2, onChangeView } = (0, import_element187.useContext)(dataviews_context_default);
    const { infiniteScrollEnabled } = view;
    if (!config2 || !config2.perPageSizes || config2.perPageSizes.length < 2 || config2.perPageSizes.length > 6 || infiniteScrollEnabled) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
      import_components52.__experimentalToggleGroupControl,
      {
        isBlock: true,
        label: (0, import_i18n122.__)("Items per page"),
        value: view.perPage || 10,
        disabled: !view?.sort?.field,
        onChange: (newItemsPerPage) => {
          const newItemsPerPageNumber = typeof newItemsPerPage === "number" || newItemsPerPage === void 0 ? newItemsPerPage : parseInt(newItemsPerPage, 10);
          onChangeView({
            ...view,
            perPage: newItemsPerPageNumber,
            page: 1
          });
        },
        children: config2.perPageSizes.map((value) => {
          return /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
            import_components52.__experimentalToggleGroupControlOption,
            {
              value,
              label: value.toString()
            },
            value
          );
        })
      }
    );
  }
  function ResetViewButton() {
    const { onReset } = (0, import_element187.useContext)(dataviews_context_default);
    if (onReset === void 0) {
      return null;
    }
    const isDisabled = onReset === false;
    return /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
      import_components52.Button,
      {
        variant: "tertiary",
        size: "compact",
        disabled: isDisabled,
        accessibleWhenDisabled: true,
        className: "dataviews-view-config__reset-button",
        onClick: () => {
          if (typeof onReset === "function") {
            onReset();
          }
        },
        children: (0, import_i18n122.__)("Reset view")
      }
    );
  }
  function DataviewsViewConfigDropdown() {
    const { view, onReset } = (0, import_element187.useContext)(dataviews_context_default);
    const popoverId = (0, import_compose23.useInstanceId)(
      _DataViewsViewConfig,
      "dataviews-view-config-dropdown"
    );
    const activeLayout = VIEW_LAYOUTS.find(
      (layout) => layout.type === view.type
    );
    const isModified = typeof onReset === "function";
    return /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
      import_components52.Dropdown,
      {
        expandOnMobile: true,
        popoverProps: {
          ...DATAVIEWS_CONFIG_POPOVER_PROPS,
          id: popoverId
        },
        renderToggle: ({ onToggle, isOpen: isOpen2 }) => {
          return /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)("div", { className: "dataviews-view-config__toggle-wrapper", children: [
            /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
              import_components52.Button,
              {
                size: "compact",
                icon: cog_default,
                label: (0, import_i18n122._x)(
                  "View options",
                  "View is used as a noun"
                ),
                onClick: onToggle,
                "aria-expanded": isOpen2 ? "true" : "false",
                "aria-controls": popoverId
              }
            ),
            isModified && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("span", { className: "dataviews-view-config__modified-indicator" })
          ] });
        },
        renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
          import_components52.__experimentalDropdownContentWrapper,
          {
            paddingSize: "medium",
            className: "dataviews-config__popover-content-wrapper",
            children: /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)(
              Stack,
              {
                direction: "column",
                className: "dataviews-view-config",
                gap: "xl",
                children: [
                  /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)(
                    Stack,
                    {
                      direction: "row",
                      justify: "space-between",
                      align: "center",
                      className: "dataviews-view-config__header",
                      children: [
                        /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(
                          import_components52.__experimentalHeading,
                          {
                            level: 2,
                            className: "dataviews-settings-section__title",
                            children: (0, import_i18n122.__)("Appearance")
                          }
                        ),
                        /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(ResetViewButton, {})
                      ]
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)(Stack, { direction: "column", gap: "lg", children: [
                    /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)(
                      Stack,
                      {
                        direction: "row",
                        gap: "sm",
                        className: "dataviews-view-config__sort-controls",
                        children: [
                          /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(SortFieldControl, {}),
                          /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(SortDirectionControl, {})
                        ]
                      }
                    ),
                    !!activeLayout?.viewConfigOptions && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(activeLayout.viewConfigOptions, {}),
                    /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(ItemsPerPageControl, {}),
                    /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(PropertiesSection, {})
                  ] })
                ]
              }
            )
          }
        )
      }
    );
  }
  function _DataViewsViewConfig() {
    return /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)(import_jsx_runtime326.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(ViewTypeMenu, {}),
      /* @__PURE__ */ (0, import_jsx_runtime326.jsx)(DataviewsViewConfigDropdown, {})
    ] });
  }
  var DataViewsViewConfig = (0, import_element187.memo)(_DataViewsViewConfig);
  var dataviews_view_config_default = DataViewsViewConfig;

  // packages/dataviews/build-module/components/dataform-controls/checkbox.mjs
  var import_element196 = __toESM(require_element(), 1);

  // packages/dataviews/build-module/components/validated-form-controls/checkbox-control.mjs
  var import_element188 = __toESM(require_element(), 1);
  var import_compose24 = __toESM(require_compose(), 1);
  var import_components53 = __toESM(require_components(), 1);
  var import_jsx_runtime327 = __toESM(require_jsx_runtime(), 1);
  var UnforwardedValidatedCheckboxControl = ({
    required,
    customValidity,
    markWhenOptional,
    ...restProps
  }, forwardedRef) => {
    const validityTargetRef = (0, import_element188.useRef)(null);
    const mergedRefs = (0, import_compose24.useMergeRefs)([forwardedRef, validityTargetRef]);
    return /* @__PURE__ */ (0, import_jsx_runtime327.jsx)(
      ControlWithError,
      {
        className: "dataviews-validated-control",
        required,
        markWhenOptional,
        ref: mergedRefs,
        customValidity,
        getValidityTarget: () => validityTargetRef.current?.querySelector(
          'input[type="checkbox"]'
        ),
        children: /* @__PURE__ */ (0, import_jsx_runtime327.jsx)(
          import_components53.CheckboxControl,
          {
            ...restProps
          }
        )
      }
    );
  };
  var ValidatedCheckboxControl = (0, import_element188.forwardRef)(UnforwardedValidatedCheckboxControl);
  ValidatedCheckboxControl.displayName = "ValidatedCheckboxControl";

  // packages/dataviews/build-module/components/validated-form-controls/combobox-control.mjs
  var import_element189 = __toESM(require_element(), 1);
  var import_compose25 = __toESM(require_compose(), 1);
  var import_components54 = __toESM(require_components(), 1);
  var import_jsx_runtime328 = __toESM(require_jsx_runtime(), 1);
  var UnforwardedValidatedComboboxControl = ({
    required,
    customValidity,
    markWhenOptional,
    ...restProps
  }, forwardedRef) => {
    const validityTargetRef = (0, import_element189.useRef)(null);
    const mergedRefs = (0, import_compose25.useMergeRefs)([forwardedRef, validityTargetRef]);
    (0, import_element189.useEffect)(() => {
      const input = validityTargetRef.current?.querySelector(
        'input[role="combobox"]'
      );
      if (input) {
        input.required = required ?? false;
      }
    }, [required]);
    return (
      // TODO: Bug - Missing value error is not cleared immediately on change, waits for blur.
      /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(
        ControlWithError,
        {
          className: "dataviews-validated-control",
          required,
          markWhenOptional,
          ref: mergedRefs,
          customValidity,
          getValidityTarget: () => validityTargetRef.current?.querySelector(
            'input[role="combobox"]'
          ),
          children: /* @__PURE__ */ (0, import_jsx_runtime328.jsx)(import_components54.ComboboxControl, { ...restProps })
        }
      )
    );
  };
  var ValidatedComboboxControl = (0, import_element189.forwardRef)(UnforwardedValidatedComboboxControl);
  ValidatedComboboxControl.displayName = "ValidatedComboboxControl";

  // packages/dataviews/build-module/components/validated-form-controls/form-token-field.mjs
  var import_element190 = __toESM(require_element(), 1);
  var import_components55 = __toESM(require_components(), 1);
  var import_jsx_runtime329 = __toESM(require_jsx_runtime(), 1);
  var UnforwardedValidatedFormTokenField = ({
    required,
    customValidity,
    markWhenOptional,
    ...restProps
  }, forwardedRef) => {
    const validityTargetRef = (0, import_element190.useRef)(null);
    return /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)(
      "div",
      {
        className: "dataviews-validated-control__wrapper-with-error-delegate",
        ref: forwardedRef,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
            ControlWithError,
            {
              className: "dataviews-validated-control",
              required,
              markWhenOptional,
              customValidity,
              getValidityTarget: () => validityTargetRef.current,
              children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(import_components55.FormTokenField, { ...restProps })
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
            "input",
            {
              className: "dataviews-validated-control__error-delegate",
              type: "text",
              ref: validityTargetRef,
              required,
              value: restProps.value && restProps.value.length > 0 ? "hasvalue" : "",
              tabIndex: -1,
              onChange: () => {
              },
              onFocus: (e2) => {
                e2.target.previousElementSibling?.querySelector(
                  'input[type="text"]'
                )?.focus();
              }
            }
          )
        ]
      }
    );
  };
  var ValidatedFormTokenField = (0, import_element190.forwardRef)(UnforwardedValidatedFormTokenField);
  ValidatedFormTokenField.displayName = "ValidatedFormTokenField";

  // packages/dataviews/build-module/components/validated-form-controls/number-control.mjs
  var import_element191 = __toESM(require_element(), 1);
  var import_compose26 = __toESM(require_compose(), 1);
  var import_components56 = __toESM(require_components(), 1);
  var import_jsx_runtime330 = __toESM(require_jsx_runtime(), 1);
  var UnforwardedValidatedNumberControl = ({
    required,
    customValidity,
    markWhenOptional,
    ...restProps
  }, forwardedRef) => {
    const validityTargetRef = (0, import_element191.useRef)(null);
    const mergedRefs = (0, import_compose26.useMergeRefs)([forwardedRef, validityTargetRef]);
    return /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(
      ControlWithError,
      {
        className: "dataviews-validated-control",
        required,
        markWhenOptional,
        customValidity,
        getValidityTarget: () => validityTargetRef.current,
        children: /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(import_components56.__experimentalNumberControl, { ref: mergedRefs, ...restProps })
      }
    );
  };
  var ValidatedNumberControl = (0, import_element191.forwardRef)(UnforwardedValidatedNumberControl);
  ValidatedNumberControl.displayName = "ValidatedNumberControl";

  // packages/dataviews/build-module/components/validated-form-controls/radio-control.mjs
  var import_element192 = __toESM(require_element(), 1);
  var import_compose27 = __toESM(require_compose(), 1);
  var import_components57 = __toESM(require_components(), 1);
  var import_jsx_runtime331 = __toESM(require_jsx_runtime(), 1);
  var UnforwardedValidatedRadioControl = ({
    required,
    customValidity,
    markWhenOptional,
    ...restProps
  }, forwardedRef) => {
    const validityTargetRef = (0, import_element192.useRef)(null);
    const mergedRefs = (0, import_compose27.useMergeRefs)([forwardedRef, validityTargetRef]);
    return /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(
      ControlWithError,
      {
        className: "dataviews-validated-control",
        required,
        markWhenOptional,
        ref: mergedRefs,
        customValidity,
        getValidityTarget: () => validityTargetRef.current?.querySelector(
          'input[type="radio"]'
        ),
        children: /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(import_components57.RadioControl, { ...restProps })
      }
    );
  };
  var ValidatedRadioControl = (0, import_element192.forwardRef)(UnforwardedValidatedRadioControl);
  ValidatedRadioControl.displayName = "ValidatedRadioControl";

  // packages/dataviews/build-module/components/validated-form-controls/select-control.mjs
  var import_element193 = __toESM(require_element(), 1);
  var import_compose28 = __toESM(require_compose(), 1);
  var import_components58 = __toESM(require_components(), 1);
  var import_jsx_runtime332 = __toESM(require_jsx_runtime(), 1);
  var UnforwardedValidatedSelectControl = ({
    required,
    customValidity,
    markWhenOptional,
    ...restProps
  }, forwardedRef) => {
    const validityTargetRef = (0, import_element193.useRef)(null);
    const mergedRefs = (0, import_compose28.useMergeRefs)([forwardedRef, validityTargetRef]);
    return /* @__PURE__ */ (0, import_jsx_runtime332.jsx)(
      ControlWithError,
      {
        className: "dataviews-validated-control",
        required,
        markWhenOptional,
        customValidity,
        getValidityTarget: () => validityTargetRef.current,
        children: /* @__PURE__ */ (0, import_jsx_runtime332.jsx)(
          import_components58.SelectControl,
          {
            ref: mergedRefs,
            // A runtime boolean cannot statically discriminate
            // SelectControl's single/multiple props union.
            ...restProps
          }
        )
      }
    );
  };
  var ValidatedSelectControl = (0, import_element193.forwardRef)(UnforwardedValidatedSelectControl);
  ValidatedSelectControl.displayName = "ValidatedSelectControl";

  // packages/dataviews/build-module/components/validated-form-controls/toggle-control.mjs
  var import_element194 = __toESM(require_element(), 1);
  var import_compose29 = __toESM(require_compose(), 1);
  var import_components59 = __toESM(require_components(), 1);
  var import_jsx_runtime333 = __toESM(require_jsx_runtime(), 1);
  var UnforwardedValidatedToggleControl = ({
    required,
    customValidity,
    markWhenOptional,
    ...restProps
  }, forwardedRef) => {
    const validityTargetRef = (0, import_element194.useRef)(null);
    const mergedRefs = (0, import_compose29.useMergeRefs)([forwardedRef, validityTargetRef]);
    return /* @__PURE__ */ (0, import_jsx_runtime333.jsx)(
      ControlWithError,
      {
        className: "dataviews-validated-control",
        required,
        markWhenOptional,
        customValidity,
        getValidityTarget: () => validityTargetRef.current,
        children: /* @__PURE__ */ (0, import_jsx_runtime333.jsx)(
          import_components59.ToggleControl,
          {
            ref: mergedRefs,
            required,
            ...restProps
          }
        )
      }
    );
  };
  var ValidatedToggleControl = (0, import_element194.forwardRef)(UnforwardedValidatedToggleControl);
  ValidatedToggleControl.displayName = "ValidatedToggleControl";

  // packages/dataviews/build-module/components/validated-form-controls/toggle-group-control.mjs
  var import_element195 = __toESM(require_element(), 1);
  var import_components60 = __toESM(require_components(), 1);
  var import_jsx_runtime334 = __toESM(require_jsx_runtime(), 1);
  var UnforwardedValidatedToggleGroupControl = ({
    required,
    customValidity,
    markWhenOptional,
    ...restProps
  }, forwardedRef) => {
    const validityTargetRef = (0, import_element195.useRef)(null);
    const nameAttr = (0, import_element195.useId)();
    return /* @__PURE__ */ (0, import_jsx_runtime334.jsxs)("div", { className: "dataviews-validated-control__wrapper-with-error-delegate", children: [
      /* @__PURE__ */ (0, import_jsx_runtime334.jsx)(
        ControlWithError,
        {
          className: "dataviews-validated-control",
          required,
          markWhenOptional,
          customValidity,
          getValidityTarget: () => validityTargetRef.current,
          children: /* @__PURE__ */ (0, import_jsx_runtime334.jsx)(import_components60.__experimentalToggleGroupControl, { ref: forwardedRef, ...restProps })
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime334.jsx)(
        "input",
        {
          className: "dataviews-validated-control__error-delegate",
          type: "radio",
          ref: validityTargetRef,
          required,
          checked: restProps.value !== void 0,
          tabIndex: -1,
          name: nameAttr,
          onChange: () => {
          },
          onFocus: (e2) => {
            e2.target.previousElementSibling?.querySelector(
              '[data-active-item="true"]'
            )?.focus();
          }
        }
      )
    ] });
  };
  var ValidatedToggleGroupControl = (0, import_element195.forwardRef)(UnforwardedValidatedToggleGroupControl);
  ValidatedToggleGroupControl.displayName = "ValidatedToggleGroupControl";

  // packages/dataviews/build-module/components/dataform-controls/utils/get-custom-validity.mjs
  function getCustomValidity(isValid2, validity) {
    let customValidity;
    if (isValid2?.required && validity?.required) {
      customValidity = validity.required.message ? {
        type: validity.required.type,
        message: validity.required.message
      } : void 0;
    } else if (isValid2?.pattern && validity?.pattern) {
      customValidity = validity.pattern;
    } else if (isValid2?.min && validity?.min) {
      customValidity = validity.min;
    } else if (isValid2?.max && validity?.max) {
      customValidity = validity.max;
    } else if (isValid2?.minLength && validity?.minLength) {
      customValidity = validity.minLength;
    } else if (isValid2?.maxLength && validity?.maxLength) {
      customValidity = validity.maxLength;
    } else if (isValid2?.elements && validity?.elements) {
      customValidity = validity.elements;
    } else if (validity?.custom) {
      customValidity = validity.custom;
    }
    return customValidity;
  }

  // packages/dataviews/build-module/components/dataform-controls/checkbox.mjs
  var import_jsx_runtime335 = __toESM(require_jsx_runtime(), 1);
  function Checkbox({
    field,
    onChange,
    data,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    const { getValue: getValue3, setValue, label, description, isValid: isValid2 } = field;
    const disabled2 = field.isDisabled({ item: data, field });
    const onChangeControl = (0, import_element196.useCallback)(() => {
      onChange(
        setValue({ item: data, value: !getValue3({ item: data }) })
      );
    }, [data, getValue3, onChange, setValue]);
    return /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(
      ValidatedCheckboxControl,
      {
        required: !!field.isValid?.required,
        markWhenOptional,
        customValidity: getCustomValidity(isValid2, validity),
        hidden: hideLabelFromVision,
        label,
        help: description,
        checked: getValue3({ item: data }),
        onChange: onChangeControl,
        disabled: disabled2
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/combobox.mjs
  var import_components61 = __toESM(require_components(), 1);
  var import_element197 = __toESM(require_element(), 1);
  var import_jsx_runtime336 = __toESM(require_jsx_runtime(), 1);
  function Combobox3({
    data,
    field,
    onChange,
    hideLabelFromVision,
    validity
  }) {
    const { label, description, placeholder, getValue: getValue3, setValue, isValid: isValid2 } = field;
    const value = getValue3({ item: data }) ?? "";
    const onChangeControl = (0, import_element197.useCallback)(
      (newValue) => onChange(setValue({ item: data, value: newValue ?? "" })),
      [data, onChange, setValue]
    );
    const { elements: elements2, isLoading } = useElements({
      elements: field.elements,
      getElements: field.getElements
    });
    if (isLoading) {
      return /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(import_components61.Spinner, {});
    }
    return /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(
      ValidatedComboboxControl,
      {
        required: !!field.isValid?.required,
        customValidity: getCustomValidity(isValid2, validity),
        label,
        value,
        help: description,
        placeholder,
        options: elements2,
        onChange: onChangeControl,
        hideLabelFromVision,
        allowReset: true,
        expandOnFocus: true
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/datetime.mjs
  var import_components63 = __toESM(require_components(), 1);
  var import_element200 = __toESM(require_element(), 1);
  var import_i18n125 = __toESM(require_i18n(), 1);
  var import_a11y4 = __toESM(require_a11y(), 1);
  var import_date10 = __toESM(require_date(), 1);

  // packages/dataviews/build-module/components/dataform-controls/utils/relative-date-control.mjs
  var import_components62 = __toESM(require_components(), 1);
  var import_element198 = __toESM(require_element(), 1);
  var import_i18n123 = __toESM(require_i18n(), 1);
  var import_jsx_runtime337 = __toESM(require_jsx_runtime(), 1);
  var TIME_UNITS_OPTIONS = {
    [OPERATOR_IN_THE_PAST]: [
      { value: "days", label: (0, import_i18n123.__)("Days") },
      { value: "weeks", label: (0, import_i18n123.__)("Weeks") },
      { value: "months", label: (0, import_i18n123.__)("Months") },
      { value: "years", label: (0, import_i18n123.__)("Years") }
    ],
    [OPERATOR_OVER]: [
      { value: "days", label: (0, import_i18n123.__)("Days ago") },
      { value: "weeks", label: (0, import_i18n123.__)("Weeks ago") },
      { value: "months", label: (0, import_i18n123.__)("Months ago") },
      { value: "years", label: (0, import_i18n123.__)("Years ago") }
    ]
  };
  function RelativeDateControl({
    className,
    data,
    field,
    onChange,
    hideLabelFromVision,
    operator
  }) {
    const options = TIME_UNITS_OPTIONS[operator === OPERATOR_IN_THE_PAST ? "inThePast" : "over"];
    const { id, label, description, getValue: getValue3, setValue } = field;
    const disabled2 = field.isDisabled({ item: data, field });
    const fieldValue = getValue3({ item: data });
    const { value: relValue = "", unit = options[0].value } = fieldValue && typeof fieldValue === "object" ? fieldValue : {};
    const onChangeValue = (0, import_element198.useCallback)(
      (newValue) => onChange(
        setValue({
          item: data,
          value: { value: Number(newValue), unit }
        })
      ),
      [onChange, setValue, data, unit]
    );
    const onChangeUnit = (0, import_element198.useCallback)(
      (newUnit) => onChange(
        setValue({
          item: data,
          value: { value: relValue, unit: newUnit }
        })
      ),
      [onChange, setValue, data, relValue]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
      import_components62.BaseControl,
      {
        id,
        className: clsx_default(className, "dataviews-controls__relative-date"),
        label,
        hideLabelFromVision,
        help: description,
        children: /* @__PURE__ */ (0, import_jsx_runtime337.jsxs)(Stack, { direction: "row", gap: "sm", children: [
          /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
            import_components62.__experimentalNumberControl,
            {
              className: "dataviews-controls__relative-date-number",
              spinControls: "none",
              min: 1,
              step: 1,
              value: relValue,
              onChange: onChangeValue,
              disabled: disabled2
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
            import_components62.SelectControl,
            {
              className: "dataviews-controls__relative-date-unit",
              label: (0, import_i18n123.__)("Unit"),
              value: unit,
              options,
              onChange: onChangeUnit,
              hideLabelFromVision: true,
              disabled: disabled2
            }
          )
        ] })
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/utils/to-calendar-date.mjs
  function toCalendarDate(date, timeZone) {
    return timeZone ? new TZDate(date, timeZone) : date;
  }

  // packages/dataviews/build-module/components/dataform-controls/utils/use-disabled-date-matchers.mjs
  var import_element199 = __toESM(require_element(), 1);
  function useDisabledDateMatchers(isValid2, parseDateFn) {
    const minConstraint = typeof isValid2.min?.constraint === "string" ? isValid2.min.constraint : void 0;
    const maxConstraint = typeof isValid2.max?.constraint === "string" ? isValid2.max.constraint : void 0;
    const disabledMatchers = (0, import_element199.useMemo)(() => {
      const matchers = [];
      if (minConstraint) {
        const minDate = parseDateFn(minConstraint);
        if (minDate) {
          matchers.push({ before: minDate });
        }
      }
      if (maxConstraint) {
        const maxDate = parseDateFn(maxConstraint);
        if (maxDate) {
          matchers.push({ after: maxDate });
        }
      }
      return matchers.length > 0 ? matchers : void 0;
    }, [minConstraint, maxConstraint, parseDateFn]);
    return { minConstraint, maxConstraint, disabledMatchers };
  }

  // packages/dataviews/build-module/components/dataform-controls/utils/get-calendar-locale.mjs
  var LANGUAGE_ALIASES = {
    ary: "ar-MA",
    // Moroccan Arabic.
    haz: "fa"
    // Hazaragi, a variety of Persian.
  };
  function getCalendarLocale(wpLocale) {
    const subtags = wpLocale?.trim().split(/[_-]/) ?? [];
    const language = subtags.shift()?.toLowerCase();
    if (!language) {
      return void 0;
    }
    const normalized = [LANGUAGE_ALIASES[language] ?? language];
    for (const subtag of subtags) {
      if (/^[a-z]{4}$/i.test(subtag) || /^([a-z]{2}|\d{3})$/i.test(subtag)) {
        normalized.push(subtag);
      }
    }
    return normalized.join("-");
  }

  // packages/dataviews/build-module/components/dataform-controls/utils/get-timezone-description.mjs
  var import_date8 = __toESM(require_date(), 1);
  var import_i18n124 = __toESM(require_i18n(), 1);
  function getTimezoneDescription() {
    const { timezone } = (0, import_date8.getSettings)();
    const userTimezoneOffset = -1 * ((/* @__PURE__ */ new Date()).getTimezoneOffset() / 60);
    if (Number(timezone.offset) === userTimezoneOffset) {
      return void 0;
    }
    const offsetSymbol = Number(timezone.offset) >= 0 ? "+" : "";
    const zoneAbbr = "" !== timezone.abbr && isNaN(Number(timezone.abbr)) ? timezone.abbr : `UTC${offsetSymbol}${timezone.offsetFormatted}`;
    const prettyTimezoneString = timezone.string.replaceAll("_", " ");
    let timezoneDetail = zoneAbbr;
    if ("UTC" === timezone.string) {
      timezoneDetail = (0, import_i18n124.__)("Coordinated Universal Time");
    } else if (prettyTimezoneString.trim().length > 0) {
      timezoneDetail = `(${zoneAbbr}) ${prettyTimezoneString}`;
    }
    return (0, import_i18n124.sprintf)(
      /* translators: %s: timezone detail, e.g. "(CEST) Europe/Madrid" or "UTC+3". */
      (0, import_i18n124.__)("Timezone: %s"),
      timezoneDetail
    );
  }

  // packages/dataviews/build-module/field-types/utils/parse-date-time.mjs
  var import_date9 = __toESM(require_date(), 1);
  function parseDateTime(dateTimeString) {
    if (!dateTimeString) {
      return null;
    }
    const parsed = (0, import_date9.getDate)(dateTimeString);
    return parsed && isValid(parsed) ? parsed : null;
  }

  // packages/dataviews/build-module/components/dataform-controls/datetime.mjs
  var import_jsx_runtime338 = __toESM(require_jsx_runtime(), 1);
  var formatDateTime = (value) => {
    if (!value) {
      return "";
    }
    return (0, import_date10.dateI18n)("Y-m-d\\TH:i", (0, import_date10.getDate)(value));
  };
  function CalendarDateTimeControl({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity,
    config: config2
  }) {
    const { compact } = config2 || {};
    const { id, label, description, setValue, getValue: getValue3, isValid: isValid2 } = field;
    const disabled2 = field.isDisabled({ item: data, field });
    const fieldValue = getValue3({ item: data });
    const value = typeof fieldValue === "string" ? fieldValue : void 0;
    const { timezone } = (0, import_date10.getSettings)();
    const timeZone = timezone.string || (0, import_date10.dateI18n)("P");
    const [calendarMonth, setCalendarMonth] = (0, import_element200.useState)(() => {
      const parsedDate = parseDateTime(value);
      return toCalendarDate(parsedDate || /* @__PURE__ */ new Date(), timeZone);
    });
    (0, import_element200.useEffect)(() => {
      const parsedDate = parseDateTime(value);
      if (parsedDate) {
        const targetMonth = toCalendarDate(parsedDate, timeZone);
        setCalendarMonth(
          (currentMonth) => isSameMonth(
            targetMonth,
            toCalendarDate(currentMonth, timeZone)
          ) ? currentMonth : targetMonth
        );
      }
    }, [timeZone, value]);
    const inputControlRef = (0, import_element200.useRef)(null);
    const validationTimeoutRef = (0, import_element200.useRef)(void 0);
    const { minConstraint, maxConstraint, disabledMatchers } = useDisabledDateMatchers(isValid2, parseDateTime);
    const onChangeCallback = (0, import_element200.useCallback)(
      (newValue) => onChange(setValue({ item: data, value: newValue })),
      [data, onChange, setValue]
    );
    (0, import_element200.useEffect)(() => {
      return () => clearTimeout(validationTimeoutRef.current);
    }, []);
    const onSelectDate = (0, import_element200.useCallback)(
      (newDate) => {
        if (newDate) {
          const wpDate = (0, import_date10.dateI18n)("Y-m-d", newDate);
          const wpTime = value ? (0, import_date10.dateI18n)("H:i", (0, import_date10.getDate)(value)) : "00:00";
          const finalDateTime = (0, import_date10.getDate)(`${wpDate}T${wpTime}`);
          onChangeCallback(finalDateTime.toISOString());
        } else {
          onChangeCallback(void 0);
        }
        clearTimeout(validationTimeoutRef.current);
        validationTimeoutRef.current = setTimeout(() => {
          const input = inputControlRef.current;
          if (!input) {
            return;
          }
          input.dispatchEvent(
            new Event("invalid", { cancelable: true })
          );
          if (input.validationMessage) {
            (0, import_a11y4.speak)(input.validationMessage);
          }
        }, 0);
      },
      [onChangeCallback, value]
    );
    const handleManualDateTimeChange = (0, import_element200.useCallback)(
      (newValue) => {
        if (newValue) {
          const dateTime = (0, import_date10.getDate)(newValue);
          onChangeCallback(dateTime.toISOString());
          const parsedDate = parseDateTime(dateTime.toISOString());
          if (parsedDate) {
            setCalendarMonth(toCalendarDate(parsedDate, timeZone));
          }
        } else {
          onChangeCallback(void 0);
        }
      },
      [onChangeCallback, timeZone]
    );
    const { format: fieldFormat } = field;
    const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date10.getSettings)().l10n.startOfWeek;
    const locale = getCalendarLocale((0, import_date10.getSettings)().l10n.locale);
    let displayLabel = label;
    if (isValid2?.required && !markWhenOptional && !hideLabelFromVision) {
      displayLabel = `${label} (${(0, import_i18n125.__)("Required")})`;
    } else if (!isValid2?.required && markWhenOptional && !hideLabelFromVision) {
      displayLabel = `${label} (${(0, import_i18n125.__)("Optional")})`;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
      import_components63.BaseControl,
      {
        id,
        label: displayLabel,
        help: description,
        hideLabelFromVision,
        children: /* @__PURE__ */ (0, import_jsx_runtime338.jsxs)(Stack, { direction: "column", gap: "lg", children: [
          /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
            ValidatedInputControl,
            {
              ref: inputControlRef,
              required: !!isValid2?.required,
              customValidity: getCustomValidity(isValid2, validity),
              type: "datetime-local",
              label: (0, import_i18n125.__)("Date time"),
              hideLabelFromVision: true,
              value: formatDateTime(value),
              onValueChange: handleManualDateTimeChange,
              disabled: disabled2,
              description: getTimezoneDescription(),
              min: minConstraint ? formatDateTime(minConstraint) : void 0,
              max: maxConstraint ? formatDateTime(maxConstraint) : void 0
            }
          ),
          !compact && /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
            Calendar,
            {
              style: { width: "100%" },
              value: value ? parseDateTime(value) : null,
              onValueChange: onSelectDate,
              month: calendarMonth,
              onMonthChange: setCalendarMonth,
              timeZone,
              locale,
              dir: (0, import_i18n125.isRTL)() ? "rtl" : "ltr",
              weekStartsOn,
              disabled: disabled2 || disabledMatchers
            }
          )
        ] })
      }
    );
  }
  function DateTime({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    operator,
    validity,
    config: config2
  }) {
    if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) {
      return /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
        RelativeDateControl,
        {
          className: "dataviews-controls__datetime",
          data,
          field,
          onChange,
          hideLabelFromVision,
          operator
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
      CalendarDateTimeControl,
      {
        data,
        field,
        onChange,
        hideLabelFromVision,
        markWhenOptional,
        validity,
        config: config2
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/date.mjs
  var import_components64 = __toESM(require_components(), 1);
  var import_a11y5 = __toESM(require_a11y(), 1);
  var import_element201 = __toESM(require_element(), 1);
  var import_i18n126 = __toESM(require_i18n(), 1);
  var import_date11 = __toESM(require_date(), 1);
  var import_jsx_runtime339 = __toESM(require_jsx_runtime(), 1);
  var DATE_PRESETS = [
    {
      id: "today",
      label: (0, import_i18n126.__)("Today"),
      getValue: () => (0, import_date11.getDate)(null)
    },
    {
      id: "yesterday",
      label: (0, import_i18n126.__)("Yesterday"),
      getValue: () => {
        const today = (0, import_date11.getDate)(null);
        return subDays(today, 1);
      }
    },
    {
      id: "past-week",
      label: (0, import_i18n126.__)("Past week"),
      getValue: () => {
        const today = (0, import_date11.getDate)(null);
        return subDays(today, 7);
      }
    },
    {
      id: "past-month",
      label: (0, import_i18n126.__)("Past month"),
      getValue: () => {
        const today = (0, import_date11.getDate)(null);
        return subMonths(today, 1);
      }
    }
  ];
  var DATE_RANGE_PRESETS = [
    {
      id: "last-7-days",
      label: (0, import_i18n126.__)("Last 7 days"),
      getValue: () => {
        const today = (0, import_date11.getDate)(null);
        return [subDays(today, 7), today];
      }
    },
    {
      id: "last-30-days",
      label: (0, import_i18n126.__)("Last 30 days"),
      getValue: () => {
        const today = (0, import_date11.getDate)(null);
        return [subDays(today, 30), today];
      }
    },
    {
      id: "month-to-date",
      label: (0, import_i18n126.__)("Month to date"),
      getValue: () => {
        const today = (0, import_date11.getDate)(null);
        return [startOfMonth(today), today];
      }
    },
    {
      id: "last-year",
      label: (0, import_i18n126.__)("Last year"),
      getValue: () => {
        const today = (0, import_date11.getDate)(null);
        return [subYears(today, 1), today];
      }
    },
    {
      id: "year-to-date",
      label: (0, import_i18n126.__)("Year to date"),
      getValue: () => {
        const today = (0, import_date11.getDate)(null);
        return [startOfYear(today), today];
      }
    }
  ];
  var parseDate2 = (dateString) => {
    if (!dateString) {
      return null;
    }
    const parsed = parseISO(dateString);
    return isValid(parsed) ? parsed : null;
  };
  var formatDate = (date) => {
    if (!date) {
      return "";
    }
    return typeof date === "string" ? date : format(date, "yyyy-MM-dd");
  };
  function ValidatedDateControl({
    field,
    validity,
    inputRefs,
    isTouched,
    setIsTouched,
    children
  }) {
    const { isValid: isValid2 } = field;
    const [customValidity, setCustomValidity] = (0, import_element201.useState)(void 0);
    const validateRefs = (0, import_element201.useCallback)(() => {
      const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs];
      for (const ref of refs) {
        const input = ref.current;
        if (input && !input.validity.valid) {
          setCustomValidity({
            type: "invalid",
            message: input.validationMessage
          });
          return;
        }
      }
      setCustomValidity(void 0);
    }, [inputRefs]);
    (0, import_element201.useEffect)(() => {
      const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs];
      const result = validity ? getCustomValidity(isValid2, validity) : void 0;
      for (const ref of refs) {
        const input = ref.current;
        if (input) {
          input.setCustomValidity(
            result?.type === "invalid" && result.message ? result.message : ""
          );
        }
      }
    }, [inputRefs, isValid2, validity]);
    (0, import_element201.useEffect)(() => {
      const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs];
      const handleInvalid = (event) => {
        event.preventDefault();
        setIsTouched(true);
      };
      for (const ref of refs) {
        ref.current?.addEventListener("invalid", handleInvalid);
      }
      return () => {
        for (const ref of refs) {
          ref.current?.removeEventListener("invalid", handleInvalid);
        }
      };
    }, [inputRefs, setIsTouched]);
    (0, import_element201.useEffect)(() => {
      if (!isTouched) {
        return;
      }
      const result = validity ? getCustomValidity(isValid2, validity) : void 0;
      if (result) {
        setCustomValidity(result);
      } else {
        validateRefs();
      }
    }, [isTouched, isValid2, validity, validateRefs]);
    (0, import_element201.useEffect)(() => {
      if (isTouched && customValidity?.message) {
        (0, import_a11y5.speak)(customValidity.message);
      }
    }, [isTouched, customValidity?.message]);
    const onBlur = (event) => {
      if (isTouched) {
        return;
      }
      if (!event.relatedTarget || !event.currentTarget.contains(event.relatedTarget)) {
        setIsTouched(true);
      }
    };
    return /* @__PURE__ */ (0, import_jsx_runtime339.jsxs)(Stack, { direction: "column", gap: "sm", onBlur, children: [
      children,
      customValidity && /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
        ValidityIndicator,
        {
          type: customValidity.type,
          message: customValidity.message
        }
      )
    ] });
  }
  function CalendarDateControl({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    const {
      id,
      label,
      description,
      setValue,
      getValue: getValue3,
      isValid: isValid2,
      format: fieldFormat
    } = field;
    const disabled2 = field.isDisabled({ item: data, field });
    const [selectedPresetId, setSelectedPresetId] = (0, import_element201.useState)(
      null
    );
    const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date11.getSettings)().l10n.startOfWeek;
    const locale = getCalendarLocale((0, import_date11.getSettings)().l10n.locale);
    const fieldValue = getValue3({ item: data });
    const value = typeof fieldValue === "string" ? fieldValue : void 0;
    const [calendarMonth, setCalendarMonth] = (0, import_element201.useState)(() => {
      const parsedDate = parseDate2(value);
      return parsedDate || /* @__PURE__ */ new Date();
    });
    (0, import_element201.useEffect)(() => {
      const parsedDate = parseDate2(value);
      if (parsedDate) {
        setCalendarMonth(
          (currentMonth) => isSameMonth(parsedDate, currentMonth) ? currentMonth : parsedDate
        );
      }
    }, [value]);
    const [isTouched, setIsTouched] = (0, import_element201.useState)(false);
    const validityTargetRef = (0, import_element201.useRef)(null);
    const { minConstraint, maxConstraint, disabledMatchers } = useDisabledDateMatchers(isValid2, parseDate2);
    const onChangeCallback = (0, import_element201.useCallback)(
      (newValue) => onChange(setValue({ item: data, value: newValue })),
      [data, onChange, setValue]
    );
    const onSelectDate = (0, import_element201.useCallback)(
      (newDate) => {
        const dateValue = newDate ? formatDate(newDate) : void 0;
        onChangeCallback(dateValue);
        setSelectedPresetId(null);
        setIsTouched(true);
      },
      [onChangeCallback]
    );
    const handlePresetClick = (0, import_element201.useCallback)(
      (preset) => {
        const presetDate = preset.getValue();
        const dateValue = formatDate(presetDate);
        setCalendarMonth(presetDate);
        onChangeCallback(dateValue);
        setSelectedPresetId(preset.id);
        setIsTouched(true);
      },
      [onChangeCallback]
    );
    const handleManualDateChange = (0, import_element201.useCallback)(
      (newValue) => {
        onChangeCallback(newValue);
        if (newValue) {
          const parsedDate = parseDate2(newValue);
          if (parsedDate) {
            setCalendarMonth(parsedDate);
          }
        }
        setSelectedPresetId(null);
        setIsTouched(true);
      },
      [onChangeCallback]
    );
    let displayLabel = label;
    if (isValid2?.required && !markWhenOptional) {
      displayLabel = `${label} (${(0, import_i18n126.__)("Required")})`;
    } else if (!isValid2?.required && markWhenOptional) {
      displayLabel = `${label} (${(0, import_i18n126.__)("Optional")})`;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
      ValidatedDateControl,
      {
        field,
        validity,
        inputRefs: validityTargetRef,
        isTouched,
        setIsTouched,
        children: /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
          import_components64.BaseControl,
          {
            id,
            className: "dataviews-controls__date",
            label: displayLabel,
            help: description,
            hideLabelFromVision,
            children: /* @__PURE__ */ (0, import_jsx_runtime339.jsxs)(Stack, { direction: "column", gap: "lg", children: [
              /* @__PURE__ */ (0, import_jsx_runtime339.jsxs)(
                Stack,
                {
                  direction: "row",
                  gap: "sm",
                  wrap: "wrap",
                  justify: "flex-start",
                  children: [
                    DATE_PRESETS.map((preset) => {
                      const isSelected2 = selectedPresetId === preset.id;
                      return /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
                        import_components64.Button,
                        {
                          className: "dataviews-controls__date-preset",
                          variant: "tertiary",
                          isPressed: isSelected2,
                          size: "small",
                          disabled: disabled2,
                          accessibleWhenDisabled: true,
                          onClick: () => handlePresetClick(preset),
                          children: preset.label
                        },
                        preset.id
                      );
                    }),
                    /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
                      import_components64.Button,
                      {
                        className: "dataviews-controls__date-preset",
                        variant: "tertiary",
                        isPressed: !selectedPresetId,
                        size: "small",
                        disabled: !!selectedPresetId || disabled2,
                        accessibleWhenDisabled: true,
                        children: (0, import_i18n126.__)("Custom")
                      }
                    )
                  ]
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
                import_components64.__experimentalInputControl,
                {
                  ref: validityTargetRef,
                  type: "date",
                  label: (0, import_i18n126.__)("Date"),
                  hideLabelFromVision: true,
                  value,
                  onChange: handleManualDateChange,
                  required: !!field.isValid?.required,
                  disabled: disabled2,
                  min: minConstraint,
                  max: maxConstraint
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
                Calendar,
                {
                  style: { width: "100%" },
                  value: value ? parseDate2(value) : null,
                  onValueChange: onSelectDate,
                  month: calendarMonth,
                  onMonthChange: setCalendarMonth,
                  locale,
                  dir: (0, import_i18n126.isRTL)() ? "rtl" : "ltr",
                  weekStartsOn,
                  disabled: disabled2 || disabledMatchers,
                  disableNavigation: disabled2
                }
              )
            ] })
          }
        )
      }
    );
  }
  function CalendarDateRangeControl({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    const {
      id,
      label,
      description,
      getValue: getValue3,
      setValue,
      isValid: isValid2,
      format: fieldFormat
    } = field;
    const disabled2 = field.isDisabled({ item: data, field });
    let value;
    const fieldValue = getValue3({ item: data });
    if (Array.isArray(fieldValue) && fieldValue.length === 2 && fieldValue.every((date) => typeof date === "string")) {
      value = fieldValue;
    }
    const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date11.getSettings)().l10n.startOfWeek;
    const locale = getCalendarLocale((0, import_date11.getSettings)().l10n.locale);
    const { minConstraint, maxConstraint, disabledMatchers } = useDisabledDateMatchers(isValid2, parseDate2);
    const onChangeCallback = (0, import_element201.useCallback)(
      (newValue) => {
        onChange(
          setValue({
            item: data,
            value: newValue
          })
        );
      },
      [data, onChange, setValue]
    );
    const [selectedPresetId, setSelectedPresetId] = (0, import_element201.useState)(
      null
    );
    const selectedRange = (0, import_element201.useMemo)(() => {
      if (!value) {
        return null;
      }
      const [from, to2] = value;
      return {
        from: parseDate2(from) || void 0,
        to: parseDate2(to2) || void 0
      };
    }, [value]);
    const [calendarMonth, setCalendarMonth] = (0, import_element201.useState)(() => {
      return selectedRange?.from || /* @__PURE__ */ new Date();
    });
    const [fromValue, toValue] = value ?? [];
    (0, import_element201.useEffect)(() => {
      setCalendarMonth((currentMonth) => {
        const from = parseDate2(fromValue);
        const to2 = parseDate2(toValue);
        const targetMonth = from ?? to2;
        const isRangeVisible = from && to2 ? areIntervalsOverlapping(
          { start: from, end: to2 },
          {
            start: startOfMonth(currentMonth),
            end: endOfMonth(currentMonth)
          },
          { inclusive: true }
        ) : [from, to2].some(
          (date) => date && isSameMonth(date, currentMonth)
        );
        return targetMonth && !isRangeVisible ? targetMonth : currentMonth;
      });
    }, [fromValue, toValue]);
    const [isTouched, setIsTouched] = (0, import_element201.useState)(false);
    const fromInputRef = (0, import_element201.useRef)(null);
    const toInputRef = (0, import_element201.useRef)(null);
    const updateDateRange = (0, import_element201.useCallback)(
      (fromDate, toDate2) => {
        if (!fromDate && !toDate2) {
          onChangeCallback(void 0);
          return;
        }
        onChangeCallback([
          formatDate(fromDate),
          formatDate(toDate2)
        ]);
      },
      [onChangeCallback]
    );
    const onSelectCalendarRange = (0, import_element201.useCallback)(
      (newRange) => {
        updateDateRange(newRange?.from, newRange?.to);
        setSelectedPresetId(null);
        setIsTouched(true);
      },
      [updateDateRange]
    );
    const handlePresetClick = (0, import_element201.useCallback)(
      (preset) => {
        const [startDate2, endDate] = preset.getValue();
        setCalendarMonth(startDate2);
        updateDateRange(startDate2, endDate);
        setSelectedPresetId(preset.id);
        setIsTouched(true);
      },
      [updateDateRange]
    );
    const handleManualDateChange = (0, import_element201.useCallback)(
      (fromOrTo, newValue) => {
        const [currentFrom, currentTo] = value || [
          void 0,
          void 0
        ];
        const updatedFrom = fromOrTo === "from" ? newValue : currentFrom;
        const updatedTo = fromOrTo === "to" ? newValue : currentTo;
        updateDateRange(updatedFrom, updatedTo);
        if (newValue) {
          const parsedDate = parseDate2(newValue);
          if (parsedDate) {
            setCalendarMonth(parsedDate);
          }
        }
        setSelectedPresetId(null);
        setIsTouched(true);
      },
      [value, updateDateRange]
    );
    let displayLabel = label;
    if (field.isValid?.required && !markWhenOptional) {
      displayLabel = `${label} (${(0, import_i18n126.__)("Required")})`;
    } else if (!field.isValid?.required && markWhenOptional) {
      displayLabel = `${label} (${(0, import_i18n126.__)("Optional")})`;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
      ValidatedDateControl,
      {
        field,
        validity,
        inputRefs: [fromInputRef, toInputRef],
        isTouched,
        setIsTouched,
        children: /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
          import_components64.BaseControl,
          {
            id,
            className: "dataviews-controls__date",
            label: displayLabel,
            help: description,
            hideLabelFromVision,
            children: /* @__PURE__ */ (0, import_jsx_runtime339.jsxs)(Stack, { direction: "column", gap: "lg", children: [
              /* @__PURE__ */ (0, import_jsx_runtime339.jsxs)(
                Stack,
                {
                  direction: "row",
                  gap: "sm",
                  wrap: "wrap",
                  justify: "flex-start",
                  children: [
                    DATE_RANGE_PRESETS.map((preset) => {
                      const isSelected2 = selectedPresetId === preset.id;
                      return /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
                        import_components64.Button,
                        {
                          className: "dataviews-controls__date-preset",
                          variant: "tertiary",
                          isPressed: isSelected2,
                          size: "small",
                          disabled: disabled2,
                          accessibleWhenDisabled: true,
                          onClick: () => handlePresetClick(preset),
                          children: preset.label
                        },
                        preset.id
                      );
                    }),
                    /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
                      import_components64.Button,
                      {
                        className: "dataviews-controls__date-preset",
                        variant: "tertiary",
                        isPressed: !selectedPresetId,
                        size: "small",
                        accessibleWhenDisabled: true,
                        disabled: !!selectedPresetId || disabled2,
                        children: (0, import_i18n126.__)("Custom")
                      }
                    )
                  ]
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime339.jsxs)(
                Stack,
                {
                  direction: "row",
                  gap: "sm",
                  justify: "space-between",
                  className: "dataviews-controls__date-range-inputs",
                  children: [
                    /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
                      import_components64.__experimentalInputControl,
                      {
                        ref: fromInputRef,
                        type: "date",
                        label: (0, import_i18n126.__)("From"),
                        hideLabelFromVision: true,
                        value: value?.[0],
                        onChange: (newValue) => handleManualDateChange("from", newValue),
                        required: !!field.isValid?.required,
                        disabled: disabled2,
                        min: minConstraint,
                        max: maxConstraint
                      }
                    ),
                    /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
                      import_components64.__experimentalInputControl,
                      {
                        ref: toInputRef,
                        type: "date",
                        label: (0, import_i18n126.__)("To"),
                        hideLabelFromVision: true,
                        value: value?.[1],
                        onChange: (newValue) => handleManualDateChange("to", newValue),
                        required: !!field.isValid?.required,
                        disabled: disabled2,
                        min: minConstraint,
                        max: maxConstraint
                      }
                    )
                  ]
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
                RangeCalendar,
                {
                  style: { width: "100%" },
                  value: selectedRange,
                  onValueChange: onSelectCalendarRange,
                  month: calendarMonth,
                  onMonthChange: setCalendarMonth,
                  locale,
                  dir: (0, import_i18n126.isRTL)() ? "rtl" : "ltr",
                  weekStartsOn,
                  disabled: disabled2 || disabledMatchers
                }
              )
            ] })
          }
        )
      }
    );
  }
  function DateControl({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    operator,
    validity
  }) {
    if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) {
      return /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
        RelativeDateControl,
        {
          className: "dataviews-controls__date",
          data,
          field,
          onChange,
          hideLabelFromVision,
          operator
        }
      );
    }
    if (operator === OPERATOR_BETWEEN) {
      return /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
        CalendarDateRangeControl,
        {
          data,
          field,
          onChange,
          hideLabelFromVision,
          markWhenOptional,
          validity
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(
      CalendarDateControl,
      {
        data,
        field,
        onChange,
        hideLabelFromVision,
        markWhenOptional,
        validity
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/select.mjs
  var import_components65 = __toESM(require_components(), 1);
  var import_element202 = __toESM(require_element(), 1);
  var import_jsx_runtime340 = __toESM(require_jsx_runtime(), 1);
  function Select2({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    const { type, label, description, getValue: getValue3, setValue, isValid: isValid2 } = field;
    const disabled2 = field.isDisabled({ item: data, field });
    const isMultiple = type === "array";
    const value = getValue3({ item: data }) ?? (isMultiple ? [] : "");
    const onChangeControl = (0, import_element202.useCallback)(
      (newValue) => onChange(setValue({ item: data, value: newValue })),
      [data, onChange, setValue]
    );
    const { elements: elements2, isLoading } = useElements({
      elements: field.elements,
      getElements: field.getElements
    });
    if (isLoading) {
      return /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(import_components65.Spinner, {});
    }
    return /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
      ValidatedSelectControl,
      {
        required: !!field.isValid?.required,
        markWhenOptional,
        customValidity: getCustomValidity(isValid2, validity),
        label,
        value,
        help: description,
        options: elements2,
        onChange: onChangeControl,
        hideLabelFromVision,
        multiple: isMultiple,
        disabled: disabled2
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/adaptive-select.mjs
  var import_jsx_runtime341 = __toESM(require_jsx_runtime(), 1);
  var ELEMENTS_THRESHOLD = 10;
  function AdaptiveSelect(props) {
    const { field } = props;
    const { elements: elements2 } = useElements({
      elements: field.elements,
      getElements: field.getElements
    });
    if (elements2.length >= ELEMENTS_THRESHOLD) {
      return /* @__PURE__ */ (0, import_jsx_runtime341.jsx)(Combobox3, { ...props });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime341.jsx)(Select2, { ...props });
  }

  // packages/dataviews/build-module/components/dataform-controls/utils/validated-input.mjs
  var import_element203 = __toESM(require_element(), 1);
  var import_jsx_runtime342 = __toESM(require_jsx_runtime(), 1);
  function ValidatedText({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    type,
    prefix: prefix2,
    suffix,
    validity
  }) {
    const { label, placeholder, description, getValue: getValue3, setValue, isValid: isValid2 } = field;
    const value = getValue3({ item: data });
    const disabled2 = field.isDisabled({ item: data, field });
    const onValueChangeControl = (0, import_element203.useCallback)(
      (newValue) => onChange(
        setValue({
          item: data,
          value: newValue
        })
      ),
      [data, setValue, onChange]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime342.jsx)(
      ValidatedInputControl,
      {
        required: !!isValid2.required,
        markWhenOptional,
        customValidity: getCustomValidity(isValid2, validity),
        label,
        placeholder,
        value: value ?? "",
        description: typeof description === "string" ? description : void 0,
        details: typeof description === "string" ? void 0 : description,
        onValueChange: onValueChangeControl,
        hideLabelFromVision,
        type,
        prefix: prefix2,
        suffix,
        disabled: disabled2,
        pattern: isValid2.pattern ? isValid2.pattern.constraint : void 0,
        minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0,
        maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/email.mjs
  var import_jsx_runtime343 = __toESM(require_jsx_runtime(), 1);
  function Email({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime343.jsx)(
      ValidatedText,
      {
        ...{
          data,
          field,
          onChange,
          hideLabelFromVision,
          markWhenOptional,
          validity,
          type: "email",
          prefix: /* @__PURE__ */ (0, import_jsx_runtime343.jsx)(InputLayout3.Slot, { padding: "minimal", children: /* @__PURE__ */ (0, import_jsx_runtime343.jsx)(Icon, { icon: envelope_default }) })
        }
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/telephone.mjs
  var import_jsx_runtime344 = __toESM(require_jsx_runtime(), 1);
  function Telephone({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime344.jsx)(
      ValidatedText,
      {
        ...{
          data,
          field,
          onChange,
          hideLabelFromVision,
          markWhenOptional,
          validity,
          type: "tel",
          prefix: /* @__PURE__ */ (0, import_jsx_runtime344.jsx)(InputLayout3.Slot, { padding: "minimal", children: /* @__PURE__ */ (0, import_jsx_runtime344.jsx)(Icon, { icon: mobile_default }) })
        }
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/url.mjs
  var import_jsx_runtime345 = __toESM(require_jsx_runtime(), 1);
  function Url({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime345.jsx)(
      ValidatedText,
      {
        ...{
          data,
          field,
          onChange,
          hideLabelFromVision,
          markWhenOptional,
          validity,
          type: "url",
          prefix: /* @__PURE__ */ (0, import_jsx_runtime345.jsx)(InputLayout3.Slot, { padding: "minimal", children: /* @__PURE__ */ (0, import_jsx_runtime345.jsx)(Icon, { icon: link_default }) })
        }
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/utils/validated-number.mjs
  var import_components66 = __toESM(require_components(), 1);
  var import_element204 = __toESM(require_element(), 1);
  var import_i18n127 = __toESM(require_i18n(), 1);
  var import_jsx_runtime346 = __toESM(require_jsx_runtime(), 1);
  function toNumberOrEmpty(value) {
    if (value === "" || value === void 0) {
      return "";
    }
    const number = Number(value);
    return Number.isFinite(number) ? number : "";
  }
  function BetweenControls({
    value,
    onChange,
    hideLabelFromVision,
    step
  }) {
    const [min4 = "", max4 = ""] = value;
    const onChangeMin = (0, import_element204.useCallback)(
      (newValue) => onChange([toNumberOrEmpty(newValue), max4]),
      [onChange, max4]
    );
    const onChangeMax = (0, import_element204.useCallback)(
      (newValue) => onChange([min4, toNumberOrEmpty(newValue)]),
      [onChange, min4]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(
      import_components66.BaseControl,
      {
        help: (0, import_i18n127.__)("The max. value must be greater than the min. value."),
        children: /* @__PURE__ */ (0, import_jsx_runtime346.jsxs)(import_components66.Flex, { direction: "row", gap: 4, children: [
          /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(
            import_components66.__experimentalNumberControl,
            {
              label: (0, import_i18n127.__)("Min."),
              value: min4,
              max: max4 ? Number(max4) - step : void 0,
              onChange: onChangeMin,
              hideLabelFromVision,
              step
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(
            import_components66.__experimentalNumberControl,
            {
              label: (0, import_i18n127.__)("Max."),
              value: max4,
              min: min4 ? Number(min4) + step : void 0,
              onChange: onChangeMax,
              hideLabelFromVision,
              step
            }
          )
        ] })
      }
    );
  }
  function ValidatedNumber({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    operator,
    validity
  }) {
    const decimals = field.format?.decimals ?? 0;
    const step = Math.pow(10, Math.abs(decimals) * -1);
    const { label, description, getValue: getValue3, setValue, isValid: isValid2 } = field;
    const value = getValue3({ item: data }) ?? "";
    const disabled2 = field.isDisabled({ item: data, field });
    const onChangeControl = (0, import_element204.useCallback)(
      (newValue) => {
        onChange(
          setValue({
            item: data,
            // Do not convert an empty string or undefined to a number,
            // otherwise there's a mismatch between the UI control (empty)
            // and the data relied by onChange (0).
            value: ["", void 0].includes(newValue) ? void 0 : Number(newValue)
          })
        );
      },
      [data, onChange, setValue]
    );
    const onChangeBetweenControls = (0, import_element204.useCallback)(
      (newValue) => {
        onChange(
          setValue({
            item: data,
            value: newValue
          })
        );
      },
      [data, onChange, setValue]
    );
    if (operator === OPERATOR_BETWEEN) {
      let valueBetween = ["", ""];
      if (Array.isArray(value) && value.length === 2 && value.every(
        (element) => typeof element === "number" || element === ""
      )) {
        valueBetween = value;
      }
      return /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(
        BetweenControls,
        {
          value: valueBetween,
          onChange: onChangeBetweenControls,
          hideLabelFromVision,
          step
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(
      ValidatedNumberControl,
      {
        required: !!isValid2.required,
        markWhenOptional,
        customValidity: getCustomValidity(isValid2, validity),
        label,
        help: description,
        value,
        onChange: onChangeControl,
        hideLabelFromVision,
        step,
        min: typeof isValid2.min?.constraint === "number" ? isValid2.min.constraint : void 0,
        max: typeof isValid2.max?.constraint === "number" ? isValid2.max.constraint : void 0,
        disabled: disabled2
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/integer.mjs
  var import_jsx_runtime347 = __toESM(require_jsx_runtime(), 1);
  function Integer(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime347.jsx)(ValidatedNumber, { ...props });
  }

  // packages/dataviews/build-module/components/dataform-controls/number.mjs
  var import_jsx_runtime348 = __toESM(require_jsx_runtime(), 1);
  function Number2(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(ValidatedNumber, { ...props });
  }

  // packages/dataviews/build-module/components/dataform-controls/radio.mjs
  var import_components67 = __toESM(require_components(), 1);
  var import_element205 = __toESM(require_element(), 1);
  var import_jsx_runtime349 = __toESM(require_jsx_runtime(), 1);
  function Radio({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    const { label, description, getValue: getValue3, setValue, isValid: isValid2 } = field;
    const disabled2 = field.isDisabled({ item: data, field });
    const { elements: elements2, isLoading } = useElements({
      elements: field.elements,
      getElements: field.getElements
    });
    const value = getValue3({ item: data });
    const onChangeControl = (0, import_element205.useCallback)(
      (newValue) => onChange(setValue({ item: data, value: newValue })),
      [data, onChange, setValue]
    );
    if (isLoading) {
      return /* @__PURE__ */ (0, import_jsx_runtime349.jsx)(import_components67.Spinner, {});
    }
    return /* @__PURE__ */ (0, import_jsx_runtime349.jsx)(
      ValidatedRadioControl,
      {
        required: !!field.isValid?.required,
        markWhenOptional,
        customValidity: getCustomValidity(isValid2, validity),
        label,
        help: description,
        onChange: onChangeControl,
        options: elements2,
        selected: value,
        hideLabelFromVision,
        disabled: disabled2
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/text.mjs
  var import_element206 = __toESM(require_element(), 1);
  var import_jsx_runtime350 = __toESM(require_jsx_runtime(), 1);
  function Text3({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    config: config2,
    validity
  }) {
    const { prefix: prefix2, suffix } = config2 || {};
    return /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(
      ValidatedText,
      {
        ...{
          data,
          field,
          onChange,
          hideLabelFromVision,
          markWhenOptional,
          validity,
          prefix: prefix2 ? (0, import_element206.createElement)(prefix2) : void 0,
          suffix: suffix ? (0, import_element206.createElement)(suffix) : void 0
        }
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/time.mjs
  var import_components68 = __toESM(require_components(), 1);
  var import_element207 = __toESM(require_element(), 1);
  var import_i18n128 = __toESM(require_i18n(), 1);
  var import_jsx_runtime351 = __toESM(require_jsx_runtime(), 1);
  function getStep(timeFormat, values) {
    const tokens = (timeFormat ?? "").replace(/\\./g, "");
    const hasSeconds = tokens.includes("s") || values.some((value) => (parseTime2(value) ?? 0) % 60 !== 0);
    return hasSeconds ? 1 : void 0;
  }
  function toInputValue(value) {
    const seconds = parseTime2(value);
    if (seconds === null) {
      return "";
    }
    const parts = [
      Math.floor(seconds / 3600),
      Math.floor(seconds % 3600 / 60)
    ];
    if (seconds % 60 !== 0) {
      parts.push(seconds % 60);
    }
    return parts.map((part) => String(part).padStart(2, "0")).join(":");
  }
  function BetweenControls2({
    value,
    onChange,
    hideLabelFromVision,
    disabled: disabled2,
    step,
    min: min4,
    max: max4
  }) {
    const [from = "", to2 = ""] = value;
    const onChangeFrom = (0, import_element207.useCallback)(
      (newValue) => onChange([newValue ?? "", to2]),
      [onChange, to2]
    );
    const onChangeTo = (0, import_element207.useCallback)(
      (newValue) => onChange([from, newValue ?? ""]),
      [onChange, from]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
      import_components68.BaseControl,
      {
        help: (0, import_i18n128.__)("The end time must be later than the start time."),
        children: /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)(Stack, { direction: "row", gap: "sm", justify: "space-between", children: [
          /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
            ValidatedInputControl,
            {
              type: "time",
              label: (0, import_i18n128.__)("From"),
              value: from,
              onValueChange: onChangeFrom,
              hideLabelFromVision,
              disabled: disabled2,
              step,
              min: min4,
              max: to2 || max4
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
            ValidatedInputControl,
            {
              type: "time",
              label: (0, import_i18n128.__)("To"),
              value: to2,
              onValueChange: onChangeTo,
              hideLabelFromVision,
              disabled: disabled2,
              step,
              min: from || min4,
              max: max4
            }
          )
        ] })
      }
    );
  }
  function Time({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    operator,
    validity
  }) {
    const { label, placeholder, description, getValue: getValue3, setValue, isValid: isValid2 } = field;
    const value = getValue3({ item: data });
    const disabled2 = field.isDisabled({ item: data, field });
    const timeFormat = field.format?.time;
    const min4 = typeof isValid2.min?.constraint === "string" ? isValid2.min.constraint : void 0;
    const max4 = typeof isValid2.max?.constraint === "string" ? isValid2.max.constraint : void 0;
    const onChangeControl = (0, import_element207.useCallback)(
      (newValue) => onChange(
        setValue({
          item: data,
          value: newValue === "" ? void 0 : newValue
        })
      ),
      [data, onChange, setValue]
    );
    const onChangeBetweenControls = (0, import_element207.useCallback)(
      ([from, to2]) => onChange(
        setValue({
          item: data,
          // An unfilled bound is stored as `undefined`, which the
          // `between` operator reads as "do not apply the filter".
          value: [from || void 0, to2 || void 0]
        })
      ),
      [data, onChange, setValue]
    );
    if (operator === OPERATOR_BETWEEN) {
      let valueBetween = ["", ""];
      if (Array.isArray(value) && value.length === 2) {
        valueBetween = [
          toInputValue(value[0]),
          toInputValue(value[1])
        ];
      }
      return /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
        BetweenControls2,
        {
          value: valueBetween,
          onChange: onChangeBetweenControls,
          hideLabelFromVision,
          disabled: disabled2,
          step: getStep(timeFormat, valueBetween),
          min: min4,
          max: max4
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
      ValidatedInputControl,
      {
        required: !!isValid2.required,
        markWhenOptional,
        customValidity: getCustomValidity(isValid2, validity),
        type: "time",
        label,
        placeholder,
        description: typeof description === "string" ? description : void 0,
        details: typeof description === "string" ? void 0 : description,
        value: toInputValue(value),
        onValueChange: onChangeControl,
        hideLabelFromVision,
        disabled: disabled2,
        step: getStep(timeFormat, [value]),
        min: min4,
        max: max4
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/toggle.mjs
  var import_element208 = __toESM(require_element(), 1);
  var import_jsx_runtime352 = __toESM(require_jsx_runtime(), 1);
  function Toggle({
    field,
    onChange,
    data,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    const { label, description, getValue: getValue3, setValue, isValid: isValid2 } = field;
    const disabled2 = field.isDisabled({ item: data, field });
    const onChangeControl = (0, import_element208.useCallback)(() => {
      onChange(
        setValue({ item: data, value: !getValue3({ item: data }) })
      );
    }, [onChange, setValue, data, getValue3]);
    return /* @__PURE__ */ (0, import_jsx_runtime352.jsx)(
      ValidatedToggleControl,
      {
        required: !!isValid2.required,
        markWhenOptional,
        customValidity: getCustomValidity(isValid2, validity),
        hidden: hideLabelFromVision,
        label,
        help: description,
        checked: getValue3({ item: data }),
        onChange: onChangeControl,
        disabled: disabled2
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/textarea.mjs
  var import_element209 = __toESM(require_element(), 1);
  var import_jsx_runtime353 = __toESM(require_jsx_runtime(), 1);
  function Textarea3({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    config: config2,
    validity
  }) {
    const { rows = 4 } = config2 || {};
    const disabled2 = field.isDisabled({ item: data, field });
    const { label, placeholder, description, setValue, isValid: isValid2 } = field;
    const value = field.getValue({ item: data });
    const onValueChangeControl = (0, import_element209.useCallback)(
      (newValue) => onChange(setValue({ item: data, value: newValue })),
      [data, onChange, setValue]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime353.jsx)(
      ValidatedTextareaControl,
      {
        required: !!isValid2.required,
        markWhenOptional,
        customValidity: getCustomValidity(isValid2, validity),
        label,
        placeholder,
        value: value ?? "",
        description: typeof description === "string" ? description : void 0,
        details: typeof description === "string" ? void 0 : description,
        onValueChange: onValueChangeControl,
        rows,
        disabled: disabled2,
        minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0,
        maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0,
        hideLabelFromVision
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/toggle-group.mjs
  var import_components69 = __toESM(require_components(), 1);
  var import_element210 = __toESM(require_element(), 1);
  var import_jsx_runtime354 = __toESM(require_jsx_runtime(), 1);
  function ToggleGroup({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    const { getValue: getValue3, setValue, isValid: isValid2 } = field;
    const disabled2 = field.isDisabled({ item: data, field });
    const value = getValue3({ item: data });
    const onChangeControl = (0, import_element210.useCallback)(
      (newValue) => onChange(setValue({ item: data, value: newValue })),
      [data, onChange, setValue]
    );
    const { elements: elements2, isLoading } = useElements({
      elements: field.elements,
      getElements: field.getElements
    });
    if (isLoading) {
      return /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(import_components69.Spinner, {});
    }
    if (elements2.length === 0) {
      return null;
    }
    const selectedOption = elements2.find((el) => el.value === value);
    return /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
      ValidatedToggleGroupControl,
      {
        required: !!field.isValid?.required,
        markWhenOptional,
        customValidity: getCustomValidity(isValid2, validity),
        isBlock: true,
        label: field.label,
        help: selectedOption?.description || field.description,
        onChange: onChangeControl,
        value,
        hideLabelFromVision,
        children: elements2.map((el) => /* @__PURE__ */ (0, import_jsx_runtime354.jsx)(
          import_components69.__experimentalToggleGroupControlOption,
          {
            label: el.label,
            value: el.value,
            disabled: disabled2
          },
          el.value
        ))
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/array.mjs
  var import_components70 = __toESM(require_components(), 1);
  var import_element211 = __toESM(require_element(), 1);
  var import_jsx_runtime355 = __toESM(require_jsx_runtime(), 1);
  function ArrayControl({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    const { label, placeholder, description, getValue: getValue3, setValue, isValid: isValid2 } = field;
    const value = getValue3({ item: data });
    const disabled2 = field.isDisabled({ item: data, field });
    const { elements: elements2, isLoading } = useElements({
      elements: field.elements,
      getElements: field.getElements
    });
    const arrayValueAsElements = (0, import_element211.useMemo)(
      () => Array.isArray(value) ? value.map((token) => {
        const element = elements2?.find(
          (suggestion) => suggestion.value === token
        );
        return element || { value: token, label: token };
      }) : [],
      [value, elements2]
    );
    const onChangeControl = (0, import_element211.useCallback)(
      (tokens) => {
        const valueTokens = tokens.map((token) => {
          if (typeof token === "object" && "value" in token) {
            return token.value;
          }
          return token;
        });
        onChange(setValue({ item: data, value: valueTokens }));
      },
      [onChange, setValue, data]
    );
    if (isLoading) {
      return /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(import_components70.Spinner, {});
    }
    return /* @__PURE__ */ (0, import_jsx_runtime355.jsx)(
      ValidatedFormTokenField,
      {
        required: !!isValid2?.required,
        markWhenOptional,
        customValidity: getCustomValidity(isValid2, validity),
        label: hideLabelFromVision ? void 0 : label,
        value: arrayValueAsElements,
        onChange: onChangeControl,
        placeholder,
        suggestions: elements2?.map((element) => element.value),
        disabled: disabled2,
        __experimentalValidateInput: (token) => {
          if (field.isValid?.elements && elements2) {
            return elements2.some(
              (element) => element.value === token || element.label === token
            );
          }
          return true;
        },
        __experimentalExpandOnFocus: elements2 && elements2.length > 0,
        help: description ?? (field.isValid?.elements ? "" : void 0),
        displayTransform: (token) => {
          if (typeof token === "object" && "label" in token) {
            return token.label;
          }
          if (typeof token === "string" && elements2) {
            const element = elements2.find(
              (el) => el.value === token
            );
            return element?.label || token;
          }
          return token;
        },
        __experimentalRenderItem: ({ item }) => {
          if (typeof item === "string" && elements2) {
            const element = elements2.find(
              (el) => el.value === item
            );
            return /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("span", { children: element?.label || item });
          }
          return /* @__PURE__ */ (0, import_jsx_runtime355.jsx)("span", { children: item });
        }
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/color.mjs
  var import_components71 = __toESM(require_components(), 1);
  var import_element212 = __toESM(require_element(), 1);
  var import_i18n129 = __toESM(require_i18n(), 1);
  var import_jsx_runtime356 = __toESM(require_jsx_runtime(), 1);
  var ColorPickerDropdown = ({
    color,
    onColorChange,
    disabled: disabled2
  }) => {
    const validColor = color && A(color).isValid() ? color : "#ffffff";
    return /* @__PURE__ */ (0, import_jsx_runtime356.jsx)(
      import_components71.Dropdown,
      {
        className: "dataviews-controls__color-picker-dropdown",
        popoverProps: { resize: false },
        renderToggle: ({ onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime356.jsx)(
          import_components71.Button,
          {
            onClick: onToggle,
            "aria-label": (0, import_i18n129.__)("Open color picker"),
            size: "small",
            disabled: disabled2,
            accessibleWhenDisabled: true,
            icon: () => /* @__PURE__ */ (0, import_jsx_runtime356.jsx)(import_components71.ColorIndicator, { colorValue: validColor })
          }
        ),
        renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime356.jsx)(import_components71.__experimentalDropdownContentWrapper, { paddingSize: "none", children: /* @__PURE__ */ (0, import_jsx_runtime356.jsx)(
          import_components71.ColorPicker,
          {
            color: validColor,
            onChange: onColorChange,
            enableAlpha: true
          }
        ) })
      }
    );
  };
  function Color({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    const { label, placeholder, description, setValue, isValid: isValid2 } = field;
    const disabled2 = field.isDisabled({ item: data, field });
    const value = field.getValue({ item: data }) || "";
    const handleColorChange = (0, import_element212.useCallback)(
      (newColor) => {
        onChange(setValue({ item: data, value: newColor }));
      },
      [data, onChange, setValue]
    );
    const handleInputChange = (0, import_element212.useCallback)(
      (newValue) => {
        onChange(setValue({ item: data, value: newValue || "" }));
      },
      [data, onChange, setValue]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime356.jsx)(
      ValidatedInputControl,
      {
        required: !!field.isValid?.required,
        markWhenOptional,
        customValidity: getCustomValidity(isValid2, validity),
        label,
        placeholder,
        value,
        description: typeof description === "string" ? description : void 0,
        details: typeof description === "string" ? void 0 : description,
        onValueChange: handleInputChange,
        hideLabelFromVision,
        type: "text",
        disabled: disabled2,
        prefix: /* @__PURE__ */ (0, import_jsx_runtime356.jsx)(InputLayout3.Slot, { padding: "minimal", children: /* @__PURE__ */ (0, import_jsx_runtime356.jsx)(
          ColorPickerDropdown,
          {
            color: value,
            onColorChange: handleColorChange,
            disabled: disabled2
          }
        ) })
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-controls/password.mjs
  var import_components72 = __toESM(require_components(), 1);
  var import_element213 = __toESM(require_element(), 1);
  var import_i18n130 = __toESM(require_i18n(), 1);
  var import_jsx_runtime357 = __toESM(require_jsx_runtime(), 1);
  function Password({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    const [isVisible2, setIsVisible] = (0, import_element213.useState)(false);
    const disabled2 = field.isDisabled({ item: data, field });
    const toggleVisibility = (0, import_element213.useCallback)(() => {
      setIsVisible((prev) => !prev);
    }, []);
    return /* @__PURE__ */ (0, import_jsx_runtime357.jsx)(
      ValidatedText,
      {
        ...{
          data,
          field,
          onChange,
          hideLabelFromVision,
          markWhenOptional,
          validity,
          type: isVisible2 ? "text" : "password",
          suffix: /* @__PURE__ */ (0, import_jsx_runtime357.jsx)(InputLayout3.Slot, { padding: "minimal", children: /* @__PURE__ */ (0, import_jsx_runtime357.jsx)(
            import_components72.Button,
            {
              icon: isVisible2 ? unseen_default : seen_default,
              onClick: toggleVisibility,
              size: "small",
              label: isVisible2 ? (0, import_i18n130.__)("Hide password") : (0, import_i18n130.__)("Show password"),
              disabled: disabled2,
              accessibleWhenDisabled: true
            }
          ) })
        }
      }
    );
  }

  // packages/dataviews/build-module/field-types/utils/has-elements.mjs
  function hasElements(field) {
    return Array.isArray(field.elements) && field.elements.length > 0 || typeof field.getElements === "function";
  }

  // packages/dataviews/build-module/components/dataform-controls/index.mjs
  var import_jsx_runtime358 = __toESM(require_jsx_runtime(), 1);
  var FORM_CONTROLS = {
    adaptiveSelect: AdaptiveSelect,
    array: ArrayControl,
    checkbox: Checkbox,
    color: Color,
    combobox: Combobox3,
    datetime: DateTime,
    date: DateControl,
    email: Email,
    telephone: Telephone,
    url: Url,
    integer: Integer,
    number: Number2,
    password: Password,
    radio: Radio,
    select: Select2,
    text: Text3,
    time: Time,
    toggle: Toggle,
    textarea: Textarea3,
    toggleGroup: ToggleGroup
  };
  function isEditConfig(value) {
    return value && typeof value === "object" && typeof value.control === "string";
  }
  function createConfiguredControl(config2) {
    const { control, ...controlConfig } = config2;
    const BaseControlType = getControlByType(control);
    if (BaseControlType === null) {
      return null;
    }
    return function ConfiguredControl(props) {
      return /* @__PURE__ */ (0, import_jsx_runtime358.jsx)(BaseControlType, { ...props, config: controlConfig });
    };
  }
  function getControl(field, fallback) {
    if (typeof field.Edit === "function") {
      return field.Edit;
    }
    if (typeof field.Edit === "string") {
      return getControlByType(field.Edit);
    }
    if (isEditConfig(field.Edit)) {
      return createConfiguredControl(field.Edit);
    }
    if (hasElements(field) && field.type !== "array") {
      return getControlByType("adaptiveSelect");
    }
    if (fallback === null) {
      return null;
    }
    return getControlByType(fallback);
  }
  function getControlByType(type) {
    if (Object.keys(FORM_CONTROLS).includes(type)) {
      return FORM_CONTROLS[type];
    }
    return null;
  }

  // packages/dataviews/build-module/field-types/utils/get-filter-by.mjs
  function getFilterBy(field, defaultOperators, validOperators) {
    if (field.filterBy === false) {
      return false;
    }
    const operators = field.filterBy?.operators?.filter(
      (op) => validOperators.includes(op)
    ) ?? defaultOperators;
    if (operators.length === 0) {
      return false;
    }
    return {
      isPrimary: !!field.filterBy?.isPrimary,
      operators
    };
  }
  var get_filter_by_default = getFilterBy;

  // packages/dataviews/build-module/field-types/utils/get-value-from-id.mjs
  var getValueFromId = (id) => ({ item }) => {
    const path = id.split(".");
    let value = item;
    for (const segment2 of path) {
      if (value.hasOwnProperty(segment2)) {
        value = value[segment2];
      } else {
        value = void 0;
      }
    }
    return value;
  };
  var get_value_from_id_default = getValueFromId;

  // packages/dataviews/build-module/field-types/utils/set-value-from-id.mjs
  var setValueFromId = (id) => ({ value }) => {
    const path = id.split(".");
    const result = {};
    let current = result;
    for (const segment2 of path.slice(0, -1)) {
      current[segment2] = {};
      current = current[segment2];
    }
    current[path.at(-1)] = value;
    return result;
  };
  var set_value_from_id_default = setValueFromId;

  // packages/dataviews/build-module/field-types/email.mjs
  var import_i18n131 = __toESM(require_i18n(), 1);

  // packages/dataviews/build-module/field-types/utils/render-from-elements.mjs
  function RenderFromElements({
    item,
    field
  }) {
    const { elements: elements2, isLoading } = useElements({
      elements: field.elements,
      getElements: field.getElements
    });
    const value = field.getValue({ item });
    if (isLoading) {
      return value;
    }
    if (elements2.length === 0) {
      return value;
    }
    return elements2?.find((element) => element.value === value)?.label || field.getValue({ item });
  }

  // packages/dataviews/build-module/field-types/utils/render-default.mjs
  var import_jsx_runtime359 = __toESM(require_jsx_runtime(), 1);
  function render2({
    item,
    field
  }) {
    if (field.hasElements) {
      return /* @__PURE__ */ (0, import_jsx_runtime359.jsx)(RenderFromElements, { item, field });
    }
    return field.getValueFormatted({ item, field });
  }

  // packages/dataviews/build-module/field-types/utils/sort-text.mjs
  var sort_text_default = (a2, b2, direction) => {
    return direction === "asc" ? a2.localeCompare(b2) : b2.localeCompare(a2);
  };

  // packages/dataviews/build-module/field-types/utils/is-valid-required.mjs
  function isValidRequired(item, field) {
    const value = field.getValue({ item });
    return ![void 0, "", null].includes(value);
  }

  // packages/dataviews/build-module/field-types/utils/is-valid-min-length.mjs
  function isValidMinLength(item, field) {
    if (typeof field.isValid.minLength?.constraint !== "number") {
      return false;
    }
    const value = field.getValue({ item });
    if ([void 0, "", null].includes(value)) {
      return true;
    }
    return String(value).length >= field.isValid.minLength.constraint;
  }

  // packages/dataviews/build-module/field-types/utils/is-valid-max-length.mjs
  function isValidMaxLength(item, field) {
    if (typeof field.isValid.maxLength?.constraint !== "number") {
      return false;
    }
    const value = field.getValue({ item });
    if ([void 0, "", null].includes(value)) {
      return true;
    }
    return String(value).length <= field.isValid.maxLength.constraint;
  }

  // packages/dataviews/build-module/field-types/utils/is-valid-pattern.mjs
  function isValidPattern(item, field) {
    if (field.isValid.pattern?.constraint === void 0) {
      return true;
    }
    try {
      const regexp = new RegExp(field.isValid.pattern.constraint);
      const value = field.getValue({ item });
      if ([void 0, "", null].includes(value)) {
        return true;
      }
      return regexp.test(String(value));
    } catch {
      return false;
    }
  }

  // packages/dataviews/build-module/field-types/utils/is-valid-elements.mjs
  function isValidElements(item, field) {
    const elements2 = field.elements ?? [];
    const validValues = elements2.map((el) => el.value);
    if (validValues.length === 0) {
      return true;
    }
    const value = field.getValue({ item });
    return [].concat(value).every((v3) => validValues.includes(v3));
  }

  // packages/dataviews/build-module/field-types/utils/get-value-formatted-default.mjs
  function getValueFormatted({
    item,
    field
  }) {
    return field.getValue({ item });
  }
  var get_value_formatted_default_default = getValueFormatted;

  // packages/dataviews/build-module/field-types/email.mjs
  var emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
  function isValidCustom(item, field) {
    const value = field.getValue({ item });
    if (![void 0, "", null].includes(value) && !emailRegex.test(value)) {
      return (0, import_i18n131.__)("Value must be a valid email address.");
    }
    return null;
  }
  var email_default = {
    type: "email",
    render: render2,
    Edit: "email",
    sort: sort_text_default,
    enableSorting: true,
    enableGlobalSearch: false,
    defaultOperators: [OPERATOR_IS_ANY2, OPERATOR_IS_NONE],
    validOperators: [
      OPERATOR_IS,
      OPERATOR_IS_NOT,
      OPERATOR_CONTAINS,
      OPERATOR_NOT_CONTAINS,
      OPERATOR_STARTS_WITH,
      // Multiple selection
      OPERATOR_IS_ANY2,
      OPERATOR_IS_NONE,
      OPERATOR_IS_NOT_ALL
    ],
    format: {},
    getValueFormatted: get_value_formatted_default_default,
    validate: {
      required: isValidRequired,
      pattern: isValidPattern,
      minLength: isValidMinLength,
      maxLength: isValidMaxLength,
      elements: isValidElements,
      custom: isValidCustom
    }
  };

  // packages/dataviews/build-module/field-types/integer.mjs
  var import_i18n132 = __toESM(require_i18n(), 1);

  // packages/dataviews/build-module/field-types/utils/sort-number.mjs
  var sort_number_default = (a2, b2, direction) => {
    return direction === "asc" ? a2 - b2 : b2 - a2;
  };

  // packages/dataviews/build-module/field-types/utils/is-valid-min.mjs
  function isValidMin(item, field) {
    if (typeof field.isValid.min?.constraint !== "number") {
      return false;
    }
    const value = field.getValue({ item });
    if ([void 0, "", null].includes(value)) {
      return true;
    }
    return Number(value) >= field.isValid.min.constraint;
  }

  // packages/dataviews/build-module/field-types/utils/is-valid-max.mjs
  function isValidMax(item, field) {
    if (typeof field.isValid.max?.constraint !== "number") {
      return false;
    }
    const value = field.getValue({ item });
    if ([void 0, "", null].includes(value)) {
      return true;
    }
    return Number(value) <= field.isValid.max.constraint;
  }

  // packages/dataviews/build-module/field-types/integer.mjs
  var format2 = {
    separatorThousand: ","
  };
  function getValueFormatted2({
    item,
    field
  }) {
    let value = field.getValue({ item });
    if (value === null || value === void 0) {
      return "";
    }
    value = Number(value);
    if (!Number.isFinite(value)) {
      return String(value);
    }
    let formatInteger;
    if (field.type !== "integer") {
      formatInteger = format2;
    } else {
      formatInteger = field.format;
    }
    const { separatorThousand } = formatInteger;
    const integerValue = Math.trunc(value);
    if (!separatorThousand) {
      return String(integerValue);
    }
    return String(integerValue).replace(
      /\B(?=(\d{3})+(?!\d))/g,
      separatorThousand
    );
  }
  function isValidCustom2(item, field) {
    const value = field.getValue({ item });
    if (![void 0, "", null].includes(value) && !Number.isInteger(value)) {
      return (0, import_i18n132.__)("Value must be an integer.");
    }
    return null;
  }
  var integer_default = {
    type: "integer",
    render: render2,
    Edit: "integer",
    sort: sort_number_default,
    enableSorting: true,
    enableGlobalSearch: false,
    defaultOperators: [
      OPERATOR_IS,
      OPERATOR_IS_NOT,
      OPERATOR_LESS_THAN,
      OPERATOR_GREATER_THAN,
      OPERATOR_LESS_THAN_OR_EQUAL,
      OPERATOR_GREATER_THAN_OR_EQUAL,
      OPERATOR_BETWEEN
    ],
    validOperators: [
      // Single-selection
      OPERATOR_IS,
      OPERATOR_IS_NOT,
      OPERATOR_LESS_THAN,
      OPERATOR_GREATER_THAN,
      OPERATOR_LESS_THAN_OR_EQUAL,
      OPERATOR_GREATER_THAN_OR_EQUAL,
      OPERATOR_BETWEEN,
      // Multiple-selection
      OPERATOR_IS_ANY2,
      OPERATOR_IS_NONE,
      OPERATOR_IS_NOT_ALL
    ],
    format: format2,
    getValueFormatted: getValueFormatted2,
    validate: {
      required: isValidRequired,
      min: isValidMin,
      max: isValidMax,
      elements: isValidElements,
      custom: isValidCustom2
    }
  };

  // packages/dataviews/build-module/field-types/number.mjs
  var import_i18n133 = __toESM(require_i18n(), 1);
  var format3 = {
    separatorThousand: ",",
    separatorDecimal: ".",
    decimals: 2
  };
  function getValueFormatted3({
    item,
    field
  }) {
    let value = field.getValue({ item });
    if (value === null || value === void 0) {
      return "";
    }
    value = Number(value);
    if (!Number.isFinite(value)) {
      return String(value);
    }
    let formatNumber;
    if (field.type !== "number") {
      formatNumber = format3;
    } else {
      formatNumber = field.format;
    }
    const { separatorThousand, separatorDecimal, decimals } = formatNumber;
    const fixedValue = value.toFixed(decimals);
    const [integerPart, decimalPart] = fixedValue.split(".");
    const formattedInteger = separatorThousand ? integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, separatorThousand) : integerPart;
    return decimals === 0 ? formattedInteger : formattedInteger + separatorDecimal + decimalPart;
  }
  function isEmpty(value) {
    return value === "" || value === void 0 || value === null;
  }
  function isValidCustom3(item, field) {
    const value = field.getValue({ item });
    if (!isEmpty(value) && !Number.isFinite(value)) {
      return (0, import_i18n133.__)("Value must be a number.");
    }
    return null;
  }
  var number_default = {
    type: "number",
    render: render2,
    Edit: "number",
    sort: sort_number_default,
    enableSorting: true,
    enableGlobalSearch: false,
    defaultOperators: [
      OPERATOR_IS,
      OPERATOR_IS_NOT,
      OPERATOR_LESS_THAN,
      OPERATOR_GREATER_THAN,
      OPERATOR_LESS_THAN_OR_EQUAL,
      OPERATOR_GREATER_THAN_OR_EQUAL,
      OPERATOR_BETWEEN
    ],
    validOperators: [
      // Single-selection
      OPERATOR_IS,
      OPERATOR_IS_NOT,
      OPERATOR_LESS_THAN,
      OPERATOR_GREATER_THAN,
      OPERATOR_LESS_THAN_OR_EQUAL,
      OPERATOR_GREATER_THAN_OR_EQUAL,
      OPERATOR_BETWEEN,
      // Multiple-selection
      OPERATOR_IS_ANY2,
      OPERATOR_IS_NONE,
      OPERATOR_IS_NOT_ALL
    ],
    format: format3,
    getValueFormatted: getValueFormatted3,
    validate: {
      required: isValidRequired,
      min: isValidMin,
      max: isValidMax,
      elements: isValidElements,
      custom: isValidCustom3
    }
  };

  // packages/dataviews/build-module/field-types/text.mjs
  var text_default = {
    type: "text",
    render: render2,
    Edit: "text",
    sort: sort_text_default,
    enableSorting: true,
    enableGlobalSearch: false,
    defaultOperators: [OPERATOR_IS_ANY2, OPERATOR_IS_NONE],
    validOperators: [
      // Single selection
      OPERATOR_IS,
      OPERATOR_IS_NOT,
      OPERATOR_CONTAINS,
      OPERATOR_NOT_CONTAINS,
      OPERATOR_STARTS_WITH,
      // Multiple selection
      OPERATOR_IS_ANY2,
      OPERATOR_IS_NONE,
      OPERATOR_IS_NOT_ALL
    ],
    format: {},
    getValueFormatted: get_value_formatted_default_default,
    validate: {
      required: isValidRequired,
      pattern: isValidPattern,
      minLength: isValidMinLength,
      maxLength: isValidMaxLength,
      elements: isValidElements
    }
  };

  // packages/dataviews/build-module/field-types/datetime.mjs
  var import_date14 = __toESM(require_date(), 1);

  // packages/dataviews/build-module/field-types/utils/is-valid-boundary.mjs
  var import_date13 = __toESM(require_date(), 1);
  function parseDateLike(value) {
    if (!isValid(new Date(value))) {
      return null;
    }
    const parsed = (0, import_date13.getDate)(value);
    return parsed && isValid(parsed) ? parsed.getTime() : null;
  }
  function validateBoundary(item, field, boundary, parse13) {
    const constraint = field.isValid[boundary]?.constraint;
    if (typeof constraint !== "string") {
      return false;
    }
    const value = field.getValue({ item });
    const boundaryValue = Array.isArray(value) ? value[boundary === "min" ? 0 : value.length - 1] : value;
    if (boundaryValue === void 0 || boundaryValue === null || boundaryValue === "") {
      return true;
    }
    const parsedConstraint = parse13(constraint);
    const parsedValue = parse13(String(boundaryValue));
    if (parsedConstraint === null || parsedValue === null) {
      return false;
    }
    return boundary === "min" ? parsedValue >= parsedConstraint : parsedValue <= parsedConstraint;
  }
  function isValidMinDate(item, field) {
    return validateBoundary(item, field, "min", parseDateLike);
  }
  function isValidMaxDate(item, field) {
    return validateBoundary(item, field, "max", parseDateLike);
  }
  function isValidMinTime(item, field) {
    return validateBoundary(item, field, "min", parseTime2);
  }
  function isValidMaxTime(item, field) {
    return validateBoundary(item, field, "max", parseTime2);
  }

  // packages/dataviews/build-module/field-types/datetime.mjs
  var format4 = {
    datetime: (0, import_date14.getSettings)().formats.datetime,
    weekStartsOn: (0, import_date14.getSettings)().l10n.startOfWeek
  };
  function getValueFormatted4({
    item,
    field
  }) {
    const value = field.getValue({ item });
    if (["", void 0, null].includes(value)) {
      return "";
    }
    let formatDatetime;
    if (field.type !== "datetime") {
      formatDatetime = format4;
    } else {
      formatDatetime = field.format;
    }
    return (0, import_date14.dateI18n)(formatDatetime.datetime, (0, import_date14.getDate)(value));
  }
  var sort = (a2, b2, direction) => {
    const timeA = new Date(a2).getTime();
    const timeB = new Date(b2).getTime();
    return direction === "asc" ? timeA - timeB : timeB - timeA;
  };
  var datetime_default = {
    type: "datetime",
    render: render2,
    Edit: "datetime",
    sort,
    enableSorting: true,
    enableGlobalSearch: false,
    defaultOperators: [
      OPERATOR_ON,
      OPERATOR_NOT_ON,
      OPERATOR_BEFORE,
      OPERATOR_AFTER,
      OPERATOR_BEFORE_INC,
      OPERATOR_AFTER_INC,
      OPERATOR_IN_THE_PAST,
      OPERATOR_OVER
    ],
    validOperators: [
      OPERATOR_ON,
      OPERATOR_NOT_ON,
      OPERATOR_BEFORE,
      OPERATOR_AFTER,
      OPERATOR_BEFORE_INC,
      OPERATOR_AFTER_INC,
      OPERATOR_IN_THE_PAST,
      OPERATOR_OVER
    ],
    format: format4,
    getValueFormatted: getValueFormatted4,
    validate: {
      required: isValidRequired,
      elements: isValidElements,
      min: isValidMinDate,
      max: isValidMaxDate
    }
  };

  // packages/dataviews/build-module/field-types/date.mjs
  var import_date15 = __toESM(require_date(), 1);
  var format5 = {
    date: (0, import_date15.getSettings)().formats.date,
    weekStartsOn: (0, import_date15.getSettings)().l10n.startOfWeek
  };
  function getValueFormatted5({
    item,
    field
  }) {
    const value = field.getValue({ item });
    if (["", void 0, null].includes(value)) {
      return "";
    }
    let formatDate2;
    if (field.type !== "date") {
      formatDate2 = format5;
    } else {
      formatDate2 = field.format;
    }
    return (0, import_date15.dateI18n)(formatDate2.date, (0, import_date15.getDate)(value));
  }
  var sort2 = (a2, b2, direction) => {
    const timeA = new Date(a2).getTime();
    const timeB = new Date(b2).getTime();
    return direction === "asc" ? timeA - timeB : timeB - timeA;
  };
  var date_default2 = {
    type: "date",
    render: render2,
    Edit: "date",
    sort: sort2,
    enableSorting: true,
    enableGlobalSearch: false,
    defaultOperators: [
      OPERATOR_ON,
      OPERATOR_NOT_ON,
      OPERATOR_BEFORE,
      OPERATOR_AFTER,
      OPERATOR_BEFORE_INC,
      OPERATOR_AFTER_INC,
      OPERATOR_IN_THE_PAST,
      OPERATOR_OVER,
      OPERATOR_BETWEEN
    ],
    validOperators: [
      OPERATOR_ON,
      OPERATOR_NOT_ON,
      OPERATOR_BEFORE,
      OPERATOR_AFTER,
      OPERATOR_BEFORE_INC,
      OPERATOR_AFTER_INC,
      OPERATOR_IN_THE_PAST,
      OPERATOR_OVER,
      OPERATOR_BETWEEN
    ],
    format: format5,
    getValueFormatted: getValueFormatted5,
    validate: {
      required: isValidRequired,
      elements: isValidElements,
      min: isValidMinDate,
      max: isValidMaxDate
    }
  };

  // packages/dataviews/build-module/field-types/time.mjs
  var import_date16 = __toESM(require_date(), 1);
  var format6 = {
    time: (0, import_date16.getSettings)().formats.time
  };
  var ANCHOR_DATE = "2000-01-01";
  function toAnchoredDate(secondsSinceMidnight) {
    const hours = Math.floor(secondsSinceMidnight / 3600);
    const minutes = Math.floor(secondsSinceMidnight % 3600 / 60);
    const seconds = secondsSinceMidnight % 60;
    const time = [hours, minutes, seconds].map((part) => String(part).padStart(2, "0")).join(":");
    return (0, import_date16.getDate)(`${ANCHOR_DATE}T${time}`);
  }
  function getValueFormatted6({
    item,
    field
  }) {
    const secondsSinceMidnight = parseTime2(field.getValue({ item }));
    if (secondsSinceMidnight === null) {
      return "";
    }
    let formatTime;
    if (field.type !== "time") {
      formatTime = format6;
    } else {
      formatTime = field.format;
    }
    return (0, import_date16.dateI18n)(formatTime.time, toAnchoredDate(secondsSinceMidnight));
  }
  var sort3 = (a2, b2, direction) => {
    const timeA = parseTime2(a2);
    const timeB = parseTime2(b2);
    if (timeA === null || timeB === null) {
      if (timeA === timeB) {
        return 0;
      }
      return timeA === null ? 1 : -1;
    }
    return direction === "asc" ? timeA - timeB : timeB - timeA;
  };
  var time_default = {
    type: "time",
    render: render2,
    Edit: "time",
    sort: sort3,
    enableSorting: true,
    enableGlobalSearch: false,
    defaultOperators: [
      OPERATOR_ON,
      OPERATOR_NOT_ON,
      OPERATOR_BEFORE,
      OPERATOR_AFTER,
      OPERATOR_BEFORE_INC,
      OPERATOR_AFTER_INC,
      OPERATOR_BETWEEN
    ],
    validOperators: [
      OPERATOR_ON,
      OPERATOR_NOT_ON,
      OPERATOR_BEFORE,
      OPERATOR_AFTER,
      OPERATOR_BEFORE_INC,
      OPERATOR_AFTER_INC,
      OPERATOR_BETWEEN
    ],
    format: format6,
    getValueFormatted: getValueFormatted6,
    validate: {
      required: isValidRequired,
      elements: isValidElements,
      min: isValidMinTime,
      max: isValidMaxTime
    }
  };

  // packages/dataviews/build-module/field-types/boolean.mjs
  var import_i18n134 = __toESM(require_i18n(), 1);

  // packages/dataviews/build-module/field-types/utils/is-valid-required-for-bool.mjs
  function isValidRequiredForBool(item, field) {
    const value = field.getValue({ item });
    return value === true;
  }

  // packages/dataviews/build-module/field-types/boolean.mjs
  function getValueFormatted7({
    item,
    field
  }) {
    const value = field.getValue({ item });
    if (value === true) {
      return (0, import_i18n134.__)("True");
    }
    if (value === false) {
      return (0, import_i18n134.__)("False");
    }
    return "";
  }
  function isValidCustom4(item, field) {
    const value = field.getValue({ item });
    if (![void 0, "", null].includes(value) && ![true, false].includes(value)) {
      return (0, import_i18n134.__)("Value must be true, false, or undefined");
    }
    return null;
  }
  var sort4 = (a2, b2, direction) => {
    const boolA = Boolean(a2);
    const boolB = Boolean(b2);
    if (boolA === boolB) {
      return 0;
    }
    if (direction === "asc") {
      return boolA ? 1 : -1;
    }
    return boolA ? -1 : 1;
  };
  var boolean_default = {
    type: "boolean",
    render: render2,
    Edit: "checkbox",
    sort: sort4,
    validate: {
      required: isValidRequiredForBool,
      elements: isValidElements,
      custom: isValidCustom4
    },
    enableSorting: true,
    enableGlobalSearch: false,
    defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT],
    validOperators: [OPERATOR_IS, OPERATOR_IS_NOT],
    format: {},
    getValueFormatted: getValueFormatted7
  };

  // packages/dataviews/build-module/field-types/media.mjs
  var media_default = {
    type: "media",
    render: () => null,
    Edit: null,
    sort: () => 0,
    enableSorting: false,
    enableGlobalSearch: false,
    defaultOperators: [],
    validOperators: [],
    format: {},
    getValueFormatted: get_value_formatted_default_default,
    // cannot validate any constraint, so
    // the only available validation for the field author
    // would be providing a custom validator.
    validate: {}
  };

  // packages/dataviews/build-module/field-types/array.mjs
  var import_i18n135 = __toESM(require_i18n(), 1);

  // packages/dataviews/build-module/field-types/utils/is-valid-required-for-array.mjs
  function isValidRequiredForArray(item, field) {
    const value = field.getValue({ item });
    return Array.isArray(value) && value.length > 0 && value.every(
      (element) => ![void 0, "", null].includes(element)
    );
  }

  // packages/dataviews/build-module/field-types/array.mjs
  function getValueFormatted8({
    item,
    field
  }) {
    const value = field.getValue({ item });
    const arr = Array.isArray(value) ? value : [];
    return arr.join(", ");
  }
  function render3({ item, field }) {
    return getValueFormatted8({ item, field });
  }
  function isValidCustom5(item, field) {
    const value = field.getValue({ item });
    if ([void 0, "", null].includes(value)) {
      return null;
    }
    if (!Array.isArray(value)) {
      return (0, import_i18n135.__)("Value must be an array.");
    }
    if (!value.every((v3) => typeof v3 === "string")) {
      return (0, import_i18n135.__)("Every value must be a string.");
    }
    return null;
  }
  var sort5 = (a2, b2, direction) => {
    const arrA = Array.isArray(a2) ? a2 : [];
    const arrB = Array.isArray(b2) ? b2 : [];
    if (arrA.length !== arrB.length) {
      return direction === "asc" ? arrA.length - arrB.length : arrB.length - arrA.length;
    }
    const joinedA = arrA.join(",");
    const joinedB = arrB.join(",");
    return direction === "asc" ? joinedA.localeCompare(joinedB) : joinedB.localeCompare(joinedA);
  };
  var array_default = {
    type: "array",
    render: render3,
    Edit: "array",
    sort: sort5,
    enableSorting: true,
    enableGlobalSearch: false,
    defaultOperators: [OPERATOR_IS_ANY2, OPERATOR_IS_NONE],
    validOperators: [
      OPERATOR_IS_ANY2,
      OPERATOR_IS_NONE,
      OPERATOR_IS_ALL,
      OPERATOR_IS_NOT_ALL
    ],
    format: {},
    getValueFormatted: getValueFormatted8,
    validate: {
      required: isValidRequiredForArray,
      elements: isValidElements,
      custom: isValidCustom5
    }
  };

  // packages/dataviews/build-module/field-types/password.mjs
  function getValueFormatted9({
    item,
    field
  }) {
    return field.getValue({ item }) ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" : "";
  }
  var password_default2 = {
    type: "password",
    render: render2,
    Edit: "password",
    sort: () => 0,
    // Passwords should not be sortable for security reasons
    enableSorting: false,
    enableGlobalSearch: false,
    defaultOperators: [],
    validOperators: [],
    format: {},
    getValueFormatted: getValueFormatted9,
    validate: {
      required: isValidRequired,
      pattern: isValidPattern,
      minLength: isValidMinLength,
      maxLength: isValidMaxLength,
      elements: isValidElements
    }
  };

  // packages/dataviews/build-module/field-types/telephone.mjs
  var telephone_default = {
    type: "telephone",
    render: render2,
    Edit: "telephone",
    sort: sort_text_default,
    enableSorting: true,
    enableGlobalSearch: false,
    defaultOperators: [OPERATOR_IS_ANY2, OPERATOR_IS_NONE],
    validOperators: [
      OPERATOR_IS,
      OPERATOR_IS_NOT,
      OPERATOR_CONTAINS,
      OPERATOR_NOT_CONTAINS,
      OPERATOR_STARTS_WITH,
      // Multiple selection
      OPERATOR_IS_ANY2,
      OPERATOR_IS_NONE,
      OPERATOR_IS_NOT_ALL
    ],
    format: {},
    getValueFormatted: get_value_formatted_default_default,
    validate: {
      required: isValidRequired,
      pattern: isValidPattern,
      minLength: isValidMinLength,
      maxLength: isValidMaxLength,
      elements: isValidElements
    }
  };

  // packages/dataviews/build-module/field-types/color.mjs
  var import_i18n136 = __toESM(require_i18n(), 1);
  var import_jsx_runtime360 = __toESM(require_jsx_runtime(), 1);
  function render4({ item, field }) {
    if (field.hasElements) {
      return /* @__PURE__ */ (0, import_jsx_runtime360.jsx)(RenderFromElements, { item, field });
    }
    const value = get_value_formatted_default_default({ item, field });
    if (!value || !A(value).isValid()) {
      return value;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime360.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
      /* @__PURE__ */ (0, import_jsx_runtime360.jsx)(
        "div",
        {
          style: {
            width: "16px",
            height: "16px",
            borderRadius: "50%",
            backgroundColor: value,
            border: "1px solid #ddd",
            flexShrink: 0
          }
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime360.jsx)("span", { children: value })
    ] });
  }
  function isValidCustom6(item, field) {
    const value = field.getValue({ item });
    if (![void 0, "", null].includes(value) && !A(value).isValid()) {
      return (0, import_i18n136.__)("Value must be a valid color.");
    }
    return null;
  }
  var sort6 = (a2, b2, direction) => {
    const colorA = A(a2);
    const colorB = A(b2);
    if (!colorA.isValid() && !colorB.isValid()) {
      return 0;
    }
    if (!colorA.isValid()) {
      return direction === "asc" ? 1 : -1;
    }
    if (!colorB.isValid()) {
      return direction === "asc" ? -1 : 1;
    }
    const hslA = colorA.toHsl();
    const hslB = colorB.toHsl();
    if (hslA.h !== hslB.h) {
      return direction === "asc" ? hslA.h - hslB.h : hslB.h - hslA.h;
    }
    if (hslA.s !== hslB.s) {
      return direction === "asc" ? hslA.s - hslB.s : hslB.s - hslA.s;
    }
    return direction === "asc" ? hslA.l - hslB.l : hslB.l - hslA.l;
  };
  var color_default2 = {
    type: "color",
    render: render4,
    Edit: "color",
    sort: sort6,
    enableSorting: true,
    enableGlobalSearch: false,
    defaultOperators: [OPERATOR_IS_ANY2, OPERATOR_IS_NONE],
    validOperators: [
      OPERATOR_IS,
      OPERATOR_IS_NOT,
      OPERATOR_IS_ANY2,
      OPERATOR_IS_NONE
    ],
    format: {},
    getValueFormatted: get_value_formatted_default_default,
    validate: {
      required: isValidRequired,
      elements: isValidElements,
      custom: isValidCustom6
    }
  };

  // packages/dataviews/build-module/field-types/url.mjs
  var url_default = {
    type: "url",
    render: render2,
    Edit: "url",
    sort: sort_text_default,
    enableSorting: true,
    enableGlobalSearch: false,
    defaultOperators: [OPERATOR_IS_ANY2, OPERATOR_IS_NONE],
    validOperators: [
      OPERATOR_IS,
      OPERATOR_IS_NOT,
      OPERATOR_CONTAINS,
      OPERATOR_NOT_CONTAINS,
      OPERATOR_STARTS_WITH,
      // Multiple selection
      OPERATOR_IS_ANY2,
      OPERATOR_IS_NONE,
      OPERATOR_IS_NOT_ALL
    ],
    format: {},
    getValueFormatted: get_value_formatted_default_default,
    validate: {
      required: isValidRequired,
      pattern: isValidPattern,
      minLength: isValidMinLength,
      maxLength: isValidMaxLength,
      elements: isValidElements
    }
  };

  // packages/dataviews/build-module/field-types/no-type.mjs
  var sort7 = (a2, b2, direction) => {
    if (typeof a2 === "number" && typeof b2 === "number") {
      return sort_number_default(a2, b2, direction);
    }
    return sort_text_default(a2, b2, direction);
  };
  var no_type_default = {
    // type: no type for this one
    render: render2,
    Edit: null,
    sort: sort7,
    enableSorting: true,
    enableGlobalSearch: false,
    defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT],
    validOperators: getAllOperatorNames(),
    format: {},
    getValueFormatted: get_value_formatted_default_default,
    validate: {
      required: isValidRequired,
      elements: isValidElements
    }
  };

  // packages/dataviews/build-module/field-types/utils/get-is-valid.mjs
  function supportsNumericRangeConstraint(type) {
    return type === "integer" || type === "number";
  }
  function supportsStringRangeConstraint(type) {
    return type === "date" || type === "datetime" || type === "time";
  }
  function normalizeRangeRule(value, fieldType, key) {
    const validator = fieldType.validate[key];
    if (validator && (typeof value === "number" && supportsNumericRangeConstraint(fieldType.type) || typeof value === "string" && supportsStringRangeConstraint(fieldType.type))) {
      return { constraint: value, validate: validator };
    }
    return void 0;
  }
  function getIsValid(field, fieldType) {
    const rules = field.isValid;
    let required;
    if (rules?.required === true && fieldType.validate.required !== void 0) {
      required = {
        constraint: true,
        validate: fieldType.validate.required
      };
    }
    let elements2;
    if ((rules?.elements === true || // elements is enabled unless the field opts-out
    rules?.elements === void 0 && (!!field.elements || !!field.getElements)) && fieldType.validate.elements !== void 0) {
      elements2 = {
        constraint: true,
        validate: fieldType.validate.elements
      };
    }
    const min4 = normalizeRangeRule(rules?.min, fieldType, "min");
    const max4 = normalizeRangeRule(rules?.max, fieldType, "max");
    const minLengthValue = rules?.minLength;
    let minLength;
    if (typeof minLengthValue === "number" && fieldType.validate.minLength !== void 0) {
      minLength = {
        constraint: minLengthValue,
        validate: fieldType.validate.minLength
      };
    }
    const maxLengthValue = rules?.maxLength;
    let maxLength;
    if (typeof maxLengthValue === "number" && fieldType.validate.maxLength !== void 0) {
      maxLength = {
        constraint: maxLengthValue,
        validate: fieldType.validate.maxLength
      };
    }
    const patternValue = rules?.pattern;
    let pattern;
    if (patternValue !== void 0 && fieldType.validate.pattern !== void 0) {
      pattern = {
        constraint: patternValue,
        validate: fieldType.validate.pattern
      };
    }
    const custom = rules?.custom ?? fieldType.validate.custom;
    return {
      required,
      elements: elements2,
      min: min4,
      max: max4,
      minLength,
      maxLength,
      pattern,
      custom
    };
  }

  // packages/dataviews/build-module/field-types/utils/get-filter.mjs
  function getFilter2(fieldType) {
    return fieldType.validOperators.reduce((accumulator, operator) => {
      const operatorObj = getOperatorByName(operator);
      if (operatorObj?.filter) {
        accumulator[operator] = operatorObj.filter;
      }
      return accumulator;
    }, {});
  }

  // packages/dataviews/build-module/field-types/utils/get-format.mjs
  function getFormat(field, fieldType) {
    return {
      ...fieldType.format,
      ...field.format
    };
  }
  var get_format_default = getFormat;

  // packages/dataviews/build-module/field-types/index.mjs
  function getFieldTypeByName(type) {
    const found = [
      email_default,
      integer_default,
      number_default,
      text_default,
      datetime_default,
      date_default2,
      time_default,
      boolean_default,
      media_default,
      array_default,
      password_default2,
      telephone_default,
      color_default2,
      url_default
    ].find((fieldType) => fieldType?.type === type);
    if (!!found) {
      return found;
    }
    return no_type_default;
  }
  function normalizeFields(fields2) {
    return fields2.map((field) => {
      const fieldType = getFieldTypeByName(field.type);
      const getValue3 = field.getValue || get_value_from_id_default(field.id);
      const sort8 = function(a2, b2, direction) {
        const aValue = getValue3({ item: a2 });
        const bValue = getValue3({ item: b2 });
        return field.sort ? field.sort(aValue, bValue, direction) : fieldType.sort(aValue, bValue, direction);
      };
      return {
        id: field.id,
        label: field.label || field.id,
        header: field.header || field.label || field.id,
        description: field.description,
        placeholder: field.placeholder,
        getValue: getValue3,
        setValue: field.setValue || set_value_from_id_default(field.id),
        elements: field.elements,
        getElements: field.getElements,
        hasElements: hasElements(field),
        isVisible: field.isVisible,
        isDisabled: typeof field.isDisabled === "function" ? field.isDisabled : () => !!field.isDisabled,
        enableHiding: field.enableHiding ?? true,
        readOnly: field.readOnly ?? false,
        // The type provides defaults for the following props
        type: fieldType.type,
        render: field.render ?? fieldType.render,
        Edit: getControl(field, fieldType.Edit),
        sort: sort8,
        enableSorting: field.enableSorting ?? fieldType.enableSorting,
        enableGlobalSearch: field.enableGlobalSearch ?? fieldType.enableGlobalSearch,
        isValid: getIsValid(field, fieldType),
        filterBy: get_filter_by_default(
          field,
          fieldType.defaultOperators,
          fieldType.validOperators
        ),
        filter: getFilter2(fieldType),
        format: get_format_default(field, fieldType),
        getValueFormatted: field.getValueFormatted ?? fieldType.getValueFormatted
      };
    });
  }

  // packages/dataviews/build-module/hooks/use-data.mjs
  var import_element214 = __toESM(require_element(), 1);
  function useData({
    view,
    data: shownData,
    getItemId: getItemId3,
    isLoading,
    paginationInfo,
    selection
  }) {
    const isInfiniteScrollEnabled = view.infiniteScrollEnabled;
    const [hasInitiallyLoaded, setHasInitiallyLoaded] = (0, import_element214.useState)(!isLoading);
    (0, import_element214.useEffect)(() => {
      if (!isLoading) {
        setHasInitiallyLoaded(true);
      }
    }, [isLoading]);
    const previousDataRef = (0, import_element214.useRef)(shownData);
    const previousPaginationInfoRef = (0, import_element214.useRef)(paginationInfo);
    (0, import_element214.useEffect)(() => {
      if (!isLoading) {
        previousDataRef.current = shownData;
        previousPaginationInfoRef.current = paginationInfo;
      }
    }, [shownData, isLoading, paginationInfo]);
    const [visibleEntries, setVisibleEntries] = (0, import_element214.useState)([]);
    const positionMapRef = (0, import_element214.useRef)(/* @__PURE__ */ new Map());
    const allLoadedRecordsRef = (0, import_element214.useRef)([]);
    const prevViewParamsRef = (0, import_element214.useRef)({
      search: void 0,
      filters: void 0,
      perPage: void 0
    });
    const scrollDirectionRef = (0, import_element214.useRef)(void 0);
    const prevStartPositionRef = (0, import_element214.useRef)(void 0);
    const hasInitializedRef = (0, import_element214.useRef)(false);
    const allLoadedRecords = (0, import_element214.useMemo)(() => {
      if (view.startPosition !== void 0 && prevStartPositionRef.current !== void 0) {
        if (view.startPosition < prevStartPositionRef.current) {
          scrollDirectionRef.current = "up";
        } else if (view.startPosition > prevStartPositionRef.current) {
          scrollDirectionRef.current = "down";
        }
      }
      prevStartPositionRef.current = view.startPosition;
      const currentFiltersKey = JSON.stringify(view.filters ?? []);
      const prevFiltersKey = prevViewParamsRef.current.filters;
      const shouldReset = !hasInitializedRef.current || !view.infiniteScrollEnabled || view.search !== prevViewParamsRef.current.search || currentFiltersKey !== prevFiltersKey || view.perPage !== prevViewParamsRef.current.perPage;
      hasInitializedRef.current = true;
      prevViewParamsRef.current = {
        search: view.search,
        filters: currentFiltersKey,
        perPage: view.perPage
      };
      if (shouldReset) {
        positionMapRef.current.clear();
        scrollDirectionRef.current = void 0;
        const startPosition = view.search ? 1 : view.startPosition ?? 1;
        const records = shownData.map((record, index3) => {
          const position = startPosition + index3;
          positionMapRef.current.set(getItemId3(record), position);
          return {
            ...record,
            position
          };
        });
        allLoadedRecordsRef.current = records;
        return records;
      }
      const prev = allLoadedRecordsRef.current;
      const shownDataIds = new Set(shownData.map(getItemId3));
      const scrollDirection = scrollDirectionRef.current;
      const basePosition = view.search ? 1 : view.startPosition ?? 1;
      const newRecords = shownData.map((record, index3) => {
        const itemId = getItemId3(record);
        const position = view.infiniteScrollEnabled ? basePosition + index3 : void 0;
        if (position !== void 0) {
          positionMapRef.current.set(itemId, position);
        }
        return {
          ...record,
          position
        };
      });
      if (newRecords.length === 0) {
        return prev;
      }
      const prevWithoutDuplicates = prev.filter(
        (record) => !shownDataIds.has(getItemId3(record))
      );
      const allRecords = scrollDirection === "up" ? [...newRecords, ...prevWithoutDuplicates] : [...prevWithoutDuplicates, ...newRecords];
      allRecords.sort((a2, b2) => {
        const posA = a2.position;
        const posB = b2.position;
        return posA - posB;
      });
      let result = allRecords;
      if (visibleEntries.length > 0) {
        const visibleMin = Math.min(...visibleEntries);
        const visibleMax = Math.max(...visibleEntries);
        const buffer = 20;
        const recordPositions = allRecords.map(
          (r4) => r4.position
        );
        const minRecordPos = Math.min(...recordPositions);
        const maxRecordPos = Math.max(...recordPositions);
        const hasOverlap = !(maxRecordPos < visibleMin - buffer || minRecordPos > visibleMax + buffer);
        if (hasOverlap) {
          result = allRecords.filter((record) => {
            const itemId = getItemId3(record);
            const isSelected2 = selection?.includes(itemId);
            if (isSelected2) {
              return true;
            }
            const itemPosition = record.position;
            if (scrollDirection === "up") {
              return itemPosition <= visibleMax + buffer;
            } else if (scrollDirection === "down") {
              return itemPosition >= visibleMin - buffer;
            }
            return itemPosition >= visibleMin - buffer && itemPosition <= visibleMax + buffer;
          });
        }
      }
      allLoadedRecordsRef.current = result;
      return result;
    }, [
      shownData,
      view.search,
      view.filters,
      view.perPage,
      view.startPosition,
      view.infiniteScrollEnabled,
      visibleEntries,
      selection,
      getItemId3
    ]);
    if (!isInfiniteScrollEnabled) {
      const dataToReturn = isLoading && previousDataRef.current?.length ? previousDataRef.current : shownData;
      return {
        data: dataToReturn.map((item) => ({
          ...item,
          position: void 0
        })),
        paginationInfo: isLoading && previousDataRef.current?.length ? previousPaginationInfoRef.current : paginationInfo,
        hasInitiallyLoaded,
        setVisibleEntries: void 0
      };
    }
    return {
      data: allLoadedRecords,
      paginationInfo,
      hasInitiallyLoaded,
      setVisibleEntries
    };
  }

  // packages/dataviews/build-module/hooks/use-infinite-scroll.mjs
  var import_element215 = __toESM(require_element(), 1);
  var import_compose30 = __toESM(require_compose(), 1);
  function captureAnchorElement(container, anchorElementRef, direction) {
    const containerRect = container.getBoundingClientRect();
    const centerY = containerRect.top + containerRect.height / 2;
    const items = Array.from(container.querySelectorAll("[aria-posinset]"));
    if (items.length === 0) {
      return false;
    }
    const bestAnchor = items.reduce((best, item) => {
      const itemRect = item.getBoundingClientRect();
      const itemCenterY = itemRect.top + itemRect.height / 2;
      const distance2 = Math.abs(itemCenterY - centerY);
      const bestRect = best.getBoundingClientRect();
      const bestCenterY = bestRect.top + bestRect.height / 2;
      const bestDistance = Math.abs(bestCenterY - centerY);
      return distance2 < bestDistance ? item : best;
    });
    const posinset = Number(bestAnchor.getAttribute("aria-posinset"));
    const anchorRect = bestAnchor.getBoundingClientRect();
    anchorElementRef.current = {
      posinset,
      viewportOffset: anchorRect.top - containerRect.top,
      scrollTop: container.scrollTop,
      direction
    };
    return true;
  }
  function useInfiniteScroll({
    view,
    onChangeView,
    isLoading,
    paginationInfo,
    containerRef,
    setVisibleEntries
  }) {
    const anchorElementRef = (0, import_element215.useRef)(null);
    const viewRef = (0, import_element215.useRef)(view);
    const isLoadingRef = (0, import_element215.useRef)(isLoading);
    const onChangeViewRef = (0, import_element215.useRef)(onChangeView);
    const totalItemsRef = (0, import_element215.useRef)(paginationInfo.totalItems);
    (0, import_element215.useLayoutEffect)(() => {
      viewRef.current = view;
      isLoadingRef.current = isLoading;
      onChangeViewRef.current = onChangeView;
      totalItemsRef.current = paginationInfo.totalItems;
    }, [view, isLoading, onChangeView, paginationInfo.totalItems]);
    const intersectionObserverCallback = (0, import_element215.useCallback)(
      (entries) => {
        if (!setVisibleEntries) {
          return;
        }
        setVisibleEntries((prev) => {
          const newVisibleEntries = new Set(prev);
          let hasChanged = false;
          entries.forEach((entry) => {
            const posInSet = Number(
              entry.target?.attributes?.getNamedItem(
                "aria-posinset"
              )?.value
            );
            if (isNaN(posInSet)) {
              return;
            }
            if (entry.isIntersecting) {
              if (!newVisibleEntries.has(posInSet)) {
                newVisibleEntries.add(posInSet);
                hasChanged = true;
              }
            } else if (newVisibleEntries.has(posInSet)) {
              newVisibleEntries.delete(posInSet);
              hasChanged = true;
            }
          });
          return hasChanged ? Array.from(newVisibleEntries).sort() : prev;
        });
      },
      [setVisibleEntries]
    );
    (0, import_element215.useLayoutEffect)(() => {
      const container = containerRef.current;
      const anchor = anchorElementRef.current;
      if (!container || !view.infiniteScrollEnabled || !anchor || isLoading) {
        return;
      }
      const anchorElement = container.querySelector(
        `[aria-posinset="${anchor.posinset}"]`
      );
      if (anchorElement) {
        const containerRect = container.getBoundingClientRect();
        const anchorRect = anchorElement.getBoundingClientRect();
        const currentOffset = anchorRect.top - containerRect.top;
        const scrollAdjustment = currentOffset - anchor.viewportOffset + (container.scrollTop - anchor.scrollTop);
        if (Math.abs(scrollAdjustment) > 1) {
          container.scrollTop += scrollAdjustment;
        }
      }
      anchorElementRef.current = null;
    }, [containerRef, isLoading, view.infiniteScrollEnabled]);
    const intersectionObserverRef = (0, import_element215.useRef)(
      null
    );
    (0, import_element215.useEffect)(() => {
      if (!view.infiniteScrollEnabled || !intersectionObserverCallback) {
        if (intersectionObserverRef.current) {
          intersectionObserverRef.current.disconnect();
          intersectionObserverRef.current = null;
        }
        return;
      }
      intersectionObserverRef.current = new IntersectionObserver(
        intersectionObserverCallback,
        { root: null, rootMargin: "0px", threshold: 0.1 }
      );
      return () => {
        if (intersectionObserverRef.current) {
          intersectionObserverRef.current.disconnect();
          intersectionObserverRef.current = null;
        }
      };
    }, [view.infiniteScrollEnabled, intersectionObserverCallback]);
    (0, import_element215.useEffect)(() => {
      if (!view.infiniteScrollEnabled || !containerRef.current) {
        return;
      }
      let lastScrollTop = 0;
      const BOTTOM_THRESHOLD = 600;
      const TOP_THRESHOLD = 800;
      const handleScroll = (0, import_compose30.throttle)((event) => {
        const currentView = viewRef.current;
        const totalItems = totalItemsRef.current;
        const target = event.target;
        const scrollTop = target.scrollTop;
        const scrollHeight = target.scrollHeight;
        const clientHeight = target.clientHeight;
        const scrollDirection = scrollTop > lastScrollTop ? "down" : "up";
        lastScrollTop = scrollTop;
        if (isLoadingRef.current) {
          return;
        }
        const currentStartPosition = currentView.startPosition || 1;
        const batchSize = currentView.perPage || 10;
        const currentEndPosition = Math.min(
          currentStartPosition + batchSize,
          totalItems
        );
        if (scrollDirection === "down" && scrollTop + clientHeight >= scrollHeight - BOTTOM_THRESHOLD) {
          if (currentEndPosition < totalItems) {
            const newStartPosition = currentEndPosition;
            captureAnchorElement(target, anchorElementRef, "down");
            onChangeViewRef.current({
              ...currentView,
              startPosition: newStartPosition
            });
          }
        }
        if (scrollDirection === "up" && scrollTop <= TOP_THRESHOLD) {
          if (currentStartPosition > 1) {
            const calculatedStartPosition = currentStartPosition - batchSize;
            const newStartPosition = calculatedStartPosition < 6 ? 1 : calculatedStartPosition;
            captureAnchorElement(target, anchorElementRef, "up");
            onChangeViewRef.current({
              ...currentView,
              startPosition: newStartPosition
            });
          }
        }
      }, 50);
      const container = containerRef.current;
      container.addEventListener("scroll", handleScroll);
      return () => {
        container.removeEventListener("scroll", handleScroll);
        handleScroll.cancel();
      };
    }, [containerRef, view.infiniteScrollEnabled]);
    return {
      intersectionObserver: intersectionObserverRef.current
    };
  }

  // packages/dataviews/build-module/hooks/use-page-clamp.mjs
  var import_element216 = __toESM(require_element(), 1);
  var import_compose31 = __toESM(require_compose(), 1);
  function usePageClamp({
    view,
    onChangeView,
    isLoading,
    totalPages
  }) {
    const lastPage = typeof totalPages === "number" && Number.isFinite(totalPages) ? Math.max(totalPages, 1) : null;
    const page = view.page;
    const goToLastPage = (0, import_compose31.useEvent)(() => {
      if (lastPage !== null) {
        onChangeView({ ...view, page: lastPage });
      }
    });
    (0, import_element216.useEffect)(() => {
      if (isLoading || lastPage === null || !page || page <= lastPage) {
        return;
      }
      goToLastPage();
    }, [isLoading, lastPage, page, goToLastPage]);
  }

  // packages/dataviews/build-module/dataviews-picker/index.mjs
  var import_element217 = __toESM(require_element(), 1);
  var import_compose32 = __toESM(require_compose(), 1);
  var import_jsx_runtime361 = __toESM(require_jsx_runtime(), 1);
  var isItemClickable = () => false;
  var dataViewsPickerLayouts = VIEW_LAYOUTS.filter(
    (viewLayout) => viewLayout.isPicker
  );
  var defaultGetItemId = (item) => item.id;
  var EMPTY_ARRAY9 = [];
  var DEFAULT_PICKER_LAYOUTS = {
    pickerGrid: true,
    pickerTable: true
  };
  function DefaultUI({
    search = true,
    searchLabel = void 0
  }) {
    const { view } = (0, import_element217.useContext)(dataviews_context_default);
    const isInfiniteScroll = view.infiniteScrollEnabled;
    return /* @__PURE__ */ (0, import_jsx_runtime361.jsxs)(import_jsx_runtime361.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime361.jsxs)(
        Stack,
        {
          direction: "row",
          align: "top",
          justify: "space-between",
          className: clsx_default("dataviews__view-actions", {
            "dataviews__view-actions--infinite-scroll": isInfiniteScroll
          }),
          gap: "xs",
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime361.jsxs)(
              Stack,
              {
                direction: "row",
                gap: "sm",
                justify: "start",
                className: "dataviews__search",
                children: [
                  search && /* @__PURE__ */ (0, import_jsx_runtime361.jsx)(dataviews_search_default, { label: searchLabel }),
                  /* @__PURE__ */ (0, import_jsx_runtime361.jsx)(toggle_default, {})
                ]
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime361.jsx)(Stack, { direction: "row", gap: "xs", style: { flexShrink: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime361.jsx)(dataviews_view_config_default, {}) })
          ]
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime361.jsx)(filters_toggled_default, { className: "dataviews-filters__container" }),
      /* @__PURE__ */ (0, import_jsx_runtime361.jsx)(DataViewsLayout, {}),
      /* @__PURE__ */ (0, import_jsx_runtime361.jsx)(DataViewsPickerFooter, {})
    ] });
  }
  function DataViewsPicker({
    view,
    onChangeView,
    fields: fields2,
    search = true,
    searchLabel = void 0,
    actions: actions2 = EMPTY_ARRAY9,
    data,
    getItemId: getItemId3 = defaultGetItemId,
    isLoading = false,
    paginationInfo,
    defaultLayouts: defaultLayoutsProperty = DEFAULT_PICKER_LAYOUTS,
    selection,
    onChangeSelection,
    children,
    config: config2 = { perPageSizes: [10, 20, 50, 100] },
    itemListLabel,
    empty,
    onReset
  }) {
    const { data: displayData, setVisibleEntries } = useData({
      view,
      data,
      getItemId: getItemId3,
      selection,
      paginationInfo
    });
    const containerRef = (0, import_element217.useRef)(null);
    const [containerWidth, setContainerWidth] = (0, import_element217.useState)(0);
    const resizeObserverRef = (0, import_compose32.useResizeObserver)(
      (resizeObserverEntries) => {
        setContainerWidth(
          resizeObserverEntries[0].borderBoxSize[0].inlineSize
        );
      },
      { box: "border-box" }
    );
    const [openedFilter, setOpenedFilter] = (0, import_element217.useState)(null);
    function setSelectionWithChange(value) {
      const newValue = typeof value === "function" ? value(selection) : value;
      if (onChangeSelection) {
        onChangeSelection(newValue);
      }
    }
    const _fields = (0, import_element217.useMemo)(() => normalizeFields(fields2), [fields2]);
    const filters = use_filters_default(_fields, view);
    const hasPrimaryOrLockedFilters = (0, import_element217.useMemo)(
      () => (filters || []).some(
        (filter) => filter.isPrimary || filter.isLocked
      ),
      [filters]
    );
    const [isShowingFilter, setIsShowingFilter] = (0, import_element217.useState)(
      hasPrimaryOrLockedFilters
    );
    const { intersectionObserver } = useInfiniteScroll({
      view,
      onChangeView,
      isLoading,
      paginationInfo,
      containerRef,
      setVisibleEntries
    });
    usePageClamp({
      view,
      onChangeView,
      isLoading,
      totalPages: paginationInfo.totalPages
    });
    (0, import_element217.useEffect)(() => {
      if (hasPrimaryOrLockedFilters && !isShowingFilter) {
        setIsShowingFilter(true);
      }
    }, [hasPrimaryOrLockedFilters, isShowingFilter]);
    const defaultLayouts2 = (0, import_element217.useMemo)(
      () => Object.fromEntries(
        Object.entries(defaultLayoutsProperty).filter(([layoutType]) => {
          return dataViewsPickerLayouts.some(
            (viewLayout) => viewLayout.type === layoutType
          );
        }).map(([key, value]) => [
          key,
          value === true ? {} : value
        ])
      ),
      [defaultLayoutsProperty]
    );
    if (!defaultLayouts2[view.type]) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime361.jsx)(
      dataviews_context_default.Provider,
      {
        value: {
          view,
          onChangeView,
          fields: _fields,
          actions: actions2,
          data: displayData,
          isLoading,
          paginationInfo,
          isItemClickable,
          selection,
          onChangeSelection: setSelectionWithChange,
          openedFilter,
          setOpenedFilter,
          getItemId: getItemId3,
          containerWidth,
          containerRef,
          resizeObserverRef,
          defaultLayouts: defaultLayouts2,
          filters,
          isShowingFilter,
          setIsShowingFilter,
          config: config2,
          itemListLabel,
          empty,
          onReset,
          hasInitiallyLoaded: true,
          intersectionObserver
        },
        children: /* @__PURE__ */ (0, import_jsx_runtime361.jsx)("div", { className: "dataviews-picker-wrapper", children: children ?? /* @__PURE__ */ (0, import_jsx_runtime361.jsx)(DefaultUI, { search, searchLabel }) })
      }
    );
  }
  var DataViewsPickerSubComponents = DataViewsPicker;
  DataViewsPickerSubComponents.Actions = PickerActions;
  DataViewsPickerSubComponents.BulkActionToolbar = DataViewsPickerBulkActionToolbar;
  DataViewsPickerSubComponents.Footer = DataViewsPickerFooter;
  DataViewsPickerSubComponents.Filters = filters_default;
  DataViewsPickerSubComponents.FiltersToggled = filters_toggled_default;
  DataViewsPickerSubComponents.FiltersToggle = toggle_default;
  DataViewsPickerSubComponents.Layout = DataViewsLayout;
  DataViewsPickerSubComponents.LayoutSwitcher = ViewTypeMenu;
  DataViewsPickerSubComponents.PageNavigation = DataViewsPageNavigation;
  DataViewsPickerSubComponents.PageSelect = DataViewsPageSelect;
  DataViewsPickerSubComponents.Pagination = DataViewsPagination;
  DataViewsPickerSubComponents.Search = dataviews_search_default;
  DataViewsPickerSubComponents.ViewConfig = DataviewsViewConfigDropdown;
  var dataviews_picker_default = DataViewsPickerSubComponents;

  // packages/dataviews/build-module/dataform/index.mjs
  var import_element228 = __toESM(require_element(), 1);

  // packages/dataviews/build-module/components/dataform-context/index.mjs
  var import_element218 = __toESM(require_element(), 1);
  var import_jsx_runtime362 = __toESM(require_jsx_runtime(), 1);
  var DataFormContext = (0, import_element218.createContext)({
    fields: []
  });
  DataFormContext.displayName = "DataFormContext";
  function DataFormProvider({
    fields: fields2,
    children
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime362.jsx)(DataFormContext.Provider, { value: { fields: fields2 }, children });
  }
  var dataform_context_default = DataFormContext;

  // packages/dataviews/build-module/components/dataform-layouts/data-form-layout.mjs
  var import_element227 = __toESM(require_element(), 1);

  // packages/dataviews/build-module/components/dataform-layouts/regular/index.mjs
  var import_element219 = __toESM(require_element(), 1);
  var import_components73 = __toESM(require_components(), 1);

  // packages/dataviews/build-module/components/dataform-layouts/can-render-field.mjs
  function canRenderField(field) {
    return !!field && (field.readOnly === true || !!field.Edit);
  }

  // packages/dataviews/build-module/components/dataform-layouts/normalize-form.mjs
  var import_i18n137 = __toESM(require_i18n(), 1);
  var DEFAULT_LAYOUT = {
    type: "regular",
    labelPosition: "top"
  };
  var normalizeCardSummaryField = (sum) => {
    if (typeof sum === "string") {
      return [{ id: sum, visibility: "when-collapsed" }];
    }
    return sum.map((item) => {
      if (typeof item === "string") {
        return { id: item, visibility: "when-collapsed" };
      }
      return { id: item.id, visibility: item.visibility };
    });
  };
  function normalizeLayout(layout) {
    let normalizedLayout = DEFAULT_LAYOUT;
    if (layout?.type === "regular") {
      normalizedLayout = {
        type: "regular",
        labelPosition: layout?.labelPosition ?? "top"
      };
    } else if (layout?.type === "panel") {
      const summary = layout.summary ?? [];
      const normalizedSummary = Array.isArray(summary) ? summary : [summary];
      const openAs = layout?.openAs;
      let normalizedOpenAs;
      if (typeof openAs === "object" && openAs.type === "modal") {
        normalizedOpenAs = {
          type: "modal",
          applyLabel: openAs.applyLabel?.trim() || (0, import_i18n137.__)("Apply"),
          cancelLabel: openAs.cancelLabel?.trim() || (0, import_i18n137.__)("Cancel")
        };
      } else if (openAs === "modal") {
        normalizedOpenAs = {
          type: "modal",
          applyLabel: (0, import_i18n137.__)("Apply"),
          cancelLabel: (0, import_i18n137.__)("Cancel")
        };
      } else {
        normalizedOpenAs = { type: "dropdown" };
      }
      normalizedLayout = {
        type: "panel",
        labelPosition: layout?.labelPosition ?? "side",
        openAs: normalizedOpenAs,
        summary: normalizedSummary,
        editVisibility: layout?.editVisibility ?? "on-hover",
        showPlaceholderIfEmpty: layout?.showPlaceholderIfEmpty ?? false
      };
    } else if (layout?.type === "card") {
      if (layout.withHeader === false) {
        normalizedLayout = {
          type: "card",
          withHeader: false,
          isOpened: true,
          summary: [],
          isCollapsible: false
        };
      } else {
        const summary = layout.summary ?? [];
        normalizedLayout = {
          type: "card",
          withHeader: true,
          isOpened: typeof layout.isOpened === "boolean" ? layout.isOpened : true,
          summary: normalizeCardSummaryField(summary),
          isCollapsible: layout.isCollapsible === void 0 ? true : layout.isCollapsible
        };
      }
    } else if (layout?.type === "row") {
      normalizedLayout = {
        type: "row",
        alignment: layout?.alignment ?? "center",
        styles: layout?.styles ?? {}
      };
    } else if (layout?.type === "details") {
      normalizedLayout = {
        type: "details",
        summary: layout?.summary ?? ""
      };
    }
    return normalizedLayout;
  }
  function normalizeForm(form) {
    const normalizedFormLayout = normalizeLayout(form?.layout);
    const normalizedFields = (form.fields ?? []).map(
      (field) => {
        if (typeof field === "string") {
          return {
            id: field,
            layout: normalizedFormLayout
          };
        }
        const fieldLayout = field.layout ? normalizeLayout(field.layout) : normalizedFormLayout;
        return {
          id: field.id,
          layout: fieldLayout,
          ...!!field.label && { label: field.label },
          ...!!field.description && {
            description: field.description
          },
          ..."children" in field && Array.isArray(field.children) && {
            children: normalizeForm({
              fields: field.children,
              layout: DEFAULT_LAYOUT
            }).fields
          }
        };
      }
    );
    return {
      layout: normalizedFormLayout,
      fields: normalizedFields
    };
  }
  var normalize_form_default = normalizeForm;

  // packages/dataviews/build-module/components/dataform-layouts/regular/index.mjs
  var import_jsx_runtime363 = __toESM(require_jsx_runtime(), 1);
  function Header3({ title }) {
    return /* @__PURE__ */ (0, import_jsx_runtime363.jsx)(
      Stack,
      {
        direction: "column",
        className: "dataforms-layouts-regular__header",
        gap: "lg",
        children: /* @__PURE__ */ (0, import_jsx_runtime363.jsx)(Stack, { direction: "row", align: "center", children: /* @__PURE__ */ (0, import_jsx_runtime363.jsx)(import_components73.__experimentalHeading, { level: 2, size: 13, children: title }) })
      }
    );
  }
  function FormRegularField({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    const { fields: fields2 } = (0, import_element219.useContext)(dataform_context_default);
    const layout = field.layout;
    const form = (0, import_element219.useMemo)(
      () => ({
        layout: DEFAULT_LAYOUT,
        fields: !!field.children ? field.children : []
      }),
      [field]
    );
    if (!!field.children) {
      return /* @__PURE__ */ (0, import_jsx_runtime363.jsxs)(import_jsx_runtime363.Fragment, { children: [
        !hideLabelFromVision && field.label && /* @__PURE__ */ (0, import_jsx_runtime363.jsx)(Header3, { title: field.label }),
        /* @__PURE__ */ (0, import_jsx_runtime363.jsx)(
          DataFormLayout,
          {
            data,
            form,
            onChange,
            validity: validity?.children
          }
        )
      ] });
    }
    const labelPosition = layout.labelPosition;
    const fieldDefinition = fields2.find(
      (fieldDef) => fieldDef.id === field.id
    );
    if (!canRenderField(fieldDefinition)) {
      return null;
    }
    if (labelPosition === "side") {
      return /* @__PURE__ */ (0, import_jsx_runtime363.jsxs)(
        Stack,
        {
          direction: "row",
          className: "dataforms-layouts-regular__field",
          gap: "sm",
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime363.jsx)(
              "div",
              {
                className: clsx_default(
                  "dataforms-layouts-regular__field-label",
                  `dataforms-layouts-regular__field-label--label-position-${labelPosition}`
                ),
                children: /* @__PURE__ */ (0, import_jsx_runtime363.jsx)(import_components73.BaseControl.VisualLabel, { children: fieldDefinition.label })
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime363.jsx)("div", { className: "dataforms-layouts-regular__field-control", children: fieldDefinition.readOnly === true ? /* @__PURE__ */ (0, import_jsx_runtime363.jsx)(
              fieldDefinition.render,
              {
                item: data,
                field: fieldDefinition
              }
            ) : fieldDefinition.Edit && /* @__PURE__ */ (0, import_jsx_runtime363.jsx)(
              fieldDefinition.Edit,
              {
                data,
                field: fieldDefinition,
                onChange,
                hideLabelFromVision: true,
                markWhenOptional,
                validity
              },
              fieldDefinition.id
            ) })
          ]
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime363.jsx)("div", { className: "dataforms-layouts-regular__field", children: fieldDefinition.readOnly === true ? /* @__PURE__ */ (0, import_jsx_runtime363.jsx)(import_jsx_runtime363.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime363.jsxs)(import_jsx_runtime363.Fragment, { children: [
      !hideLabelFromVision && labelPosition !== "none" && /* @__PURE__ */ (0, import_jsx_runtime363.jsx)(import_components73.BaseControl.VisualLabel, { children: fieldDefinition.label }),
      /* @__PURE__ */ (0, import_jsx_runtime363.jsx)(
        fieldDefinition.render,
        {
          item: data,
          field: fieldDefinition
        }
      )
    ] }) }) : fieldDefinition.Edit && /* @__PURE__ */ (0, import_jsx_runtime363.jsx)(
      fieldDefinition.Edit,
      {
        data,
        field: fieldDefinition,
        onChange,
        hideLabelFromVision: labelPosition === "none" ? true : hideLabelFromVision,
        markWhenOptional,
        validity
      }
    ) });
  }

  // packages/dataviews/build-module/components/dataform-layouts/panel/modal.mjs
  var import_deepmerge3 = __toESM(require_cjs(), 1);
  var import_components76 = __toESM(require_components(), 1);
  var import_element223 = __toESM(require_element(), 1);
  var import_compose34 = __toESM(require_compose(), 1);

  // packages/dataviews/build-module/components/dataform-layouts/panel/summary-button.mjs
  var import_components75 = __toESM(require_components(), 1);
  var import_i18n138 = __toESM(require_i18n(), 1);
  var import_compose33 = __toESM(require_compose(), 1);

  // packages/dataviews/build-module/components/dataform-layouts/panel/utils/get-label-classname.mjs
  function getLabelClassName(labelPosition, showError) {
    return clsx_default(
      "dataforms-layouts-panel__field-label",
      `dataforms-layouts-panel__field-label--label-position-${labelPosition}`,
      { "has-error": showError }
    );
  }
  var get_label_classname_default = getLabelClassName;

  // packages/dataviews/build-module/components/dataform-layouts/panel/field-label-content.mjs
  var import_components74 = __toESM(require_components(), 1);
  var import_jsx_runtime364 = __toESM(require_jsx_runtime(), 1);
  function FieldLabelContent({
    showError,
    errorMessage,
    fieldLabel,
    errorId
  }) {
    if (!showError) {
      return /* @__PURE__ */ (0, import_jsx_runtime364.jsx)(import_jsx_runtime364.Fragment, { children: fieldLabel });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime364.jsxs)("span", { className: "dataforms-layouts-panel__field-label-error-content", children: [
      /* @__PURE__ */ (0, import_jsx_runtime364.jsx)(import_components74.Icon, { icon: error_default, size: 16 }),
      /* @__PURE__ */ (0, import_jsx_runtime364.jsx)(VisuallyHidden, { id: errorId, children: errorMessage }),
      fieldLabel
    ] });
  }
  var field_label_content_default = FieldLabelContent;

  // packages/dataviews/build-module/components/dataform-layouts/panel/utils/get-first-validation-error.mjs
  function getFirstValidationError(validity) {
    if (!validity) {
      return void 0;
    }
    const validityRules = Object.keys(validity).filter(
      (key) => key !== "children"
    );
    for (const key of validityRules) {
      const rule = validity[key];
      if (rule === void 0) {
        continue;
      }
      if (rule.type === "invalid") {
        if (rule.message) {
          return rule.message;
        }
        if (key === "required") {
          return "A required field is empty";
        }
        return "Unidentified validation error";
      }
    }
    if (validity.children) {
      for (const childValidity of Object.values(validity.children)) {
        const childError = getFirstValidationError(childValidity);
        if (childError) {
          return childError;
        }
      }
    }
    return void 0;
  }
  var get_first_validation_error_default = getFirstValidationError;

  // packages/dataviews/build-module/components/dataform-layouts/panel/summary-button.mjs
  var import_jsx_runtime365 = __toESM(require_jsx_runtime(), 1);
  function SummaryValue({
    item,
    field,
    showPlaceholderIfEmpty
  }) {
    if (showPlaceholderIfEmpty && field.placeholder && [void 0, null, ""].includes(field.getValue({ item }))) {
      return /* @__PURE__ */ (0, import_jsx_runtime365.jsx)("span", { className: "dataforms-layouts-panel__field-placeholder", children: field.placeholder });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime365.jsx)(field.render, { item, field });
  }
  function SummaryButton({
    data,
    field,
    fieldLabel,
    summaryFields,
    validity,
    touched,
    disabled: disabled2,
    isOpen: isOpen2,
    onClick
  }) {
    const { labelPosition, editVisibility, showPlaceholderIfEmpty } = field.layout;
    const errorMessage = get_first_validation_error_default(validity);
    const showError = touched && !!errorMessage;
    const labelClassName = get_label_classname_default(labelPosition, showError);
    const className = clsx_default(
      "dataforms-layouts-panel__field-trigger",
      `dataforms-layouts-panel__field-trigger--label-${labelPosition}`,
      {
        "is-disabled": disabled2,
        "dataforms-layouts-panel__field-trigger--edit-always": editVisibility === "always"
      }
    );
    const controlId = (0, import_compose33.useInstanceId)(
      SummaryButton,
      "dataforms-layouts-panel__field-control"
    );
    const errorId = `${controlId}-error`;
    const ariaLabel = showError ? (0, import_i18n138.sprintf)(
      // translators: %s: Field name.
      (0, import_i18n138._x)("Edit %s (has errors)", "field"),
      fieldLabel || ""
    ) : (0, import_i18n138.sprintf)(
      // translators: %s: Field name.
      (0, import_i18n138._x)("Edit %s", "field"),
      fieldLabel || ""
    );
    return /* @__PURE__ */ (0, import_jsx_runtime365.jsxs)("div", { className, children: [
      labelPosition !== "none" && /* @__PURE__ */ (0, import_jsx_runtime365.jsx)("span", { className: labelClassName, children: /* @__PURE__ */ (0, import_jsx_runtime365.jsx)(
        field_label_content_default,
        {
          showError,
          errorMessage,
          fieldLabel,
          errorId
        }
      ) }),
      labelPosition === "none" && showError && /* @__PURE__ */ (0, import_jsx_runtime365.jsx)(
        field_label_content_default,
        {
          showError: true,
          errorMessage,
          errorId
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime365.jsx)(
        "span",
        {
          id: `${controlId}`,
          className: "dataforms-layouts-panel__field-control",
          children: summaryFields.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime365.jsx)(
            "span",
            {
              style: {
                display: "flex",
                flexDirection: "column",
                alignItems: "flex-start",
                width: "100%",
                gap: "2px"
              },
              children: summaryFields.map((summaryField) => /* @__PURE__ */ (0, import_jsx_runtime365.jsx)(
                "span",
                {
                  style: { width: "100%" },
                  children: /* @__PURE__ */ (0, import_jsx_runtime365.jsx)(
                    SummaryValue,
                    {
                      item: data,
                      field: summaryField,
                      showPlaceholderIfEmpty
                    }
                  )
                },
                summaryField.id
              ))
            }
          ) : summaryFields.map((summaryField) => /* @__PURE__ */ (0, import_jsx_runtime365.jsx)(
            SummaryValue,
            {
              item: data,
              field: summaryField,
              showPlaceholderIfEmpty
            },
            summaryField.id
          ))
        }
      ),
      !disabled2 && /* @__PURE__ */ (0, import_jsx_runtime365.jsx)(
        import_components75.Button,
        {
          className: "dataforms-layouts-panel__field-trigger-icon",
          label: ariaLabel,
          icon: pencil_default,
          size: "small",
          "aria-expanded": isOpen2,
          "aria-haspopup": "dialog",
          "aria-describedby": showError ? `${controlId} ${errorId}` : controlId,
          onClick
        }
      )
    ] });
  }

  // packages/dataviews/build-module/hooks/use-form-validity.mjs
  var import_deepmerge2 = __toESM(require_cjs(), 1);
  var import_es63 = __toESM(require_es6(), 1);
  var import_element220 = __toESM(require_element(), 1);
  var import_i18n139 = __toESM(require_i18n(), 1);
  function isFormValid(formValidity) {
    if (!formValidity) {
      return true;
    }
    return Object.values(formValidity).every((fieldValidation) => {
      return Object.entries(fieldValidation).every(
        ([key, validation]) => {
          if (key === "children" && validation && typeof validation === "object") {
            return isFormValid(validation);
          }
          return validation.type !== "invalid" && validation.type !== "validating";
        }
      );
    });
  }
  function getFormFieldsToValidate(form, fields2) {
    const normalizedForm = normalize_form_default(form);
    if (normalizedForm.fields.length === 0) {
      return [];
    }
    const fieldsMap = /* @__PURE__ */ new Map();
    fields2.forEach((field) => {
      fieldsMap.set(field.id, field);
    });
    function processFormField(formField) {
      if ("children" in formField && Array.isArray(formField.children)) {
        const processedChildren = formField.children.map(processFormField).filter((child) => child !== null);
        if (processedChildren.length === 0) {
          return null;
        }
        return {
          id: formField.id,
          children: processedChildren
        };
      }
      const fieldDef = fieldsMap.get(formField.id);
      if (!fieldDef) {
        return null;
      }
      const [normalizedField] = normalizeFields([fieldDef]);
      return {
        id: formField.id,
        children: [],
        field: normalizedField
      };
    }
    const toValidate = normalizedForm.fields.map(processFormField).filter((field) => field !== null);
    return toValidate;
  }
  function setValidityAtPath(formValidity, fieldValidity, path) {
    if (!formValidity) {
      formValidity = {};
    }
    if (path.length === 0) {
      return formValidity;
    }
    const result = { ...formValidity };
    let current = result;
    for (let i2 = 0; i2 < path.length - 1; i2++) {
      const segment2 = path[i2];
      if (!current[segment2]) {
        current[segment2] = {};
      }
      current[segment2] = { ...current[segment2] };
      current = current[segment2];
    }
    const finalKey = path[path.length - 1];
    current[finalKey] = {
      ...current[finalKey] || {},
      ...fieldValidity
    };
    return result;
  }
  function removeValidationProperty(formValidity, path, property) {
    if (!formValidity || path.length === 0) {
      return formValidity;
    }
    const result = { ...formValidity };
    let current = result;
    for (let i2 = 0; i2 < path.length - 1; i2++) {
      const segment2 = path[i2];
      if (!current[segment2]) {
        return formValidity;
      }
      current[segment2] = { ...current[segment2] };
      current = current[segment2];
    }
    const finalKey = path[path.length - 1];
    if (!current[finalKey]) {
      return formValidity;
    }
    const fieldValidity = { ...current[finalKey] };
    delete fieldValidity[property];
    if (Object.keys(fieldValidity).length === 0) {
      delete current[finalKey];
    } else {
      current[finalKey] = fieldValidity;
    }
    if (Object.keys(result).length === 0) {
      return void 0;
    }
    return result;
  }
  function handleElementsValidationAsync(promise, formField, promiseHandler) {
    const { elementsCounterRef, setFormValidity, path, item } = promiseHandler;
    const currentToken = (elementsCounterRef.current[formField.id] || 0) + 1;
    elementsCounterRef.current[formField.id] = currentToken;
    promise.then((result) => {
      if (currentToken !== elementsCounterRef.current[formField.id]) {
        return;
      }
      if (!Array.isArray(result)) {
        setFormValidity((prev) => {
          const newFormValidity = setValidityAtPath(
            prev,
            {
              elements: {
                type: "invalid",
                message: (0, import_i18n139.__)("Could not validate elements.")
              }
            },
            [...path, formField.id]
          );
          return newFormValidity;
        });
        return;
      }
      if (formField.field?.isValid.elements && !formField.field.isValid.elements.validate(item, {
        ...formField.field,
        elements: result
      })) {
        setFormValidity((prev) => {
          const newFormValidity = setValidityAtPath(
            prev,
            {
              elements: {
                type: "invalid",
                message: (0, import_i18n139.__)(
                  "Value must be one of the elements."
                )
              }
            },
            [...path, formField.id]
          );
          return newFormValidity;
        });
      } else {
        setFormValidity((prev) => {
          return removeValidationProperty(
            prev,
            [...path, formField.id],
            "elements"
          );
        });
      }
    }).catch((error2) => {
      if (currentToken !== elementsCounterRef.current[formField.id]) {
        return;
      }
      let errorMessage;
      if (error2 instanceof Error) {
        errorMessage = error2.message;
      } else {
        errorMessage = String(error2) || (0, import_i18n139.__)(
          "Unknown error when running elements validation asynchronously."
        );
      }
      setFormValidity((prev) => {
        const newFormValidity = setValidityAtPath(
          prev,
          {
            elements: {
              type: "invalid",
              message: errorMessage
            }
          },
          [...path, formField.id]
        );
        return newFormValidity;
      });
    });
  }
  function handleCustomValidationAsync(promise, formField, promiseHandler) {
    const { customCounterRef, setFormValidity, path } = promiseHandler;
    const currentToken = (customCounterRef.current[formField.id] || 0) + 1;
    customCounterRef.current[formField.id] = currentToken;
    promise.then((result) => {
      if (currentToken !== customCounterRef.current[formField.id]) {
        return;
      }
      if (result === null) {
        setFormValidity((prev) => {
          return removeValidationProperty(
            prev,
            [...path, formField.id],
            "custom"
          );
        });
        return;
      }
      if (typeof result === "string") {
        setFormValidity((prev) => {
          const newFormValidity = setValidityAtPath(
            prev,
            {
              custom: {
                type: "invalid",
                message: result
              }
            },
            [...path, formField.id]
          );
          return newFormValidity;
        });
        return;
      }
      setFormValidity((prev) => {
        const newFormValidity = setValidityAtPath(
          prev,
          {
            custom: {
              type: "invalid",
              message: (0, import_i18n139.__)("Validation could not be processed.")
            }
          },
          [...path, formField.id]
        );
        return newFormValidity;
      });
    }).catch((error2) => {
      if (currentToken !== customCounterRef.current[formField.id]) {
        return;
      }
      let errorMessage;
      if (error2 instanceof Error) {
        errorMessage = error2.message;
      } else {
        errorMessage = String(error2) || (0, import_i18n139.__)(
          "Unknown error when running custom validation asynchronously."
        );
      }
      setFormValidity((prev) => {
        const newFormValidity = setValidityAtPath(
          prev,
          {
            custom: {
              type: "invalid",
              message: errorMessage
            }
          },
          [...path, formField.id]
        );
        return newFormValidity;
      });
    });
  }
  function isFormFieldHidden(formField, item) {
    return formField.children.length === 0 && !!formField.field?.isVisible && !formField.field.isVisible(item);
  }
  function validateFormField(item, formField, promiseHandler) {
    if (isFormFieldHidden(formField, item)) {
      const { customCounterRef, elementsCounterRef } = promiseHandler;
      if (customCounterRef.current[formField.id]) {
        customCounterRef.current[formField.id] += 1;
      }
      if (elementsCounterRef.current[formField.id]) {
        elementsCounterRef.current[formField.id] += 1;
      }
      return void 0;
    }
    if (formField.field?.isValid.required && !formField.field.isValid.required.validate(item, formField.field)) {
      return {
        required: { type: "invalid" }
      };
    }
    if (formField.field?.isValid.pattern && !formField.field.isValid.pattern.validate(item, formField.field)) {
      return {
        pattern: {
          type: "invalid",
          message: (0, import_i18n139.__)("Value does not match the required pattern.")
        }
      };
    }
    if (formField.field?.isValid.min && !formField.field.isValid.min.validate(item, formField.field)) {
      return {
        min: {
          type: "invalid",
          message: (0, import_i18n139.__)("Value is below the minimum.")
        }
      };
    }
    if (formField.field?.isValid.max && !formField.field.isValid.max.validate(item, formField.field)) {
      return {
        max: {
          type: "invalid",
          message: (0, import_i18n139.__)("Value is above the maximum.")
        }
      };
    }
    if (formField.field?.isValid.minLength && !formField.field.isValid.minLength.validate(item, formField.field)) {
      return {
        minLength: {
          type: "invalid",
          message: (0, import_i18n139.__)("Value is too short.")
        }
      };
    }
    if (formField.field?.isValid.maxLength && !formField.field.isValid.maxLength.validate(item, formField.field)) {
      return {
        maxLength: {
          type: "invalid",
          message: (0, import_i18n139.__)("Value is too long.")
        }
      };
    }
    if (formField.field?.isValid.elements && formField.field.hasElements && !formField.field.getElements && Array.isArray(formField.field.elements) && !formField.field.isValid.elements.validate(item, formField.field)) {
      return {
        elements: {
          type: "invalid",
          message: (0, import_i18n139.__)("Value must be one of the elements.")
        }
      };
    }
    let customError;
    if (!!formField.field && formField.field.isValid.custom) {
      try {
        const value = formField.field.getValue({ item });
        customError = formField.field.isValid.custom(
          (0, import_deepmerge2.default)(
            item,
            formField.field.setValue({
              item,
              value
            })
          ),
          formField.field
        );
      } catch (error2) {
        let errorMessage;
        if (error2 instanceof Error) {
          errorMessage = error2.message;
        } else {
          errorMessage = String(error2) || (0, import_i18n139.__)("Unknown error when running custom validation.");
        }
        return {
          custom: {
            type: "invalid",
            message: errorMessage
          }
        };
      }
    }
    if (typeof customError === "string") {
      return {
        custom: {
          type: "invalid",
          message: customError
        }
      };
    }
    const fieldValidity = {};
    if (!!formField.field && formField.field.isValid.elements && formField.field.hasElements && typeof formField.field.getElements === "function") {
      handleElementsValidationAsync(
        formField.field.getElements(),
        formField,
        promiseHandler
      );
      fieldValidity.elements = {
        type: "validating",
        message: (0, import_i18n139.__)("Validating\u2026")
      };
    }
    if (customError instanceof Promise) {
      handleCustomValidationAsync(customError, formField, promiseHandler);
      fieldValidity.custom = {
        type: "validating",
        message: (0, import_i18n139.__)("Validating\u2026")
      };
    }
    if (Object.keys(fieldValidity).length > 0) {
      return fieldValidity;
    }
    if (formField.children.length > 0) {
      const result = {};
      formField.children.forEach((child) => {
        result[child.id] = validateFormField(item, child, {
          ...promiseHandler,
          path: [...promiseHandler.path, formField.id, "children"]
        });
      });
      const filteredResult = {};
      Object.entries(result).forEach(([key, value]) => {
        if (value !== void 0) {
          filteredResult[key] = value;
        }
      });
      if (Object.keys(filteredResult).length === 0) {
        return void 0;
      }
      return {
        children: filteredResult
      };
    }
    return void 0;
  }
  function getFormFieldValue(formField, item) {
    const fieldValue = formField?.field?.getValue({ item });
    const isHidden2 = isFormFieldHidden(formField, item);
    if (formField.children.length === 0) {
      return { value: fieldValue, isHidden: isHidden2 };
    }
    const childrenValues = formField.children.map(
      (child) => getFormFieldValue(child, item)
    );
    return {
      value: fieldValue,
      isHidden: isHidden2,
      children: childrenValues
    };
  }
  function useFormValidity(item, fields2, form) {
    const [formValidity, setFormValidity] = (0, import_element220.useState)();
    const customCounterRef = (0, import_element220.useRef)({});
    const elementsCounterRef = (0, import_element220.useRef)({});
    const previousValuesRef = (0, import_element220.useRef)({});
    const validate = (0, import_element220.useCallback)(() => {
      const promiseHandler = {
        customCounterRef,
        elementsCounterRef,
        setFormValidity,
        path: [],
        item
      };
      const formFieldsToValidate = getFormFieldsToValidate(form, fields2);
      if (formFieldsToValidate.length === 0) {
        setFormValidity(void 0);
        return;
      }
      const newFormValidity = {};
      const untouchedFields = [];
      formFieldsToValidate.forEach((formField) => {
        const value = getFormFieldValue(formField, item);
        if (previousValuesRef.current.hasOwnProperty(formField.id) && (0, import_es63.default)(
          previousValuesRef.current[formField.id],
          value
        )) {
          untouchedFields.push(formField.id);
          return;
        }
        previousValuesRef.current[formField.id] = value;
        const fieldValidity = validateFormField(
          item,
          formField,
          promiseHandler
        );
        if (fieldValidity !== void 0) {
          newFormValidity[formField.id] = fieldValidity;
        }
      });
      setFormValidity((existingFormValidity) => {
        let validity = {
          ...existingFormValidity,
          ...newFormValidity
        };
        const fieldsToKeep = [
          ...untouchedFields,
          ...Object.keys(newFormValidity)
        ];
        Object.keys(validity).forEach((key) => {
          if (validity && !fieldsToKeep.includes(key)) {
            delete validity[key];
          }
        });
        if (Object.keys(validity).length === 0) {
          validity = void 0;
        }
        const areEqual = (0, import_es63.default)(existingFormValidity, validity);
        if (areEqual) {
          return existingFormValidity;
        }
        return validity;
      });
    }, [item, fields2, form]);
    (0, import_element220.useEffect)(() => {
      validate();
    }, [validate]);
    return {
      validity: formValidity,
      isValid: isFormValid(formValidity)
    };
  }
  var use_form_validity_default = useFormValidity;

  // packages/dataviews/build-module/hooks/use-reveal-validity.mjs
  var import_element221 = __toESM(require_element(), 1);
  function useRevealValidity(ref, shouldReveal) {
    const revealValidity = (0, import_element221.useCallback)(() => {
      const inputs = ref.current?.querySelectorAll("input, textarea, select");
      let revealedCount = 0;
      inputs?.forEach((input) => {
        if (input.willValidate && !input.validity.valid) {
          revealedCount++;
          input.dispatchEvent(
            new Event("invalid", { cancelable: true })
          );
        }
      });
      return revealedCount;
    }, [ref]);
    (0, import_element221.useEffect)(() => {
      if (shouldReveal) {
        revealValidity();
      }
    }, [shouldReveal, revealValidity]);
    return revealValidity;
  }

  // packages/dataviews/build-module/components/dataform-layouts/panel/utils/use-field-from-form-field.mjs
  var import_element222 = __toESM(require_element(), 1);

  // packages/dataviews/build-module/components/dataform-layouts/get-summary-fields.mjs
  function extractSummaryIds(summary) {
    if (Array.isArray(summary)) {
      return summary.map(
        (item) => typeof item === "string" ? item : item.id
      );
    }
    return [];
  }
  var getSummaryFields = (summaryField, fields2) => {
    if (Array.isArray(summaryField) && summaryField.length > 0) {
      const summaryIds = extractSummaryIds(summaryField);
      return summaryIds.map(
        (summaryId) => fields2.find((_field) => _field.id === summaryId)
      ).filter((_field) => _field !== void 0);
    }
    return [];
  };

  // packages/dataviews/build-module/components/dataform-layouts/panel/utils/use-field-from-form-field.mjs
  var getFieldDefinition = (field, fields2) => {
    if (!!field.children) {
      const simpleChildren = field.children.filter(
        (child) => !child.children
      );
      if (simpleChildren.length === 0) {
        return void 0;
      }
      return fields2.find(
        (_field) => _field.id === simpleChildren[0].id
      );
    }
    return fields2.find((_field) => _field.id === field.id);
  };
  function useFieldFromFormField(field) {
    const { fields: fields2 } = (0, import_element222.useContext)(dataform_context_default);
    const layout = field.layout;
    const summaryFields = getSummaryFields(layout.summary, fields2);
    const fieldDefinition = getFieldDefinition(field, fields2);
    const fieldLabel = !!field.children ? field.label : fieldDefinition?.label;
    if (summaryFields.length === 0) {
      return {
        summaryFields: fieldDefinition ? [fieldDefinition] : [],
        fieldDefinition,
        fieldLabel
      };
    }
    return {
      summaryFields,
      fieldDefinition,
      fieldLabel
    };
  }
  var use_field_from_form_field_default = useFieldFromFormField;

  // packages/dataviews/build-module/components/dataform-layouts/panel/modal.mjs
  var import_jsx_runtime366 = __toESM(require_jsx_runtime(), 1);
  function ModalContent({
    data,
    field,
    onChange,
    fieldLabel,
    onClose,
    touched
  }) {
    const { openAs } = field.layout;
    const { applyLabel, cancelLabel } = openAs;
    const { fields: fields2 } = (0, import_element223.useContext)(dataform_context_default);
    const [changes, setChanges] = (0, import_element223.useState)({});
    const modalData = (0, import_element223.useMemo)(() => {
      return (0, import_deepmerge3.default)(data, changes, {
        arrayMerge: (target, source) => source
      });
    }, [data, changes]);
    const form = (0, import_element223.useMemo)(
      () => ({
        layout: DEFAULT_LAYOUT,
        fields: !!field.children ? field.children : (
          // If not explicit children return the field id itself.
          [{ id: field.id, layout: DEFAULT_LAYOUT }]
        )
      }),
      [field]
    );
    const fieldsAsFieldType = fields2.map((f2) => ({
      ...f2,
      Edit: f2.Edit === null ? void 0 : f2.Edit,
      isValid: {
        required: f2.isValid.required?.constraint,
        elements: f2.isValid.elements?.constraint,
        min: f2.isValid.min?.constraint,
        max: f2.isValid.max?.constraint,
        pattern: f2.isValid.pattern?.constraint,
        minLength: f2.isValid.minLength?.constraint,
        maxLength: f2.isValid.maxLength?.constraint
      }
    }));
    const { validity } = use_form_validity_default(modalData, fieldsAsFieldType, form);
    const onApply = () => {
      onChange(changes);
      onClose();
    };
    const handleOnChange = (newValue) => {
      setChanges(
        (prev) => (0, import_deepmerge3.default)(prev, newValue, {
          arrayMerge: (target, source) => source
        })
      );
    };
    const focusOnMountRef = (0, import_compose34.useFocusOnMount)("firstInputElement");
    const contentRef = (0, import_element223.useRef)(null);
    const mergedRef = (0, import_compose34.useMergeRefs)([focusOnMountRef, contentRef]);
    useRevealValidity(contentRef, touched);
    return /* @__PURE__ */ (0, import_jsx_runtime366.jsxs)(
      import_components76.Modal,
      {
        className: "dataforms-layouts-panel__modal",
        onRequestClose: onClose,
        isFullScreen: false,
        title: fieldLabel,
        size: "medium",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime366.jsx)("div", { ref: mergedRef, children: /* @__PURE__ */ (0, import_jsx_runtime366.jsx)(
            DataFormLayout,
            {
              data: modalData,
              form,
              onChange: handleOnChange,
              validity,
              children: (FieldLayout, childField, childFieldValidity, markWhenOptional) => /* @__PURE__ */ (0, import_jsx_runtime366.jsx)(
                FieldLayout,
                {
                  data: modalData,
                  field: childField,
                  onChange: handleOnChange,
                  hideLabelFromVision: form.fields.length < 2,
                  markWhenOptional,
                  validity: childFieldValidity
                },
                childField.id
              )
            }
          ) }),
          /* @__PURE__ */ (0, import_jsx_runtime366.jsxs)(
            Stack,
            {
              direction: "row",
              className: "dataforms-layouts-panel__modal-footer",
              gap: "md",
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime366.jsx)(import_components76.__experimentalSpacer, { style: { flex: 1 } }),
                /* @__PURE__ */ (0, import_jsx_runtime366.jsx)(
                  import_components76.Button,
                  {
                    variant: "tertiary",
                    onClick: onClose,
                    __next40pxDefaultSize: true,
                    children: cancelLabel
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime366.jsx)(
                  import_components76.Button,
                  {
                    variant: "primary",
                    onClick: onApply,
                    __next40pxDefaultSize: true,
                    children: applyLabel
                  }
                )
              ]
            }
          )
        ]
      }
    );
  }
  function PanelModal({
    data,
    field,
    onChange,
    validity
  }) {
    const [touched, setTouched] = (0, import_element223.useState)(false);
    const [isOpen2, setIsOpen] = (0, import_element223.useState)(false);
    const { fieldDefinition, fieldLabel, summaryFields } = use_field_from_form_field_default(field);
    if (!fieldDefinition) {
      return null;
    }
    const isDisabled = fieldDefinition.readOnly === true || fieldDefinition.isDisabled({ item: data, field: fieldDefinition });
    const handleClose = () => {
      setIsOpen(false);
      setTouched(true);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime366.jsxs)(import_jsx_runtime366.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime366.jsx)(
        SummaryButton,
        {
          data,
          field,
          fieldLabel,
          summaryFields,
          validity,
          touched,
          disabled: isDisabled,
          onClick: () => setIsOpen(true),
          isOpen: isOpen2
        }
      ),
      isOpen2 && /* @__PURE__ */ (0, import_jsx_runtime366.jsx)(
        ModalContent,
        {
          data,
          field,
          onChange,
          fieldLabel: fieldLabel ?? "",
          onClose: handleClose,
          touched
        }
      )
    ] });
  }
  var modal_default = PanelModal;

  // packages/dataviews/build-module/components/dataform-layouts/panel/dropdown.mjs
  var import_components77 = __toESM(require_components(), 1);
  var import_i18n140 = __toESM(require_i18n(), 1);
  var import_element224 = __toESM(require_element(), 1);
  var import_compose35 = __toESM(require_compose(), 1);
  var import_jsx_runtime367 = __toESM(require_jsx_runtime(), 1);
  function DropdownHeader({
    title,
    onClose
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime367.jsx)(
      Stack,
      {
        direction: "column",
        className: "dataforms-layouts-panel__dropdown-header",
        gap: "lg",
        children: /* @__PURE__ */ (0, import_jsx_runtime367.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", children: [
          title && /* @__PURE__ */ (0, import_jsx_runtime367.jsx)(import_components77.__experimentalHeading, { level: 2, size: 13, children: title }),
          /* @__PURE__ */ (0, import_jsx_runtime367.jsx)(import_components77.__experimentalSpacer, { style: { flex: 1 } }),
          onClose && /* @__PURE__ */ (0, import_jsx_runtime367.jsx)(
            import_components77.Button,
            {
              label: (0, import_i18n140.__)("Close"),
              icon: close_small_default,
              onClick: onClose,
              size: "small"
            }
          )
        ] })
      }
    );
  }
  function DropdownContentWithValidation({
    touched,
    children
  }) {
    const ref = (0, import_element224.useRef)(null);
    useRevealValidity(ref, touched);
    return /* @__PURE__ */ (0, import_jsx_runtime367.jsx)("div", { ref, children });
  }
  function PanelDropdown({
    data,
    field,
    onChange,
    validity
  }) {
    const [touched, setTouched] = (0, import_element224.useState)(false);
    const [popoverAnchor, setPopoverAnchor] = (0, import_element224.useState)(
      null
    );
    const popoverProps = (0, import_element224.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor]
    );
    const [dialogRef, dialogProps] = (0, import_compose35.__experimentalUseDialog)({
      focusOnMount: "firstInputElement"
    });
    const form = (0, import_element224.useMemo)(
      () => ({
        layout: DEFAULT_LAYOUT,
        fields: !!field.children ? field.children : (
          // If not explicit children return the field id itself.
          [{ id: field.id, layout: DEFAULT_LAYOUT }]
        )
      }),
      [field]
    );
    const formValidity = (0, import_element224.useMemo)(() => {
      if (validity === void 0) {
        return void 0;
      }
      if (!!field.children) {
        return validity?.children;
      }
      return { [field.id]: validity };
    }, [validity, field]);
    const { fieldDefinition, fieldLabel, summaryFields } = use_field_from_form_field_default(field);
    if (!fieldDefinition) {
      return null;
    }
    const isDisabled = fieldDefinition.readOnly === true || fieldDefinition.isDisabled({ item: data, field: fieldDefinition });
    return /* @__PURE__ */ (0, import_jsx_runtime367.jsx)(
      "div",
      {
        ref: setPopoverAnchor,
        className: "dataforms-layouts-panel__field-dropdown-anchor",
        children: /* @__PURE__ */ (0, import_jsx_runtime367.jsx)(
          import_components77.Dropdown,
          {
            contentClassName: "dataforms-layouts-panel__field-dropdown",
            popoverProps,
            focusOnMount: false,
            onToggle: (willOpen) => {
              if (!willOpen) {
                setTouched(true);
              }
            },
            renderToggle: ({ isOpen: isOpen2, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime367.jsx)(
              SummaryButton,
              {
                data,
                field,
                fieldLabel,
                summaryFields,
                validity,
                touched,
                disabled: isDisabled,
                isOpen: isOpen2,
                onClick: onToggle
              }
            ),
            renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime367.jsx)(DropdownContentWithValidation, { touched, children: /* @__PURE__ */ (0, import_jsx_runtime367.jsxs)("div", { ref: dialogRef, ...dialogProps, children: [
              /* @__PURE__ */ (0, import_jsx_runtime367.jsx)(
                DropdownHeader,
                {
                  title: fieldLabel,
                  onClose
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime367.jsx)(
                DataFormLayout,
                {
                  data,
                  form,
                  onChange,
                  validity: formValidity,
                  children: (FieldLayout, childField, childFieldValidity, markWhenOptional) => /* @__PURE__ */ (0, import_jsx_runtime367.jsx)(
                    FieldLayout,
                    {
                      data,
                      field: childField,
                      onChange,
                      hideLabelFromVision: (form?.fields ?? []).length < 2,
                      markWhenOptional,
                      validity: childFieldValidity
                    },
                    childField.id
                  )
                }
              )
            ] }) })
          }
        )
      }
    );
  }
  var dropdown_default = PanelDropdown;

  // packages/dataviews/build-module/components/dataform-layouts/panel/index.mjs
  var import_jsx_runtime368 = __toESM(require_jsx_runtime(), 1);
  function FormPanelField({
    data,
    field,
    onChange,
    validity
  }) {
    const layout = field.layout;
    if (layout.openAs.type === "modal") {
      return /* @__PURE__ */ (0, import_jsx_runtime368.jsx)(
        modal_default,
        {
          data,
          field,
          onChange,
          validity
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime368.jsx)(
      dropdown_default,
      {
        data,
        field,
        onChange,
        validity
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-layouts/card/index.mjs
  var import_element225 = __toESM(require_element(), 1);
  var import_a11y6 = __toESM(require_a11y(), 1);
  var import_compose36 = __toESM(require_compose(), 1);

  // packages/dataviews/build-module/components/dataform-layouts/get-validation-message.mjs
  var import_i18n141 = __toESM(require_i18n(), 1);
  function countInvalidFields(validity) {
    if (!validity) {
      return 0;
    }
    let count = 0;
    const validityRules = Object.keys(validity).filter(
      (key) => key !== "children"
    );
    for (const key of validityRules) {
      const rule = validity[key];
      if (rule?.type === "invalid") {
        count++;
      }
    }
    if (validity.children) {
      for (const childValidity of Object.values(validity.children)) {
        count += countInvalidFields(childValidity);
      }
    }
    return count;
  }
  function getValidationMessage(validity) {
    const invalidCount = countInvalidFields(validity);
    if (invalidCount === 0) {
      return void 0;
    }
    return (0, import_i18n141.sprintf)(
      /* translators: %d: Number of fields that need attention */
      (0, import_i18n141._n)(
        "%d field needs attention",
        "%d fields need attention",
        invalidCount
      ),
      invalidCount
    );
  }

  // packages/dataviews/build-module/components/dataform-layouts/validation-badge.mjs
  var import_jsx_runtime369 = __toESM(require_jsx_runtime(), 1);
  function ValidationBadge({
    validity
  }) {
    const message2 = getValidationMessage(validity);
    if (!message2) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime369.jsx)(Badge, { intent: "high", children: message2 });
  }

  // packages/dataviews/build-module/components/dataform-layouts/card/index.mjs
  var import_jsx_runtime370 = __toESM(require_jsx_runtime(), 1);
  function isSummaryFieldVisible(summaryField, summaryConfig, isOpen2) {
    if (!summaryConfig || Array.isArray(summaryConfig) && summaryConfig.length === 0) {
      return false;
    }
    const summaryConfigArray = Array.isArray(summaryConfig) ? summaryConfig : [summaryConfig];
    const fieldConfig = summaryConfigArray.find((config2) => {
      if (typeof config2 === "string") {
        return config2 === summaryField.id;
      }
      if (typeof config2 === "object" && "id" in config2) {
        return config2.id === summaryField.id;
      }
      return false;
    });
    if (!fieldConfig) {
      return false;
    }
    if (typeof fieldConfig === "string") {
      return true;
    }
    if (typeof fieldConfig === "object" && "visibility" in fieldConfig) {
      return fieldConfig.visibility === "always" || fieldConfig.visibility === "when-collapsed" && !isOpen2;
    }
    return true;
  }
  function HeaderContent({
    data,
    fields: fields2,
    label,
    layout,
    isOpen: isOpen2,
    touched,
    validity
  }) {
    const summaryFields = getSummaryFields(layout.summary, fields2);
    const visibleSummaryFields = summaryFields.filter(
      (summaryField) => isSummaryFieldVisible(summaryField, layout.summary, isOpen2)
    );
    const hasBadge = touched && layout.isCollapsible;
    const hasSummary = visibleSummaryFields.length > 0 && layout.withHeader;
    return /* @__PURE__ */ (0, import_jsx_runtime370.jsxs)(
      Stack,
      {
        align: "center",
        justify: "space-between",
        className: "dataforms-layouts-card__field-header-content",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime370.jsx)(card_exports.Title, { children: label }),
          (hasBadge || hasSummary) && /* @__PURE__ */ (0, import_jsx_runtime370.jsxs)(collapsible_card_exports.HeaderDescription, { className: "dataforms-layouts-card__field-header-content-description", children: [
            hasBadge && /* @__PURE__ */ (0, import_jsx_runtime370.jsx)(ValidationBadge, { validity }),
            hasSummary && /* @__PURE__ */ (0, import_jsx_runtime370.jsx)("div", { className: "dataforms-layouts-card__field-summary", children: visibleSummaryFields.map((summaryField) => /* @__PURE__ */ (0, import_jsx_runtime370.jsx)(
              summaryField.render,
              {
                item: data,
                field: summaryField
              },
              summaryField.id
            )) })
          ] })
        ]
      }
    );
  }
  function BodyContent({
    data,
    field,
    form,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity,
    withHeader
  }) {
    if (field.children) {
      return /* @__PURE__ */ (0, import_jsx_runtime370.jsxs)(import_jsx_runtime370.Fragment, { children: [
        field.description && /* @__PURE__ */ (0, import_jsx_runtime370.jsx)("div", { className: "dataforms-layouts-card__field-description", children: field.description }),
        /* @__PURE__ */ (0, import_jsx_runtime370.jsx)(
          DataFormLayout,
          {
            data,
            form,
            onChange,
            validity: validity?.children
          }
        )
      ] });
    }
    const SingleFieldLayout = getFormFieldLayout("regular")?.component;
    if (!SingleFieldLayout) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime370.jsx)(
      SingleFieldLayout,
      {
        data,
        field,
        onChange,
        hideLabelFromVision: hideLabelFromVision || withHeader,
        markWhenOptional,
        validity
      }
    );
  }
  function FormCardField({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    const { fields: fields2 } = (0, import_element225.useContext)(dataform_context_default);
    const layout = field.layout;
    const contentRef = (0, import_element225.useRef)(null);
    const hasFocusedContentRef = (0, import_element225.useRef)(false);
    const form = (0, import_element225.useMemo)(
      () => ({
        layout: DEFAULT_LAYOUT,
        fields: field.children ?? []
      }),
      [field]
    );
    const { isOpened, isCollapsible } = layout;
    const [isOpen2, setIsOpen] = (0, import_element225.useState)(isOpened);
    const [touched, setTouched] = (0, import_element225.useState)(false);
    (0, import_element225.useEffect)(() => {
      setIsOpen(isOpened);
    }, [isOpened]);
    const handleOpenChange = (0, import_element225.useCallback)((open3) => {
      if (!open3) {
        setTouched(true);
      }
      setIsOpen(open3);
    }, []);
    const revealValidity = useRevealValidity(
      contentRef,
      (isCollapsible ? isOpen2 : true) && touched
    );
    const handleContentFocus = (0, import_element225.useCallback)(() => {
      hasFocusedContentRef.current = true;
    }, []);
    const handleFocusOutside = (0, import_element225.useCallback)(() => {
      if (!hasFocusedContentRef.current) {
        return;
      }
      setTouched(true);
      if (isCollapsible && !isOpen2) {
        return;
      }
      const revealedCount = revealValidity();
      const message2 = getValidationMessage(validity);
      if (revealedCount > 0 && message2) {
        (0, import_a11y6.speak)(message2, "polite");
      }
    }, [isCollapsible, isOpen2, revealValidity, validity]);
    const focusOutsideProps = (0, import_compose36.__experimentalUseFocusOutside)(handleFocusOutside);
    let label = field.label;
    let withHeader;
    if (field.children) {
      withHeader = !!label && layout.withHeader;
    } else {
      const fieldDefinition = fields2.find(
        (fieldDef) => fieldDef.id === field.id
      );
      if (!canRenderField(fieldDefinition)) {
        return null;
      }
      label = fieldDefinition.label;
      withHeader = !!label && layout.withHeader;
    }
    const bodyContent = /* @__PURE__ */ (0, import_jsx_runtime370.jsx)(
      BodyContent,
      {
        data,
        field,
        form,
        onChange,
        hideLabelFromVision,
        markWhenOptional,
        validity,
        withHeader
      }
    );
    const headerContent = /* @__PURE__ */ (0, import_jsx_runtime370.jsx)(
      HeaderContent,
      {
        data,
        fields: fields2,
        label,
        layout,
        isOpen: isCollapsible ? !!isOpen2 : true,
        touched,
        validity
      }
    );
    if (withHeader && isCollapsible) {
      return /* @__PURE__ */ (0, import_jsx_runtime370.jsxs)(
        collapsible_card_exports.Root,
        {
          className: "dataforms-layouts-card__field",
          open: isOpen2,
          onOpenChange: handleOpenChange,
          ...focusOutsideProps,
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime370.jsx)(collapsible_card_exports.Header, { children: headerContent }),
            /* @__PURE__ */ (0, import_jsx_runtime370.jsx)(
              collapsible_card_exports.Content,
              {
                ref: contentRef,
                onFocus: handleContentFocus,
                children: bodyContent
              }
            )
          ]
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime370.jsxs)(
      card_exports.Root,
      {
        className: "dataforms-layouts-card__field",
        ...focusOutsideProps,
        children: [
          withHeader && /* @__PURE__ */ (0, import_jsx_runtime370.jsx)(card_exports.Header, { children: headerContent }),
          /* @__PURE__ */ (0, import_jsx_runtime370.jsx)(card_exports.Content, { ref: contentRef, onFocus: handleContentFocus, children: bodyContent })
        ]
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-layouts/row/index.mjs
  var import_components78 = __toESM(require_components(), 1);
  var import_jsx_runtime371 = __toESM(require_jsx_runtime(), 1);
  function Header4({ title }) {
    return /* @__PURE__ */ (0, import_jsx_runtime371.jsx)(
      Stack,
      {
        direction: "column",
        className: "dataforms-layouts-row__header",
        gap: "lg",
        children: /* @__PURE__ */ (0, import_jsx_runtime371.jsx)(Stack, { direction: "row", align: "center", children: /* @__PURE__ */ (0, import_jsx_runtime371.jsx)(import_components78.__experimentalHeading, { level: 2, size: 13, children: title }) })
      }
    );
  }
  var EMPTY_WRAPPER = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime371.jsx)(import_jsx_runtime371.Fragment, { children });
  function FormRowField({
    data,
    field,
    onChange,
    hideLabelFromVision,
    markWhenOptional,
    validity
  }) {
    const layout = field.layout;
    if (!!field.children) {
      const form = {
        layout: DEFAULT_LAYOUT,
        fields: field.children
      };
      return /* @__PURE__ */ (0, import_jsx_runtime371.jsxs)("div", { className: "dataforms-layouts-row__field", children: [
        !hideLabelFromVision && field.label && /* @__PURE__ */ (0, import_jsx_runtime371.jsx)(Header4, { title: field.label }),
        /* @__PURE__ */ (0, import_jsx_runtime371.jsx)(Stack, { direction: "row", align: layout.alignment, gap: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime371.jsx)(
          DataFormLayout,
          {
            data,
            form,
            onChange,
            validity: validity?.children,
            as: EMPTY_WRAPPER,
            children: (FieldLayout, childField, childFieldValidity) => /* @__PURE__ */ (0, import_jsx_runtime371.jsx)(
              "div",
              {
                className: "dataforms-layouts-row__field-control",
                style: layout.styles[childField.id],
                children: /* @__PURE__ */ (0, import_jsx_runtime371.jsx)(
                  FieldLayout,
                  {
                    data,
                    field: childField,
                    onChange,
                    hideLabelFromVision,
                    markWhenOptional,
                    validity: childFieldValidity
                  }
                )
              },
              childField.id
            )
          }
        ) })
      ] });
    }
    const RegularLayout = getFormFieldLayout("regular")?.component;
    if (!RegularLayout) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime371.jsx)(import_jsx_runtime371.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime371.jsx)("div", { className: "dataforms-layouts-row__field-control", children: /* @__PURE__ */ (0, import_jsx_runtime371.jsx)(
      RegularLayout,
      {
        data,
        field,
        onChange,
        markWhenOptional,
        validity
      }
    ) }) });
  }

  // packages/dataviews/build-module/components/dataform-layouts/details/index.mjs
  var import_element226 = __toESM(require_element(), 1);
  var import_i18n142 = __toESM(require_i18n(), 1);
  var import_a11y7 = __toESM(require_a11y(), 1);
  var import_compose37 = __toESM(require_compose(), 1);
  var import_jsx_runtime372 = __toESM(require_jsx_runtime(), 1);
  function FormDetailsField({
    data,
    field,
    onChange,
    validity
  }) {
    const { fields: fields2 } = (0, import_element226.useContext)(dataform_context_default);
    const detailsRef = (0, import_element226.useRef)(null);
    const contentRef = (0, import_element226.useRef)(null);
    const hasFocusedContentRef = (0, import_element226.useRef)(false);
    const [touched, setTouched] = (0, import_element226.useState)(false);
    const [isOpen2, setIsOpen] = (0, import_element226.useState)(false);
    const form = (0, import_element226.useMemo)(
      () => ({
        layout: DEFAULT_LAYOUT,
        fields: field.children ?? []
      }),
      [field]
    );
    (0, import_element226.useEffect)(() => {
      const details = detailsRef.current;
      if (!details) {
        return;
      }
      const handleToggle = () => {
        const nowOpen = details.open;
        if (!nowOpen) {
          setTouched(true);
        }
        setIsOpen(nowOpen);
      };
      details.addEventListener("toggle", handleToggle);
      return () => {
        details.removeEventListener("toggle", handleToggle);
      };
    }, []);
    const revealValidity = useRevealValidity(contentRef, isOpen2 && touched);
    const handleContentFocus = (0, import_element226.useCallback)(() => {
      hasFocusedContentRef.current = true;
    }, []);
    const handleFocusOutside = (0, import_element226.useCallback)(() => {
      if (!hasFocusedContentRef.current) {
        return;
      }
      setTouched(true);
      if (!detailsRef.current?.open) {
        return;
      }
      const revealedCount = revealValidity();
      const message2 = getValidationMessage(validity);
      if (revealedCount > 0 && message2) {
        (0, import_a11y7.speak)(message2, "polite");
      }
    }, [revealValidity, validity]);
    const focusOutsideProps = (0, import_compose37.__experimentalUseFocusOutside)(handleFocusOutside);
    if (!field.children) {
      return null;
    }
    const summaryFieldId = field.layout.summary ?? "";
    const summaryField = summaryFieldId ? fields2.find((fieldDef) => fieldDef.id === summaryFieldId) : void 0;
    let summaryContent;
    if (summaryField && summaryField.render) {
      summaryContent = /* @__PURE__ */ (0, import_jsx_runtime372.jsx)(summaryField.render, { item: data, field: summaryField });
    } else {
      summaryContent = field.label || (0, import_i18n142.__)("More details");
    }
    return /* @__PURE__ */ (0, import_jsx_runtime372.jsxs)(
      "details",
      {
        ref: detailsRef,
        className: "dataforms-layouts-details__details",
        ...focusOutsideProps,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime372.jsx)("summary", { className: "dataforms-layouts-details__summary", children: /* @__PURE__ */ (0, import_jsx_runtime372.jsxs)(
            Stack,
            {
              direction: "row",
              align: "center",
              gap: "md",
              className: "dataforms-layouts-details__summary-content",
              children: [
                summaryContent,
                touched && /* @__PURE__ */ (0, import_jsx_runtime372.jsx)(ValidationBadge, { validity })
              ]
            }
          ) }),
          /* @__PURE__ */ (0, import_jsx_runtime372.jsx)(
            "div",
            {
              ref: contentRef,
              className: "dataforms-layouts-details__content",
              onFocus: handleContentFocus,
              children: /* @__PURE__ */ (0, import_jsx_runtime372.jsx)(
                DataFormLayout,
                {
                  data,
                  form,
                  onChange,
                  validity: validity?.children
                }
              )
            }
          )
        ]
      }
    );
  }

  // packages/dataviews/build-module/components/dataform-layouts/index.mjs
  var import_jsx_runtime373 = __toESM(require_jsx_runtime(), 1);
  var FORM_FIELD_LAYOUTS = [
    {
      type: "regular",
      component: FormRegularField,
      wrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime373.jsx)(
        Stack,
        {
          direction: "column",
          className: "dataforms-layouts__wrapper",
          gap: "lg",
          children
        }
      )
    },
    {
      type: "panel",
      component: FormPanelField,
      wrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime373.jsx)(
        Stack,
        {
          direction: "column",
          className: "dataforms-layouts__wrapper",
          gap: "md",
          children
        }
      )
    },
    {
      type: "card",
      component: FormCardField,
      wrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime373.jsx)(
        Stack,
        {
          direction: "column",
          className: "dataforms-layouts__wrapper",
          gap: "xl",
          children
        }
      )
    },
    {
      type: "row",
      component: FormRowField,
      wrapper: ({
        children,
        layout
      }) => /* @__PURE__ */ (0, import_jsx_runtime373.jsx)(
        Stack,
        {
          direction: "column",
          className: "dataforms-layouts__wrapper",
          gap: "lg",
          children: /* @__PURE__ */ (0, import_jsx_runtime373.jsx)("div", { className: "dataforms-layouts-row__field", children: /* @__PURE__ */ (0, import_jsx_runtime373.jsx)(
            Stack,
            {
              direction: "row",
              gap: "lg",
              align: layout.alignment,
              children
            }
          ) })
        }
      )
    },
    {
      type: "details",
      component: FormDetailsField
    }
  ];
  function getFormFieldLayout(type) {
    return FORM_FIELD_LAYOUTS.find((layout) => layout.type === type);
  }

  // packages/dataviews/build-module/components/dataform-layouts/data-form-layout.mjs
  var import_jsx_runtime374 = __toESM(require_jsx_runtime(), 1);
  var DEFAULT_WRAPPER = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime374.jsx)(Stack, { direction: "column", className: "dataforms-layouts__wrapper", gap: "lg", children });
  function DataFormLayout({
    data,
    form,
    onChange,
    validity,
    children,
    as
  }) {
    const { fields: fieldDefinitions } = (0, import_element227.useContext)(dataform_context_default);
    const markWhenOptional = (0, import_element227.useMemo)(() => {
      const requiredCount = fieldDefinitions.filter(
        (f2) => !!f2.isValid?.required
      ).length;
      const optionalCount = fieldDefinitions.length - requiredCount;
      return requiredCount > optionalCount;
    }, [fieldDefinitions]);
    function getFieldDefinition2(field) {
      return fieldDefinitions.find(
        (fieldDefinition) => fieldDefinition.id === field.id
      );
    }
    const Wrapper = as ?? getFormFieldLayout(form.layout.type)?.wrapper ?? DEFAULT_WRAPPER;
    return /* @__PURE__ */ (0, import_jsx_runtime374.jsx)(Wrapper, { layout: form.layout, children: form.fields.map((formField) => {
      const FieldLayout = getFormFieldLayout(
        formField.layout.type
      )?.component;
      if (!FieldLayout) {
        return null;
      }
      const fieldDefinition = !formField.children ? getFieldDefinition2(formField) : void 0;
      if (fieldDefinition && fieldDefinition.isVisible && !fieldDefinition.isVisible(data)) {
        return null;
      }
      if (children) {
        return children(
          FieldLayout,
          formField,
          validity?.[formField.id],
          markWhenOptional
        );
      }
      return /* @__PURE__ */ (0, import_jsx_runtime374.jsx)(
        FieldLayout,
        {
          data,
          field: formField,
          onChange,
          markWhenOptional,
          validity: validity?.[formField.id]
        },
        formField.id
      );
    }) });
  }

  // packages/dataviews/build-module/dataform/index.mjs
  var import_jsx_runtime375 = __toESM(require_jsx_runtime(), 1);
  function DataForm({
    data,
    form,
    fields: fields2,
    onChange,
    validity
  }) {
    const normalizedForm = (0, import_element228.useMemo)(() => normalize_form_default(form), [form]);
    const normalizedFields = (0, import_element228.useMemo)(
      () => normalizeFields(fields2),
      [fields2]
    );
    if (!form.fields) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime375.jsx)(DataFormProvider, { fields: normalizedFields, children: /* @__PURE__ */ (0, import_jsx_runtime375.jsx)(
      DataFormLayout,
      {
        data,
        form: normalizedForm,
        onChange,
        validity
      }
    ) });
  }

  // packages/dataviews/build-module/utils/filter-sort-and-paginate.mjs
  var import_remove_accents4 = __toESM(require_remove_accents(), 1);
  var import_deprecated2 = __toESM(require_deprecated(), 1);
  function normalizeSearchInput2(input = "") {
    return (0, import_remove_accents4.default)(input.trim().toLowerCase());
  }
  var EMPTY_ARRAY10 = [];
  function filterSortAndPaginate(data, view, fields2) {
    if (!data) {
      return {
        data: EMPTY_ARRAY10,
        paginationInfo: { totalItems: 0, totalPages: 0 }
      };
    }
    const _fields = normalizeFields(fields2);
    let filteredData = [...data];
    if (view.search) {
      const normalizedSearch = normalizeSearchInput2(view.search);
      filteredData = filteredData.filter((item) => {
        return _fields.filter((field) => field.enableGlobalSearch).some((field) => {
          const fieldValue = field.getValue({ item });
          const values = Array.isArray(fieldValue) ? fieldValue : [fieldValue];
          return values.some(
            (value) => normalizeSearchInput2(String(value)).includes(
              normalizedSearch
            )
          );
        });
      });
    }
    if (view.filters && view.filters?.length > 0) {
      view.filters.forEach((filter) => {
        const field = _fields.find(
          (_field) => _field.id === filter.field
        );
        if (field) {
          if (filter.operator === OPERATOR_IS_NOT_ALL) {
            (0, import_deprecated2.default)("The 'isNotAll' filter operator", {
              since: "7.0",
              alternative: "'isNone'"
            });
          }
          const handler = field.filter[filter.operator];
          if (handler) {
            filteredData = filteredData.filter(
              (item) => handler(item, field, filter.value)
            );
          }
        }
      });
    }
    const sortByField = view.sort?.field ? _fields.find((field) => {
      return field.enableSorting !== false && field.id === view.sort?.field;
    }) : null;
    const groupByField = view.groupBy?.field ? _fields.find((field) => {
      return field.enableSorting !== false && field.id === view.groupBy?.field;
    }) : null;
    if (sortByField || groupByField) {
      filteredData.sort((a2, b2) => {
        if (groupByField) {
          const groupCompare = groupByField.sort(
            a2,
            b2,
            view.groupBy?.direction ?? "asc"
          );
          if (groupCompare !== 0) {
            return groupCompare;
          }
        }
        if (sortByField) {
          return sortByField.sort(a2, b2, view.sort?.direction ?? "desc");
        }
        return 0;
      });
    }
    let totalItems = filteredData.length;
    let totalPages = 1;
    if (view.infiniteScrollEnabled && view.startPosition !== void 0 && view.perPage !== void 0) {
      const start2 = view.startPosition - 1;
      const end = Math.min(start2 + view.perPage, totalItems);
      filteredData = filteredData?.slice(start2, end);
    } else if (view.page !== void 0 && view.perPage !== void 0) {
      const start2 = (view.page - 1) * view.perPage;
      totalItems = filteredData?.length || 0;
      totalPages = Math.ceil(totalItems / view.perPage);
      filteredData = filteredData?.slice(start2, start2 + view.perPage);
    }
    return {
      data: filteredData,
      paginationInfo: {
        totalItems,
        totalPages
      }
    };
  }

  // packages/media-editor/build-module/components/media-form/index.mjs
  var import_components79 = __toESM(require_components(), 1);
  var import_i18n143 = __toESM(require_i18n(), 1);
  var import_jsx_runtime376 = __toESM(require_jsx_runtime(), 1);
  function MediaForm({
    form: formOverrides,
    header
  }) {
    const { media, fields: fields2, onChange } = useMediaEditorContext();
    if (!media || !onChange) {
      return /* @__PURE__ */ (0, import_jsx_runtime376.jsx)("div", { className: "media-editor-form media-editor-form--loading", children: /* @__PURE__ */ (0, import_jsx_runtime376.jsx)(import_components79.Spinner, {}) });
    }
    const regularFieldIds = ["title", "alt_text", "caption", "description"];
    const sortedFields = [
      ...fields2.filter(
        (field) => regularFieldIds.includes(field.id)
      ),
      ...fields2.filter(
        (field) => !regularFieldIds.includes(field.id)
      )
    ];
    const defaultForm = {
      layout: {
        type: "panel"
      },
      fields: sortedFields.map((field) => {
        if (regularFieldIds.includes(field.id)) {
          return {
            id: field.id,
            layout: {
              type: "regular",
              labelPosition: "top"
            }
          };
        }
        return field.id;
      })
    };
    const form = formOverrides || defaultForm;
    return /* @__PURE__ */ (0, import_jsx_runtime376.jsx)("div", { className: "media-editor-form", children: /* @__PURE__ */ (0, import_jsx_runtime376.jsxs)(import_components79.__experimentalVStack, { spacing: 4, children: [
      /* @__PURE__ */ (0, import_jsx_runtime376.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime376.jsx)("h2", {}), children: (0, import_i18n143.__)("Media details") }),
      header,
      /* @__PURE__ */ (0, import_jsx_runtime376.jsx)(
        DataForm,
        {
          data: media,
          fields: fields2,
          form,
          onChange
        }
      )
    ] }) });
  }

  // packages/media-editor/build-module/lock-unlock.mjs
  var import_private_apis6 = __toESM(require_private_apis(), 1);
  var { lock: lock5, unlock: unlock5 } = (0, import_private_apis6.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
    "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
    "@wordpress/media-editor"
  );

  // packages/media-editor/build-module/store/index.mjs
  var import_data40 = __toESM(require_data(), 1);

  // packages/media-editor/build-module/store/reducer.mjs
  var DEFAULT_STATE = {
    isOpen: false,
    id: null,
    onUpdate: null,
    onClose: null
  };
  function reducer(state2 = DEFAULT_STATE, action) {
    switch (action.type) {
      case "OPEN_MEDIA_EDITOR_MODAL": {
        const { id, onUpdate, onClose } = action;
        return {
          isOpen: true,
          id,
          onUpdate,
          onClose
        };
      }
      case "CLOSE_MEDIA_EDITOR_MODAL":
        return DEFAULT_STATE;
    }
    return state2;
  }

  // packages/media-editor/build-module/store/actions.mjs
  var actions_exports = {};
  __export(actions_exports, {
    closeMediaEditorModal: () => closeMediaEditorModal,
    openMediaEditorModal: () => openMediaEditorModal
  });
  function openMediaEditorModal({
    id,
    onUpdate,
    onClose
  }) {
    return {
      type: "OPEN_MEDIA_EDITOR_MODAL",
      id,
      onUpdate: onUpdate ?? null,
      onClose: onClose ?? null
    };
  }
  function closeMediaEditorModal() {
    return { type: "CLOSE_MEDIA_EDITOR_MODAL" };
  }

  // packages/media-editor/build-module/store/selectors.mjs
  var selectors_exports2 = {};
  __export(selectors_exports2, {
    getId: () => getId,
    getOnClose: () => getOnClose,
    getOnUpdate: () => getOnUpdate,
    isOpen: () => isOpen
  });
  function isOpen(state2) {
    return state2.isOpen;
  }
  function getId(state2) {
    return state2.id;
  }
  function getOnUpdate(state2) {
    return state2.onUpdate;
  }
  function getOnClose(state2) {
    return state2.onClose;
  }

  // packages/media-editor/build-module/store/constants.mjs
  var STORE_NAME2 = "core/media-editor";

  // packages/media-editor/build-module/store/index.mjs
  var store2 = (0, import_data40.createReduxStore)(STORE_NAME2, {
    reducer,
    actions: actions_exports,
    selectors: selectors_exports2
  });
  (0, import_data40.register)(store2);

  // packages/media-editor/build-module/components/media-editor-modal/index.mjs
  var import_components86 = __toESM(require_components(), 1);
  var import_data43 = __toESM(require_data(), 1);
  var import_i18n155 = __toESM(require_i18n(), 1);
  var import_keyboard_shortcuts = __toESM(require_keyboard_shortcuts(), 1);
  var import_notices16 = __toESM(require_notices(), 1);

  // packages/media-editor/build-module/components/media-editor/index.mjs
  var import_components85 = __toESM(require_components(), 1);
  var import_compose38 = __toESM(require_compose(), 1);
  var import_data42 = __toESM(require_data(), 1);
  var import_core_data33 = __toESM(require_core_data(), 1);

  // packages/admin-ui/build-module/navigable-region/index.mjs
  var import_element229 = __toESM(require_element(), 1);
  var import_jsx_runtime377 = __toESM(require_jsx_runtime(), 1);
  var NavigableRegion = (0, import_element229.forwardRef)(
    ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => {
      return /* @__PURE__ */ (0, import_jsx_runtime377.jsx)(
        Tag,
        {
          ref,
          className: clsx_default("admin-ui-navigable-region", className),
          "aria-label": ariaLabel,
          role: "region",
          tabIndex: "-1",
          ...props,
          children
        }
      );
    }
  );
  NavigableRegion.displayName = "NavigableRegion";
  var navigable_region_default = NavigableRegion;

  // packages/media-editor/build-module/components/media-editor/index.mjs
  var import_element247 = __toESM(require_element(), 1);
  var import_i18n154 = __toESM(require_i18n(), 1);
  var import_keycodes4 = __toESM(require_keycodes(), 1);
  var import_notices15 = __toESM(require_notices(), 1);

  // packages/media-editor/build-module/components/media-editor-canvas/index.mjs
  var import_element240 = __toESM(require_element(), 1);
  var import_components81 = __toESM(require_components(), 1);
  var import_i18n148 = __toESM(require_i18n(), 1);

  // packages/media-editor/build-module/image-editor/core/constants.mjs
  var import_i18n144 = __toESM(require_i18n(), 1);
  var MIN_ZOOM = 1;
  var ABSOLUTE_MIN_ZOOM = 0.1;
  var MAX_ZOOM = 10;
  var MIN_CROP_PIXELS = 16;
  var MIN_CROP_SCREEN_PX = 44;
  var SETTLE_TARGET_CANVAS_FILL = 0.8;
  var MAX_VIEW_SCALE = 8;
  var PIXEL_SNAP_DISPLAY_SCALE = 1;
  var DEFAULT_WHEEL_ZOOM_SPEED = 25e-4;
  var DEFAULT_KEYBOARD_STEP = 0.01;
  var KEYBOARD_SHIFT_STEP_MULTIPLIER = 10;
  var MAX_ROTATION_OFFSET = 45;
  var DEFAULT_CROP_RECT = {
    x: 0,
    y: 0,
    width: 1,
    height: 1
  };
  var DEFAULT_FLIP = {
    horizontal: false,
    vertical: false
  };
  var DEFAULT_PAN = {
    x: 0,
    y: 0
  };
  var DEFAULT_STATE2 = {
    image: null,
    pan: { ...DEFAULT_PAN },
    zoom: MIN_ZOOM,
    rotation: 0,
    basePan: { ...DEFAULT_PAN },
    baseZoom: MIN_ZOOM,
    baseRotation: 0,
    flip: { ...DEFAULT_FLIP },
    cropRect: { ...DEFAULT_CROP_RECT }
  };
  var ORIGINAL_ASPECT_RATIO = -1;
  var DEFAULT_ASPECT_RATIOS = [
    { label: (0, import_i18n144.__)("Free"), value: 0 },
    { label: (0, import_i18n144.__)("Original"), value: ORIGINAL_ASPECT_RATIO },
    { label: (0, import_i18n144.__)("Square (1:1)"), value: 1 },
    { label: (0, import_i18n144.__)("Landscape (16:9)"), value: 16 / 9 },
    { label: (0, import_i18n144.__)("Portrait (9:16)"), value: 9 / 16 },
    { label: (0, import_i18n144.__)("Classic (4:3)"), value: 4 / 3 },
    { label: (0, import_i18n144.__)("Classic portrait (3:4)"), value: 3 / 4 },
    { label: (0, import_i18n144.__)("Photo (3:2)"), value: 3 / 2 },
    { label: (0, import_i18n144.__)("Photo portrait (2:3)"), value: 2 / 3 }
  ];

  // node_modules/gl-matrix/esm/common.js
  var EPSILON = 1e-6;
  var ARRAY_TYPE = typeof Float32Array !== "undefined" ? Float32Array : Array;
  var RANDOM = Math.random;
  function round2(a2) {
    if (a2 >= 0) return Math.round(a2);
    return a2 % 0.5 === 0 ? Math.floor(a2) : Math.round(a2);
  }
  var degree = Math.PI / 180;
  var radian = 180 / Math.PI;

  // node_modules/gl-matrix/esm/mat2d.js
  var mat2d_exports = {};
  __export(mat2d_exports, {
    add: () => add,
    clone: () => clone,
    copy: () => copy,
    create: () => create,
    determinant: () => determinant,
    equals: () => equals,
    exactEquals: () => exactEquals,
    frob: () => frob,
    fromRotation: () => fromRotation,
    fromScaling: () => fromScaling,
    fromTranslation: () => fromTranslation,
    fromValues: () => fromValues,
    identity: () => identity2,
    invert: () => invert,
    mul: () => mul,
    multiply: () => multiply,
    multiplyScalar: () => multiplyScalar,
    multiplyScalarAndAdd: () => multiplyScalarAndAdd,
    rotate: () => rotate,
    scale: () => scale,
    set: () => set,
    str: () => str,
    sub: () => sub,
    subtract: () => subtract,
    translate: () => translate
  });
  function create() {
    var out = new ARRAY_TYPE(6);
    if (ARRAY_TYPE != Float32Array) {
      out[1] = 0;
      out[2] = 0;
      out[4] = 0;
      out[5] = 0;
    }
    out[0] = 1;
    out[3] = 1;
    return out;
  }
  function clone(a2) {
    var out = new ARRAY_TYPE(6);
    out[0] = a2[0];
    out[1] = a2[1];
    out[2] = a2[2];
    out[3] = a2[3];
    out[4] = a2[4];
    out[5] = a2[5];
    return out;
  }
  function copy(out, a2) {
    out[0] = a2[0];
    out[1] = a2[1];
    out[2] = a2[2];
    out[3] = a2[3];
    out[4] = a2[4];
    out[5] = a2[5];
    return out;
  }
  function identity2(out) {
    out[0] = 1;
    out[1] = 0;
    out[2] = 0;
    out[3] = 1;
    out[4] = 0;
    out[5] = 0;
    return out;
  }
  function fromValues(a2, b2, c6, d2, tx, ty) {
    var out = new ARRAY_TYPE(6);
    out[0] = a2;
    out[1] = b2;
    out[2] = c6;
    out[3] = d2;
    out[4] = tx;
    out[5] = ty;
    return out;
  }
  function set(out, a2, b2, c6, d2, tx, ty) {
    out[0] = a2;
    out[1] = b2;
    out[2] = c6;
    out[3] = d2;
    out[4] = tx;
    out[5] = ty;
    return out;
  }
  function invert(out, a2) {
    var aa = a2[0], ab = a2[1], ac = a2[2], ad = a2[3];
    var atx = a2[4], aty = a2[5];
    var det = aa * ad - ab * ac;
    if (!det) {
      return null;
    }
    det = 1 / det;
    out[0] = ad * det;
    out[1] = -ab * det;
    out[2] = -ac * det;
    out[3] = aa * det;
    out[4] = (ac * aty - ad * atx) * det;
    out[5] = (ab * atx - aa * aty) * det;
    return out;
  }
  function determinant(a2) {
    return a2[0] * a2[3] - a2[1] * a2[2];
  }
  function multiply(out, a2, b2) {
    var a0 = a2[0], a1 = a2[1], a22 = a2[2], a3 = a2[3], a4 = a2[4], a5 = a2[5];
    var b0 = b2[0], b1 = b2[1], b22 = b2[2], b3 = b2[3], b4 = b2[4], b5 = b2[5];
    out[0] = a0 * b0 + a22 * b1;
    out[1] = a1 * b0 + a3 * b1;
    out[2] = a0 * b22 + a22 * b3;
    out[3] = a1 * b22 + a3 * b3;
    out[4] = a0 * b4 + a22 * b5 + a4;
    out[5] = a1 * b4 + a3 * b5 + a5;
    return out;
  }
  function rotate(out, a2, rad) {
    var a0 = a2[0], a1 = a2[1], a22 = a2[2], a3 = a2[3], a4 = a2[4], a5 = a2[5];
    var s2 = Math.sin(rad);
    var c6 = Math.cos(rad);
    out[0] = a0 * c6 + a22 * s2;
    out[1] = a1 * c6 + a3 * s2;
    out[2] = a0 * -s2 + a22 * c6;
    out[3] = a1 * -s2 + a3 * c6;
    out[4] = a4;
    out[5] = a5;
    return out;
  }
  function scale(out, a2, v3) {
    var a0 = a2[0], a1 = a2[1], a22 = a2[2], a3 = a2[3], a4 = a2[4], a5 = a2[5];
    var v0 = v3[0], v1 = v3[1];
    out[0] = a0 * v0;
    out[1] = a1 * v0;
    out[2] = a22 * v1;
    out[3] = a3 * v1;
    out[4] = a4;
    out[5] = a5;
    return out;
  }
  function translate(out, a2, v3) {
    var a0 = a2[0], a1 = a2[1], a22 = a2[2], a3 = a2[3], a4 = a2[4], a5 = a2[5];
    var v0 = v3[0], v1 = v3[1];
    out[0] = a0;
    out[1] = a1;
    out[2] = a22;
    out[3] = a3;
    out[4] = a0 * v0 + a22 * v1 + a4;
    out[5] = a1 * v0 + a3 * v1 + a5;
    return out;
  }
  function fromRotation(out, rad) {
    var s2 = Math.sin(rad), c6 = Math.cos(rad);
    out[0] = c6;
    out[1] = s2;
    out[2] = -s2;
    out[3] = c6;
    out[4] = 0;
    out[5] = 0;
    return out;
  }
  function fromScaling(out, v3) {
    out[0] = v3[0];
    out[1] = 0;
    out[2] = 0;
    out[3] = v3[1];
    out[4] = 0;
    out[5] = 0;
    return out;
  }
  function fromTranslation(out, v3) {
    out[0] = 1;
    out[1] = 0;
    out[2] = 0;
    out[3] = 1;
    out[4] = v3[0];
    out[5] = v3[1];
    return out;
  }
  function str(a2) {
    return "mat2d(" + a2[0] + ", " + a2[1] + ", " + a2[2] + ", " + a2[3] + ", " + a2[4] + ", " + a2[5] + ")";
  }
  function frob(a2) {
    return Math.sqrt(a2[0] * a2[0] + a2[1] * a2[1] + a2[2] * a2[2] + a2[3] * a2[3] + a2[4] * a2[4] + a2[5] * a2[5] + 1);
  }
  function add(out, a2, b2) {
    out[0] = a2[0] + b2[0];
    out[1] = a2[1] + b2[1];
    out[2] = a2[2] + b2[2];
    out[3] = a2[3] + b2[3];
    out[4] = a2[4] + b2[4];
    out[5] = a2[5] + b2[5];
    return out;
  }
  function subtract(out, a2, b2) {
    out[0] = a2[0] - b2[0];
    out[1] = a2[1] - b2[1];
    out[2] = a2[2] - b2[2];
    out[3] = a2[3] - b2[3];
    out[4] = a2[4] - b2[4];
    out[5] = a2[5] - b2[5];
    return out;
  }
  function multiplyScalar(out, a2, b2) {
    out[0] = a2[0] * b2;
    out[1] = a2[1] * b2;
    out[2] = a2[2] * b2;
    out[3] = a2[3] * b2;
    out[4] = a2[4] * b2;
    out[5] = a2[5] * b2;
    return out;
  }
  function multiplyScalarAndAdd(out, a2, b2, scale3) {
    out[0] = a2[0] + b2[0] * scale3;
    out[1] = a2[1] + b2[1] * scale3;
    out[2] = a2[2] + b2[2] * scale3;
    out[3] = a2[3] + b2[3] * scale3;
    out[4] = a2[4] + b2[4] * scale3;
    out[5] = a2[5] + b2[5] * scale3;
    return out;
  }
  function exactEquals(a2, b2) {
    return a2[0] === b2[0] && a2[1] === b2[1] && a2[2] === b2[2] && a2[3] === b2[3] && a2[4] === b2[4] && a2[5] === b2[5];
  }
  function equals(a2, b2) {
    var a0 = a2[0], a1 = a2[1], a22 = a2[2], a3 = a2[3], a4 = a2[4], a5 = a2[5];
    var b0 = b2[0], b1 = b2[1], b22 = b2[2], b3 = b2[3], b4 = b2[4], b5 = b2[5];
    return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a22 - b22) <= EPSILON * Math.max(1, Math.abs(a22), Math.abs(b22)) && Math.abs(a3 - b3) <= EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= EPSILON * Math.max(1, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= EPSILON * Math.max(1, Math.abs(a5), Math.abs(b5));
  }
  var mul = multiply;
  var sub = subtract;

  // node_modules/gl-matrix/esm/vec2.js
  var vec2_exports = {};
  __export(vec2_exports, {
    add: () => add2,
    angle: () => angle,
    ceil: () => ceil,
    clone: () => clone2,
    copy: () => copy2,
    create: () => create2,
    cross: () => cross,
    dist: () => dist,
    distance: () => distance,
    div: () => div,
    divide: () => divide,
    dot: () => dot,
    equals: () => equals2,
    exactEquals: () => exactEquals2,
    floor: () => floor2,
    forEach: () => forEach,
    fromValues: () => fromValues2,
    inverse: () => inverse,
    len: () => len,
    length: () => length,
    lerp: () => lerp,
    max: () => max3,
    min: () => min3,
    mul: () => mul2,
    multiply: () => multiply2,
    negate: () => negate,
    normalize: () => normalize,
    random: () => random,
    rotate: () => rotate2,
    round: () => round3,
    scale: () => scale2,
    scaleAndAdd: () => scaleAndAdd,
    set: () => set2,
    signedAngle: () => signedAngle,
    sqrDist: () => sqrDist,
    sqrLen: () => sqrLen,
    squaredDistance: () => squaredDistance,
    squaredLength: () => squaredLength,
    str: () => str2,
    sub: () => sub2,
    subtract: () => subtract2,
    transformMat2: () => transformMat2,
    transformMat2d: () => transformMat2d,
    transformMat3: () => transformMat3,
    transformMat4: () => transformMat4,
    zero: () => zero
  });
  function create2() {
    var out = new ARRAY_TYPE(2);
    if (ARRAY_TYPE != Float32Array) {
      out[0] = 0;
      out[1] = 0;
    }
    return out;
  }
  function clone2(a2) {
    var out = new ARRAY_TYPE(2);
    out[0] = a2[0];
    out[1] = a2[1];
    return out;
  }
  function fromValues2(x2, y3) {
    var out = new ARRAY_TYPE(2);
    out[0] = x2;
    out[1] = y3;
    return out;
  }
  function copy2(out, a2) {
    out[0] = a2[0];
    out[1] = a2[1];
    return out;
  }
  function set2(out, x2, y3) {
    out[0] = x2;
    out[1] = y3;
    return out;
  }
  function add2(out, a2, b2) {
    out[0] = a2[0] + b2[0];
    out[1] = a2[1] + b2[1];
    return out;
  }
  function subtract2(out, a2, b2) {
    out[0] = a2[0] - b2[0];
    out[1] = a2[1] - b2[1];
    return out;
  }
  function multiply2(out, a2, b2) {
    out[0] = a2[0] * b2[0];
    out[1] = a2[1] * b2[1];
    return out;
  }
  function divide(out, a2, b2) {
    out[0] = a2[0] / b2[0];
    out[1] = a2[1] / b2[1];
    return out;
  }
  function ceil(out, a2) {
    out[0] = Math.ceil(a2[0]);
    out[1] = Math.ceil(a2[1]);
    return out;
  }
  function floor2(out, a2) {
    out[0] = Math.floor(a2[0]);
    out[1] = Math.floor(a2[1]);
    return out;
  }
  function min3(out, a2, b2) {
    out[0] = Math.min(a2[0], b2[0]);
    out[1] = Math.min(a2[1], b2[1]);
    return out;
  }
  function max3(out, a2, b2) {
    out[0] = Math.max(a2[0], b2[0]);
    out[1] = Math.max(a2[1], b2[1]);
    return out;
  }
  function round3(out, a2) {
    out[0] = round2(a2[0]);
    out[1] = round2(a2[1]);
    return out;
  }
  function scale2(out, a2, b2) {
    out[0] = a2[0] * b2;
    out[1] = a2[1] * b2;
    return out;
  }
  function scaleAndAdd(out, a2, b2, scale3) {
    out[0] = a2[0] + b2[0] * scale3;
    out[1] = a2[1] + b2[1] * scale3;
    return out;
  }
  function distance(a2, b2) {
    var x2 = b2[0] - a2[0], y3 = b2[1] - a2[1];
    return Math.sqrt(x2 * x2 + y3 * y3);
  }
  function squaredDistance(a2, b2) {
    var x2 = b2[0] - a2[0], y3 = b2[1] - a2[1];
    return x2 * x2 + y3 * y3;
  }
  function length(a2) {
    var x2 = a2[0], y3 = a2[1];
    return Math.sqrt(x2 * x2 + y3 * y3);
  }
  function squaredLength(a2) {
    var x2 = a2[0], y3 = a2[1];
    return x2 * x2 + y3 * y3;
  }
  function negate(out, a2) {
    out[0] = -a2[0];
    out[1] = -a2[1];
    return out;
  }
  function inverse(out, a2) {
    out[0] = 1 / a2[0];
    out[1] = 1 / a2[1];
    return out;
  }
  function normalize(out, a2) {
    var x2 = a2[0], y3 = a2[1];
    var len2 = x2 * x2 + y3 * y3;
    if (len2 > 0) {
      len2 = 1 / Math.sqrt(len2);
    }
    out[0] = a2[0] * len2;
    out[1] = a2[1] * len2;
    return out;
  }
  function dot(a2, b2) {
    return a2[0] * b2[0] + a2[1] * b2[1];
  }
  function cross(out, a2, b2) {
    var z = a2[0] * b2[1] - a2[1] * b2[0];
    out[0] = out[1] = 0;
    out[2] = z;
    return out;
  }
  function lerp(out, a2, b2, t3) {
    var ax = a2[0], ay = a2[1];
    out[0] = ax + t3 * (b2[0] - ax);
    out[1] = ay + t3 * (b2[1] - ay);
    return out;
  }
  function random(out, scale3) {
    scale3 = scale3 === void 0 ? 1 : scale3;
    var r4 = RANDOM() * 2 * Math.PI;
    out[0] = Math.cos(r4) * scale3;
    out[1] = Math.sin(r4) * scale3;
    return out;
  }
  function transformMat2(out, a2, m2) {
    var x2 = a2[0], y3 = a2[1];
    out[0] = m2[0] * x2 + m2[2] * y3;
    out[1] = m2[1] * x2 + m2[3] * y3;
    return out;
  }
  function transformMat2d(out, a2, m2) {
    var x2 = a2[0], y3 = a2[1];
    out[0] = m2[0] * x2 + m2[2] * y3 + m2[4];
    out[1] = m2[1] * x2 + m2[3] * y3 + m2[5];
    return out;
  }
  function transformMat3(out, a2, m2) {
    var x2 = a2[0], y3 = a2[1];
    out[0] = m2[0] * x2 + m2[3] * y3 + m2[6];
    out[1] = m2[1] * x2 + m2[4] * y3 + m2[7];
    return out;
  }
  function transformMat4(out, a2, m2) {
    var x2 = a2[0];
    var y3 = a2[1];
    out[0] = m2[0] * x2 + m2[4] * y3 + m2[12];
    out[1] = m2[1] * x2 + m2[5] * y3 + m2[13];
    return out;
  }
  function rotate2(out, a2, b2, rad) {
    var p0 = a2[0] - b2[0], p1 = a2[1] - b2[1], sinC = Math.sin(rad), cosC = Math.cos(rad);
    out[0] = p0 * cosC - p1 * sinC + b2[0];
    out[1] = p0 * sinC + p1 * cosC + b2[1];
    return out;
  }
  function angle(a2, b2) {
    var ax = a2[0], ay = a2[1], bx = b2[0], by = b2[1];
    return Math.abs(Math.atan2(ay * bx - ax * by, ax * bx + ay * by));
  }
  function signedAngle(a2, b2) {
    var ax = a2[0], ay = a2[1], bx = b2[0], by = b2[1];
    return Math.atan2(ax * by - ay * bx, ax * bx + ay * by);
  }
  function zero(out) {
    out[0] = 0;
    out[1] = 0;
    return out;
  }
  function str2(a2) {
    return "vec2(" + a2[0] + ", " + a2[1] + ")";
  }
  function exactEquals2(a2, b2) {
    return a2[0] === b2[0] && a2[1] === b2[1];
  }
  function equals2(a2, b2) {
    var a0 = a2[0], a1 = a2[1];
    var b0 = b2[0], b1 = b2[1];
    return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1));
  }
  var len = length;
  var sub2 = subtract2;
  var mul2 = multiply2;
  var div = divide;
  var dist = distance;
  var sqrDist = squaredDistance;
  var sqrLen = squaredLength;
  var forEach = (function() {
    var vec = create2();
    return function(a2, stride, offset4, count, fn, arg) {
      var i2, l3;
      if (!stride) {
        stride = 2;
      }
      if (!offset4) {
        offset4 = 0;
      }
      if (count) {
        l3 = Math.min(count * stride + offset4, a2.length);
      } else {
        l3 = a2.length;
      }
      for (i2 = offset4; i2 < l3; i2 += stride) {
        vec[0] = a2[i2];
        vec[1] = a2[i2 + 1];
        fn(vec, vec, arg);
        a2[i2] = vec[0];
        a2[i2 + 1] = vec[1];
      }
      return a2;
    };
  })();

  // packages/media-editor/build-module/image-editor/core/math/rotation.mjs
  function normalizeRotation(degrees) {
    if (degrees >= 0) {
      return degrees % 360;
    }
    return (360 + degrees % 360) % 360;
  }
  function degreesToRadians(degrees) {
    return degrees * Math.PI / 180;
  }

  // packages/media-editor/build-module/image-editor/core/math/sanitize.mjs
  var MAX_SAFE_MAGNITUDE = 1e6;
  function safeBoundedNumber(value, fallback) {
    if (!Number.isFinite(value)) {
      return fallback;
    }
    if (Math.abs(value) > MAX_SAFE_MAGNITUDE) {
      return fallback;
    }
    return value;
  }
  function isSafeNumber(value) {
    return Number.isFinite(value) && Math.abs(value) <= MAX_SAFE_MAGNITUDE;
  }
  function isValidSize(size4) {
    return Number.isFinite(size4.width) && Number.isFinite(size4.height) && size4.width >= Number.EPSILON && size4.height >= Number.EPSILON && size4.width <= MAX_SAFE_MAGNITUDE && size4.height <= MAX_SAFE_MAGNITUDE;
  }
  function sanitizeRect(rect) {
    const x2 = safeBoundedNumber(rect.x, 0);
    const y3 = safeBoundedNumber(rect.y, 0);
    const width = safeBoundedNumber(rect.width, 0);
    const height = safeBoundedNumber(rect.height, 0);
    if (x2 === rect.x && y3 === rect.y && width === rect.width && height === rect.height) {
      return rect;
    }
    return { x: x2, y: y3, width, height };
  }
  function sanitizeCropperState(state2) {
    const panX = safeBoundedNumber(state2.pan.x, 0);
    const panY = safeBoundedNumber(state2.pan.y, 0);
    const basePanX = safeBoundedNumber(state2.basePan.x, 0);
    const basePanY = safeBoundedNumber(state2.basePan.y, 0);
    const rotation = safeBoundedNumber(state2.rotation, 0);
    const baseRotation = safeBoundedNumber(state2.baseRotation, 0);
    const rawZoom = safeBoundedNumber(state2.zoom, 1);
    const zoom = rawZoom >= Number.EPSILON ? rawZoom : 1;
    const rawBaseZoom = safeBoundedNumber(state2.baseZoom, 1);
    const baseZoom = rawBaseZoom >= Number.EPSILON ? rawBaseZoom : 1;
    const cropRect = sanitizeRect(state2.cropRect);
    const panUnchanged = panX === state2.pan.x && panY === state2.pan.y;
    const basePanUnchanged = basePanX === state2.basePan.x && basePanY === state2.basePan.y;
    if (panUnchanged && basePanUnchanged && zoom === state2.zoom && baseZoom === state2.baseZoom && rotation === state2.rotation && baseRotation === state2.baseRotation && cropRect === state2.cropRect) {
      return state2;
    }
    return {
      ...state2,
      pan: panUnchanged ? state2.pan : { x: panX, y: panY },
      zoom,
      rotation,
      basePan: basePanUnchanged ? state2.basePan : { x: basePanX, y: basePanY },
      baseZoom,
      baseRotation,
      cropRect
    };
  }

  // packages/media-editor/build-module/image-editor/core/camera.mjs
  var _scratchMat = mat2d_exports.create();
  var _scratchVec = vec2_exports.create();
  function getRotatedBBox(width, height, rotation) {
    if (!isSafeNumber(width) || !isSafeNumber(height) || !isSafeNumber(rotation) || width <= 0 || height <= 0) {
      return { width: 0, height: 0 };
    }
    const rad = degreesToRadians(rotation);
    const cosR = Math.abs(Math.cos(rad));
    const sinR = Math.abs(Math.sin(rad));
    return {
      width: cosR * width + sinR * height,
      height: sinR * width + cosR * height
    };
  }
  function getImageFit(containerSize, imageSize, rotation) {
    if (!isValidSize(containerSize) || !isValidSize(imageSize)) {
      return {
        elementSize: { width: 0, height: 0 },
        visualSize: { width: 0, height: 0 }
      };
    }
    const safeRotation = safeBoundedNumber(rotation, 0);
    const snapRotation = Math.round(safeRotation / 90) * 90;
    const naturalBBox = getRotatedBBox(
      imageSize.width,
      imageSize.height,
      snapRotation
    );
    if (naturalBBox.width === 0 || naturalBBox.height === 0) {
      return {
        elementSize: { width: 0, height: 0 },
        visualSize: { width: 0, height: 0 }
      };
    }
    const fitScale = Math.min(
      containerSize.width / naturalBBox.width,
      containerSize.height / naturalBBox.height
    );
    const renderedW = imageSize.width * fitScale;
    const renderedH = imageSize.height * fitScale;
    const visualSize = getRotatedBBox(renderedW, renderedH, snapRotation);
    return {
      elementSize: { width: renderedW, height: renderedH },
      visualSize
    };
  }
  function getViewScale(cropRect, canvasSize, visualSize, targetFill, maxScale) {
    const cropScreenW = cropRect.width * visualSize.width;
    const cropScreenH = cropRect.height * visualSize.height;
    if (!isValidSize(canvasSize) || !isValidSize(visualSize) || !(cropScreenW > 0) || !(cropScreenH > 0) || !Number.isFinite(targetFill) || !Number.isFinite(maxScale) || !(targetFill > 0) || !(maxScale >= 1)) {
      return 1;
    }
    const kW = targetFill * canvasSize.width / cropScreenW;
    const kH = targetFill * canvasSize.height / cropScreenH;
    const k2 = Math.min(kW, kH);
    return Math.min(maxScale, Math.max(1, k2));
  }
  function createCamera(state2, containerSize, imageSize) {
    const m2 = mat2d_exports.create();
    if (!isValidSize(containerSize) || !isValidSize(imageSize)) {
      return m2;
    }
    const safeState = sanitizeCropperState(state2);
    const snapRotation = Math.round(safeState.rotation / 90) * 90;
    const naturalBBox = getRotatedBBox(
      imageSize.width,
      imageSize.height,
      snapRotation
    );
    if (naturalBBox.width === 0 || naturalBBox.height === 0) {
      return m2;
    }
    const fitScale = Math.min(
      containerSize.width / naturalBBox.width,
      containerSize.height / naturalBBox.height
    );
    const renderedW = imageSize.width * fitScale;
    const renderedH = imageSize.height * fitScale;
    const { width: visualW, height: visualH } = getRotatedBBox(
      renderedW,
      renderedH,
      snapRotation
    );
    mat2d_exports.translate(m2, m2, [
      containerSize.width / 2,
      containerSize.height / 2
    ]);
    mat2d_exports.translate(m2, m2, [
      safeState.pan.x * visualW,
      safeState.pan.y * visualH
    ]);
    mat2d_exports.scale(m2, m2, [
      safeState.flip.horizontal ? -1 : 1,
      safeState.flip.vertical ? -1 : 1
    ]);
    mat2d_exports.rotate(m2, m2, degreesToRadians(safeState.rotation));
    mat2d_exports.scale(m2, m2, [safeState.zoom, safeState.zoom]);
    mat2d_exports.translate(m2, m2, [-renderedW / 2, -renderedH / 2]);
    mat2d_exports.scale(m2, m2, [renderedW, renderedH]);
    return m2;
  }
  function aabb(camera, corners) {
    const screenCorners = corners.map((c6) => {
      const out = vec2_exports.create();
      vec2_exports.transformMat2d(out, c6, camera);
      return out;
    });
    let minX = screenCorners[0][0];
    let maxX = screenCorners[0][0];
    let minY = screenCorners[0][1];
    let maxY = screenCorners[0][1];
    for (let i2 = 1; i2 < screenCorners.length; i2++) {
      const s2 = screenCorners[i2];
      if (s2[0] < minX) {
        minX = s2[0];
      }
      if (s2[0] > maxX) {
        maxX = s2[0];
      }
      if (s2[1] < minY) {
        minY = s2[1];
      }
      if (s2[1] > maxY) {
        maxY = s2[1];
      }
    }
    return { left: minX, top: minY, width: maxX - minX, height: maxY - minY };
  }
  function getVisibleBounds(camera) {
    return aabb(camera, [
      [0, 0],
      [1, 0],
      [1, 1],
      [0, 1]
    ]);
  }
  function createExportCamera(state2, imageSize, outputSize) {
    const m2 = mat2d_exports.create();
    if (!isValidSize(imageSize) || !isValidSize(outputSize)) {
      return m2;
    }
    const { rotation, flip: flip4, cropRect, zoom, pan } = sanitizeCropperState(state2);
    const snapRotation = Math.round(rotation / 90) * 90;
    const { width: rotW, height: rotH } = getRotatedBBox(
      imageSize.width,
      imageSize.height,
      snapRotation
    );
    const naturalCropW = cropRect.width * rotW;
    const naturalCropH = cropRect.height * rotH;
    const outputScaleX = naturalCropW > 0 ? outputSize.width / naturalCropW : 1;
    const outputScaleY = naturalCropH > 0 ? outputSize.height / naturalCropH : 1;
    const cropOffsetX = cropRect.x * rotW + outputSize.width / 2 / outputScaleX;
    const cropOffsetY = cropRect.y * rotH + outputSize.height / 2 / outputScaleY;
    const visualCenterX = rotW / 2 + pan.x * rotW;
    const visualCenterY = rotH / 2 + pan.y * rotH;
    mat2d_exports.scale(m2, m2, [outputScaleX, outputScaleY]);
    mat2d_exports.translate(m2, m2, [
      visualCenterX - cropOffsetX + outputSize.width / 2 / outputScaleX,
      visualCenterY - cropOffsetY + outputSize.height / 2 / outputScaleY
    ]);
    mat2d_exports.scale(m2, m2, [flip4.horizontal ? -1 : 1, flip4.vertical ? -1 : 1]);
    mat2d_exports.rotate(m2, m2, degreesToRadians(rotation));
    mat2d_exports.scale(m2, m2, [zoom, zoom]);
    mat2d_exports.translate(m2, m2, [-imageSize.width / 2, -imageSize.height / 2]);
    return m2;
  }

  // packages/media-editor/build-module/image-editor/core/export/canvas-renderer.mjs
  var DEFAULT_QUALITY = 0.92;
  function loadImage(src) {
    return new Promise((resolve, reject) => {
      const image = new Image();
      image.addEventListener("load", () => resolve(image));
      image.addEventListener("error", (error2) => reject(error2));
      image.crossOrigin = "anonymous";
      image.src = src;
    });
  }
  function renderToCanvas(image, state2) {
    const { naturalWidth, naturalHeight } = image;
    const { rotation, cropRect } = state2;
    const imageSize = { width: naturalWidth, height: naturalHeight };
    const snapRotation = Math.round(rotation / 90) * 90;
    const rotBBox = getRotatedBBox(naturalWidth, naturalHeight, snapRotation);
    const outW = Math.round(cropRect.width * rotBBox.width);
    const outH = Math.round(cropRect.height * rotBBox.height);
    const canvas = document.createElement("canvas");
    canvas.width = outW;
    canvas.height = outH;
    const ctx9 = canvas.getContext("2d");
    if (!ctx9) {
      throw new Error(
        "Could not obtain a 2D context for the export canvas."
      );
    }
    const camera = createExportCamera(state2, imageSize, {
      width: outW,
      height: outH
    });
    ctx9.setTransform(
      camera[0],
      camera[1],
      camera[2],
      camera[3],
      camera[4],
      camera[5]
    );
    ctx9.drawImage(image, 0, 0);
    return canvas;
  }
  function canvasToBlob(canvas, mimeType = "image/png", quality = DEFAULT_QUALITY) {
    return new Promise((resolve, reject) => {
      canvas.toBlob(
        (blob) => {
          if (blob) {
            resolve(blob);
          } else {
            reject(new Error("Canvas toBlob returned null."));
          }
        },
        mimeType,
        quality
      );
    });
  }
  async function exportCroppedImage(src, state2, mimeType = "image/png", quality = DEFAULT_QUALITY) {
    const image = await loadImage(src);
    const canvas = renderToCanvas(image, state2);
    return canvasToBlob(canvas, mimeType, quality);
  }

  // packages/media-editor/build-module/image-editor/core/containment.mjs
  var EPSILON2 = 1e-9;
  function getVisualDimensions(rotation, imageAspectRatio) {
    const rad = degreesToRadians(rotation);
    const absC = Math.abs(Math.cos(rad));
    const absS = Math.abs(Math.sin(rad));
    const bbox = getRotatedBBox(imageAspectRatio, 1, rotation);
    return {
      visualW: bbox.width,
      visualH: bbox.height,
      absC,
      absS
    };
  }
  function getMinZoomForCover(rotation, imageAspectRatio, cropRect) {
    const aspectRatio = Math.max(imageAspectRatio, Number.EPSILON);
    const snapRotation = Math.round(rotation / 90) * 90;
    const { visualW: snapVisualW, visualH: snapVisualH } = getVisualDimensions(
      snapRotation,
      aspectRatio
    );
    const { absC, absS } = getVisualDimensions(rotation, aspectRatio);
    const cropHalfW = cropRect.width * snapVisualW / 2;
    const cropHalfH = cropRect.height * snapVisualH / 2;
    const spanAlpha = cropHalfW * absC + cropHalfH * absS;
    const spanBeta = cropHalfW * absS + cropHalfH * absC;
    const zoomFromAlpha = 2 * spanAlpha / aspectRatio;
    const zoomFromBeta = 2 * spanBeta;
    return Math.max(zoomFromAlpha, zoomFromBeta);
  }
  function getMinZoom(state2) {
    if (!state2.image) {
      return MIN_ZOOM;
    }
    const imageSize = {
      width: state2.image.naturalWidth,
      height: state2.image.naturalHeight
    };
    if (!isValidSize(imageSize)) {
      return MIN_ZOOM;
    }
    const safeState = sanitizeCropperState(state2);
    const aspectRatio = imageSize.width / imageSize.height;
    return Math.max(
      ABSOLUTE_MIN_ZOOM,
      getMinZoomForCover(
        safeState.rotation,
        aspectRatio,
        safeState.cropRect
      )
    );
  }
  function getImageCropBounds(state2, elementSize, visualSize) {
    if (!isValidSize(elementSize) || !isValidSize(visualSize)) {
      return { minX: 0, minY: 0, maxX: 1, maxY: 1 };
    }
    const safeState = sanitizeCropperState(state2);
    const tx = safeState.pan.x * visualSize.width;
    const ty = safeState.pan.y * visualSize.height;
    const rad = degreesToRadians(safeState.rotation);
    const cos = Math.cos(rad);
    const sin = Math.sin(rad);
    const sx = safeState.flip.horizontal ? -1 : 1;
    const sy = safeState.flip.vertical ? -1 : 1;
    const z = safeState.zoom;
    const ma = sx * cos * z;
    const mb = sy * sin * z;
    const mc = -sx * sin * z;
    const md = sy * cos * z;
    const hw = elementSize.width / 2;
    const hh = elementSize.height / 2;
    const corners = [
      [-hw, -hh],
      [hw, -hh],
      [hw, hh],
      [-hw, hh]
    ];
    let imgMinX = Infinity;
    let imgMaxX = -Infinity;
    let imgMinY = Infinity;
    let imgMaxY = -Infinity;
    for (const [cx, cy] of corners) {
      const screenX = ma * cx + mc * cy + tx;
      const screenY = mb * cx + md * cy + ty;
      const nx = screenX / visualSize.width + 0.5;
      const ny = screenY / visualSize.height + 0.5;
      imgMinX = Math.min(imgMinX, nx);
      imgMaxX = Math.max(imgMaxX, nx);
      imgMinY = Math.min(imgMinY, ny);
      imgMaxY = Math.max(imgMaxY, ny);
    }
    return {
      minX: imgMinX,
      minY: imgMinY,
      maxX: imgMaxX,
      maxY: imgMaxY
    };
  }
  function restrictCropRect(cropRect, zoom, rotation, imageAspectRatio) {
    const safeRect = sanitizeRect(cropRect);
    const zoomCandidate = safeBoundedNumber(zoom, 1);
    const safeZoom = zoomCandidate >= Number.EPSILON ? zoomCandidate : 1;
    const safeRotation = safeBoundedNumber(rotation, 0);
    const safeAspect = safeBoundedNumber(imageAspectRatio, 1);
    const aspectRatio = Math.max(safeAspect, Number.EPSILON);
    const snapRotation = Math.round(safeRotation / 90) * 90;
    const { visualW, visualH } = getVisualDimensions(
      snapRotation,
      aspectRatio
    );
    const { absC, absS } = getVisualDimensions(safeRotation, aspectRatio);
    const W = safeRect.width;
    const H2 = safeRect.height;
    const cropWPx = W * visualW;
    const cropHPx = H2 * visualH;
    const spanAlpha = cropWPx * absC + cropHPx * absS;
    const spanBeta = cropWPx * absS + cropHPx * absC;
    const limitAlpha = aspectRatio * safeZoom;
    const limitBeta = safeZoom;
    let t3 = 1;
    if (spanAlpha > 0) {
      t3 = Math.min(t3, limitAlpha / spanAlpha);
    }
    if (spanBeta > 0) {
      t3 = Math.min(t3, limitBeta / spanBeta);
    }
    if (t3 >= 1 - EPSILON2) {
      return safeRect;
    }
    const newW = W * t3;
    const newH = H2 * t3;
    const centerX = safeRect.x + W / 2;
    const centerY = safeRect.y + H2 / 2;
    let newX = centerX - newW / 2;
    let newY = centerY - newH / 2;
    newX = Math.max(0, Math.min(newX, 1 - newW));
    newY = Math.max(0, Math.min(newY, 1 - newH));
    return { x: newX, y: newY, width: newW, height: newH };
  }
  var CANONICAL_CONTAINER = { width: 1e3, height: 1e3 };
  var _scratchMat2 = mat2d_exports.create();
  var _scratchVec2 = vec2_exports.create();
  function restrictPanZoom(state2, imageSize, cropRect) {
    const safeState = sanitizeCropperState(state2);
    const safeCropRect = sanitizeRect(cropRect);
    const aspectRatio = isValidSize(imageSize) ? imageSize.width / imageSize.height : 1;
    const minZoom = Math.max(
      ABSOLUTE_MIN_ZOOM,
      getMinZoomForCover(safeState.rotation, aspectRatio, safeCropRect)
    );
    const zoom = Math.min(MAX_ZOOM, Math.max(safeState.zoom, minZoom));
    const candidateState = { ...safeState, zoom };
    const camera = createCamera(
      candidateState,
      CANONICAL_CONTAINER,
      imageSize
    );
    const snapRotation = Math.round(safeState.rotation / 90) * 90;
    const baseCamera = createCamera(
      {
        ...candidateState,
        pan: { x: 0, y: 0 },
        zoom: 1,
        rotation: snapRotation
      },
      CANONICAL_CONTAINER,
      imageSize
    );
    const visibleBounds = getVisibleBounds(baseCamera);
    const stencilCorners = [
      [
        visibleBounds.left + safeCropRect.x * visibleBounds.width,
        visibleBounds.top + safeCropRect.y * visibleBounds.height
      ],
      [
        visibleBounds.left + (safeCropRect.x + safeCropRect.width) * visibleBounds.width,
        visibleBounds.top + safeCropRect.y * visibleBounds.height
      ],
      [
        visibleBounds.left + (safeCropRect.x + safeCropRect.width) * visibleBounds.width,
        visibleBounds.top + (safeCropRect.y + safeCropRect.height) * visibleBounds.height
      ],
      [
        visibleBounds.left + safeCropRect.x * visibleBounds.width,
        visibleBounds.top + (safeCropRect.y + safeCropRect.height) * visibleBounds.height
      ]
    ];
    mat2d_exports.invert(_scratchMat2, camera);
    let minWx = Infinity;
    let maxWx = -Infinity;
    let minWy = Infinity;
    let maxWy = -Infinity;
    for (const corner of stencilCorners) {
      vec2_exports.transformMat2d(_scratchVec2, corner, _scratchMat2);
      const w3 = _scratchVec2;
      if (w3[0] < minWx) {
        minWx = w3[0];
      }
      if (w3[0] > maxWx) {
        maxWx = w3[0];
      }
      if (w3[1] < minWy) {
        minWy = w3[1];
      }
      if (w3[1] > maxWy) {
        maxWy = w3[1];
      }
    }
    if (minWx >= -EPSILON2 && maxWx <= 1 + EPSILON2 && minWy >= -EPSILON2 && maxWy <= 1 + EPSILON2) {
      return { pan: safeState.pan, zoom };
    }
    let dwx = 0;
    let dwy = 0;
    if (minWx < 0 && maxWx <= 1 + EPSILON2) {
      dwx = -minWx;
    } else if (maxWx > 1 && minWx >= -EPSILON2) {
      dwx = 1 - maxWx;
    } else if (minWx < 0 && maxWx > 1) {
      dwx = (1 - maxWx - minWx) / 2;
    }
    if (minWy < 0 && maxWy <= 1 + EPSILON2) {
      dwy = -minWy;
    } else if (maxWy > 1 && minWy >= -EPSILON2) {
      dwy = 1 - maxWy;
    } else if (minWy < 0 && maxWy > 1) {
      dwy = (1 - maxWy - minWy) / 2;
    }
    const dsx = camera[0] * dwx + camera[2] * dwy;
    const dsy = camera[1] * dwx + camera[3] * dwy;
    const newPanX = safeState.pan.x - (visibleBounds.width > 0 ? dsx / visibleBounds.width : 0);
    const newPanY = safeState.pan.y - (visibleBounds.height > 0 ? dsy / visibleBounds.height : 0);
    return {
      pan: { x: newPanX, y: newPanY },
      zoom
    };
  }

  // packages/media-editor/build-module/image-editor/core/state.mjs
  var STATE_EPSILON = 1e-6;
  function nearlyEqual(a2, b2) {
    return Math.abs(a2 - b2) < STATE_EPSILON;
  }
  function areCropperStatesEqual(a2, b2) {
    const aImage = a2.image;
    const bImage = b2.image;
    return aImage?.src === bImage?.src && aImage?.naturalWidth === bImage?.naturalWidth && aImage?.naturalHeight === bImage?.naturalHeight && nearlyEqual(a2.pan.x, b2.pan.x) && nearlyEqual(a2.pan.y, b2.pan.y) && nearlyEqual(a2.zoom, b2.zoom) && nearlyEqual(a2.rotation, b2.rotation) && a2.flip.horizontal === b2.flip.horizontal && a2.flip.vertical === b2.flip.vertical && nearlyEqual(a2.cropRect.x, b2.cropRect.x) && nearlyEqual(a2.cropRect.y, b2.cropRect.y) && nearlyEqual(a2.cropRect.width, b2.cropRect.width) && nearlyEqual(a2.cropRect.height, b2.cropRect.height);
  }
  function clampRequestedZoom(state2, zoom) {
    if (state2.image) {
      return Math.min(MAX_ZOOM, Math.max(ABSOLUTE_MIN_ZOOM, zoom));
    }
    return Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, zoom));
  }
  function operationToAction(state2, op) {
    switch (op.type) {
      case "crop":
        return { type: "SET_CROP_RECT", payload: { ...op.rect } };
      case "rotate": {
        const singleFlip = state2.flip.horizontal !== state2.flip.vertical;
        const fieldDelta = singleFlip ? -op.degrees : op.degrees;
        return {
          type: "SET_ROTATION",
          payload: normalizeRotation(state2.rotation + fieldDelta)
        };
      }
      case "flip":
        return {
          type: "SET_FLIP",
          payload: {
            ...state2.flip,
            [op.direction]: !state2.flip[op.direction]
          }
        };
      case "zoom":
        return { type: "SET_ZOOM", payload: op.factor };
    }
  }
  function enforceContainment(state2) {
    if (!state2.image) {
      return state2;
    }
    const imageSize = {
      width: state2.image.naturalWidth,
      height: state2.image.naturalHeight
    };
    const imageAspectRatio = imageSize.width / imageSize.height;
    const { pan: panAfterZoom, zoom } = restrictPanZoom(
      state2,
      imageSize,
      state2.cropRect
    );
    const cropRect = restrictCropRect(
      state2.cropRect,
      zoom,
      state2.rotation,
      imageAspectRatio
    );
    let pan = panAfterZoom;
    if (cropRect !== state2.cropRect) {
      ({ pan } = restrictPanZoom(
        { ...state2, zoom, cropRect },
        imageSize,
        cropRect
      ));
    }
    if (pan.x === state2.pan.x && pan.y === state2.pan.y && zoom === state2.zoom && cropRect === state2.cropRect) {
      return state2;
    }
    return { ...state2, pan, zoom, cropRect };
  }
  function commitBase(next) {
    if (next.basePan.x === next.pan.x && next.basePan.y === next.pan.y && next.baseZoom === next.zoom && next.baseRotation === next.rotation) {
      return next;
    }
    return {
      ...next,
      basePan: { x: next.pan.x, y: next.pan.y },
      baseZoom: next.zoom,
      baseRotation: next.rotation
    };
  }
  function cropperReducer(state2, action) {
    switch (action.type) {
      case "SET_IMAGE":
        return commitBase(
          enforceContainment({
            ...state2,
            image: action.payload
          })
        );
      case "SET_PAN":
        return commitBase(
          enforceContainment({
            ...state2,
            pan: action.payload
          })
        );
      case "SET_ZOOM": {
        const z = clampRequestedZoom(state2, action.payload);
        return commitBase(
          enforceContainment({
            ...state2,
            zoom: z
          })
        );
      }
      case "SET_ZOOM_AT_POINT": {
        const z = clampRequestedZoom(state2, action.payload.zoom);
        return commitBase(
          enforceContainment({
            ...state2,
            zoom: z,
            pan: action.payload.pan
          })
        );
      }
      case "SET_ROTATION": {
        const newRotation = normalizeRotation(action.payload);
        const singleFlip = state2.flip.horizontal !== state2.flip.vertical;
        const deltaRad = degreesToRadians(
          newRotation - state2.baseRotation
        );
        const cos = Math.cos(deltaRad);
        const sin = Math.sin(deltaRad) * (singleFlip ? -1 : 1);
        const cropCx = state2.cropRect.x + state2.cropRect.width / 2;
        const cropCy = state2.cropRect.y + state2.cropRect.height / 2;
        const ox = cropCx - 0.5;
        const oy = cropCy - 0.5;
        const dx = state2.basePan.x - ox;
        const dy = state2.basePan.y - oy;
        return enforceContainment({
          ...state2,
          rotation: newRotation,
          zoom: state2.baseZoom,
          pan: {
            x: ox + cos * dx - sin * dy,
            y: oy + sin * dx + cos * dy
          }
        });
      }
      case "SNAP_ROTATE_90": {
        const rawDir = action.payload.direction;
        const singleFlip = state2.flip.horizontal !== state2.flip.vertical;
        const fieldDir = singleFlip ? -rawDir : rawDir;
        const rot90 = normalizeRotation(state2.rotation + fieldDir * 90);
        const rect = state2.cropRect;
        const cx = rect.x + rect.width / 2;
        const cy = rect.y + rect.height / 2;
        const newPanX = rawDir === 1 ? -state2.pan.y : state2.pan.y;
        const newPanY = rawDir === 1 ? state2.pan.x : -state2.pan.x;
        return commitBase(
          enforceContainment({
            ...state2,
            rotation: rot90,
            zoom: state2.baseZoom,
            pan: { x: newPanX, y: newPanY },
            cropRect: {
              x: cx - rect.height / 2,
              y: cy - rect.width / 2,
              width: rect.height,
              height: rect.width
            }
          })
        );
      }
      case "SET_FLIP": {
        const oldFlip = state2.flip;
        const newFlip = action.payload;
        const flippedH = oldFlip.horizontal !== newFlip.horizontal;
        const flippedV = oldFlip.vertical !== newFlip.vertical;
        const rect = state2.cropRect;
        return commitBase(
          enforceContainment({
            ...state2,
            flip: newFlip,
            pan: {
              x: flippedH ? -state2.pan.x : state2.pan.x,
              y: flippedV ? -state2.pan.y : state2.pan.y
            },
            cropRect: {
              x: flippedH ? 1 - rect.x - rect.width : rect.x,
              y: flippedV ? 1 - rect.y - rect.height : rect.y,
              width: rect.width,
              height: rect.height
            }
          })
        );
      }
      case "SET_CROP_RECT":
        return commitBase(
          enforceContainment({
            ...state2,
            cropRect: action.payload
          })
        );
      case "SETTLE_CROP": {
        const rect = state2.cropRect;
        if (rect.width === 0 || rect.height === 0 || !state2.image) {
          return state2;
        }
        const fitScale = 1 / Math.max(rect.width, rect.height);
        const zoomCap = state2.zoom > 0 ? MAX_ZOOM / state2.zoom : fitScale;
        const s2 = Math.min(fitScale, zoomCap);
        const newW = rect.width * s2;
        const newH = rect.height * s2;
        const oldCx = rect.x + rect.width / 2;
        const oldCy = rect.y + rect.height / 2;
        return commitBase(
          enforceContainment({
            ...state2,
            zoom: state2.zoom * s2,
            pan: {
              x: (state2.pan.x - oldCx + 0.5) * s2,
              y: (state2.pan.y - oldCy + 0.5) * s2
            },
            cropRect: {
              x: (1 - newW) / 2,
              y: (1 - newH) / 2,
              width: newW,
              height: newH
            }
          })
        );
      }
      case "APPLY_OPERATION":
        return cropperReducer(
          state2,
          operationToAction(state2, action.payload)
        );
      case "RESET":
        return commitBase(
          enforceContainment({
            ...DEFAULT_STATE2,
            image: state2.image,
            ...action.payload
          })
        );
    }
  }

  // packages/media-editor/build-module/image-editor/core/setter-helpers.mjs
  function buildFocalPointZoomAction(state2, requestedZoom) {
    const clampedZoom = Math.min(
      MAX_ZOOM,
      Math.max(getMinZoom(state2), requestedZoom)
    );
    if (clampedZoom === state2.zoom) {
      return null;
    }
    const { cropRect } = state2;
    const focalNormX = cropRect.x + cropRect.width / 2 - 0.5;
    const focalNormY = cropRect.y + cropRect.height / 2 - 0.5;
    const zoomRatio = 1 - clampedZoom / state2.zoom;
    const newPanX = state2.pan.x + (focalNormX - state2.pan.x) * zoomRatio;
    const newPanY = state2.pan.y + (focalNormY - state2.pan.y) * zoomRatio;
    const imageSize = state2.image ? {
      width: state2.image.naturalWidth,
      height: state2.image.naturalHeight
    } : { width: 1, height: 1 };
    const { pan: clampedPan } = restrictPanZoom(
      {
        ...state2,
        zoom: clampedZoom,
        pan: { x: newPanX, y: newPanY }
      },
      imageSize,
      state2.cropRect
    );
    return {
      type: "SET_ZOOM_AT_POINT",
      payload: { zoom: clampedZoom, pan: clampedPan }
    };
  }

  // packages/media-editor/build-module/image-editor/react/hooks/build-cropper-setters.mjs
  function buildCropperSetters(dispatchCropperAction, getCropperState) {
    return {
      setPan: (pan) => dispatchCropperAction({ type: "SET_PAN", payload: pan }),
      setZoom: (zoom) => {
        const action = buildFocalPointZoomAction(getCropperState(), zoom);
        if (action) {
          dispatchCropperAction(action);
        }
      },
      setZoomAtPoint: (zoom, pan) => dispatchCropperAction({
        type: "SET_ZOOM_AT_POINT",
        payload: { zoom, pan }
      }),
      setRotation: (rotation) => dispatchCropperAction({
        type: "SET_ROTATION",
        payload: rotation
      }),
      setFlip: (flip4) => dispatchCropperAction({ type: "SET_FLIP", payload: flip4 }),
      toggleFlip: (direction) => {
        const { flip: flip4 } = getCropperState();
        dispatchCropperAction({
          type: "SET_FLIP",
          payload: { ...flip4, [direction]: !flip4[direction] }
        });
      },
      snapRotate90: (direction) => dispatchCropperAction({
        type: "SNAP_ROTATE_90",
        payload: { direction }
      }),
      setCropRect: (rect) => dispatchCropperAction({
        type: "SET_CROP_RECT",
        payload: rect
      }),
      settleCrop: () => dispatchCropperAction({ type: "SETTLE_CROP" }),
      applyOperation: (op) => dispatchCropperAction({
        type: "APPLY_OPERATION",
        payload: op
      })
    };
  }

  // packages/media-editor/build-module/image-editor/react/components/cropper.mjs
  var import_element237 = __toESM(require_element(), 1);
  var import_i18n147 = __toESM(require_i18n(), 1);

  // packages/media-editor/build-module/image-editor/core/crop-rect.mjs
  function computeInscribedRect(aspectRatio, visualSize) {
    let w3 = 1;
    let h2 = 1;
    if (aspectRatio && aspectRatio > 0 && visualSize.width > 0) {
      const normalizedRatio = aspectRatio * visualSize.height / visualSize.width;
      if (normalizedRatio <= 1) {
        w3 = normalizedRatio;
      } else {
        h2 = 1 / normalizedRatio;
      }
    }
    return {
      x: (1 - w3) / 2,
      y: (1 - h2) / 2,
      width: w3,
      height: h2
    };
  }

  // packages/media-editor/build-module/image-editor/core/stencil-math.mjs
  function getMinCropPixels(displayScale) {
    if (displayScale <= 0) {
      return MIN_CROP_PIXELS;
    }
    return Math.max(MIN_CROP_PIXELS, MIN_CROP_SCREEN_PX / displayScale);
  }
  var DEFAULT_MIN_CROP_SIZE = { width: 0.05, height: 0.05 };
  function computeFreeResizeRect(drag2, clientX, clientY, imageSize, bounds, minCropSize = DEFAULT_MIN_CROP_SIZE) {
    const dx = imageSize.width > 0 ? (clientX - drag2.startX) / imageSize.width : 0;
    const dy = imageSize.height > 0 ? (clientY - drag2.startY) / imageSize.height : 0;
    const s2 = drag2.startRect;
    const handle = drag2.handle;
    let edgeTop = s2.y;
    let edgeBottom = s2.y + s2.height;
    let edgeLeft = s2.x;
    let edgeRight = s2.x + s2.width;
    if (handle === "n" || handle === "nw" || handle === "ne") {
      edgeTop = Math.max(
        bounds.minY,
        Math.min(s2.y + dy, edgeBottom - minCropSize.height)
      );
    }
    if (handle === "s" || handle === "sw" || handle === "se") {
      edgeBottom = Math.max(
        edgeTop + minCropSize.height,
        Math.min(s2.y + s2.height + dy, bounds.maxY)
      );
    }
    if (handle === "w" || handle === "nw" || handle === "sw") {
      edgeLeft = Math.max(
        bounds.minX,
        Math.min(s2.x + dx, edgeRight - minCropSize.width)
      );
    }
    if (handle === "e" || handle === "ne" || handle === "se") {
      edgeRight = Math.max(
        edgeLeft + minCropSize.width,
        Math.min(s2.x + s2.width + dx, bounds.maxX)
      );
    }
    return {
      x: edgeLeft,
      y: edgeTop,
      width: edgeRight - edgeLeft,
      height: edgeBottom - edgeTop
    };
  }
  function computeLockedResizeRect(drag2, clientX, clientY, imageSize, bounds, normalizedRatio, minCropSize = DEFAULT_MIN_CROP_SIZE, driverAxis) {
    if (normalizedRatio <= 0 || imageSize.width <= 0 || imageSize.height <= 0) {
      return { ...drag2.startRect };
    }
    const dx = (clientX - drag2.startX) / imageSize.width;
    const dy = (clientY - drag2.startY) / imageSize.height;
    const s2 = drag2.startRect;
    const handle = drag2.handle;
    const anchorX = handle === "nw" || handle === "sw" ? s2.x + s2.width : s2.x;
    const anchorY = handle === "nw" || handle === "ne" ? s2.y + s2.height : s2.y;
    const dirX = handle === "nw" || handle === "sw" ? -1 : 1;
    const dirY = handle === "nw" || handle === "ne" ? -1 : 1;
    const draggedX = (handle === "nw" || handle === "sw" ? s2.x : s2.x + s2.width) + dx;
    const draggedY = (handle === "nw" || handle === "ne" ? s2.y : s2.y + s2.height) + dy;
    let distW = (draggedX - anchorX) * dirX;
    let distH = (draggedY - anchorY) * dirY;
    const minDistW = Math.max(
      minCropSize.width,
      minCropSize.height * normalizedRatio
    );
    const minDistH = minDistW / normalizedRatio;
    distW = Math.max(distW, minDistW);
    distH = Math.max(distH, minDistH);
    const pixelRatio = normalizedRatio * imageSize.width / imageSize.height;
    const isWidthDriver = driverAxis === "width" || !driverAxis && distW * imageSize.width / (distH * imageSize.height) > pixelRatio;
    if (isWidthDriver) {
      distH = distW / normalizedRatio;
    } else {
      distW = distH * normalizedRatio;
    }
    const maxW = dirX > 0 ? bounds.maxX - anchorX : anchorX - bounds.minX;
    const maxH = dirY > 0 ? bounds.maxY - anchorY : anchorY - bounds.minY;
    if (distW > maxW) {
      distW = maxW;
      distH = distW / normalizedRatio;
    }
    if (distH > maxH) {
      distH = maxH;
      distW = distH * normalizedRatio;
    }
    distW = Math.max(distW, minDistW);
    distH = Math.max(distH, minDistH);
    const newX = dirX > 0 ? anchorX : anchorX - distW;
    const newY = dirY > 0 ? anchorY : anchorY - distH;
    return { x: newX, y: newY, width: distW, height: distH };
  }
  function computeShiftLockedResizeRect(drag2, clientX, clientY, imageSize, bounds, minCropSize = DEFAULT_MIN_CROP_SIZE) {
    const s2 = drag2.startRect;
    const pixelW = s2.width * imageSize.width;
    const pixelH = s2.height * imageSize.height;
    if (pixelH <= 0 || pixelW <= 0) {
      return computeFreeResizeRect(
        drag2,
        clientX,
        clientY,
        imageSize,
        bounds,
        minCropSize
      );
    }
    const normalizedRatio = s2.width / s2.height;
    const handle = drag2.handle;
    if (handle === "nw" || handle === "ne" || handle === "sw" || handle === "se") {
      return computeLockedResizeRect(
        drag2,
        clientX,
        clientY,
        imageSize,
        bounds,
        normalizedRatio,
        minCropSize
      );
    }
    const free = computeFreeResizeRect(
      drag2,
      clientX,
      clientY,
      imageSize,
      bounds,
      minCropSize
    );
    if (handle === "n" || handle === "s") {
      let newHeight2 = free.height;
      let newWidth2 = newHeight2 * normalizedRatio;
      const centerX = s2.x + s2.width / 2;
      const maxWidth = Math.min(centerX - bounds.minX, bounds.maxX - centerX) * 2;
      if (newWidth2 > maxWidth) {
        newWidth2 = maxWidth;
        newHeight2 = newWidth2 / normalizedRatio;
      }
      const minHeight = Math.max(
        minCropSize.height,
        minCropSize.width / normalizedRatio
      );
      if (newHeight2 < minHeight) {
        newHeight2 = minHeight;
        newWidth2 = newHeight2 * normalizedRatio;
      }
      const newY = handle === "n" ? s2.y + s2.height - newHeight2 : s2.y;
      return {
        x: centerX - newWidth2 / 2,
        y: newY,
        width: newWidth2,
        height: newHeight2
      };
    }
    let newWidth = free.width;
    let newHeight = newWidth / normalizedRatio;
    const centerY = s2.y + s2.height / 2;
    const maxHeight = Math.min(centerY - bounds.minY, bounds.maxY - centerY) * 2;
    if (newHeight > maxHeight) {
      newHeight = maxHeight;
      newWidth = newHeight * normalizedRatio;
    }
    const minWidth = Math.max(
      minCropSize.width,
      minCropSize.height * normalizedRatio
    );
    if (newWidth < minWidth) {
      newWidth = minWidth;
      newHeight = newWidth / normalizedRatio;
    }
    const newX = handle === "w" ? s2.x + s2.width - newWidth : s2.x;
    return {
      x: newX,
      y: centerY - newHeight / 2,
      width: newWidth,
      height: newHeight
    };
  }

  // packages/media-editor/build-module/image-editor/react/hooks/use-interaction.mjs
  var import_element230 = __toESM(require_element(), 1);

  // packages/media-editor/build-module/image-editor/core/interaction-controller.mjs
  var DOUBLE_TAP_TIME = 300;
  var DOUBLE_TAP_DISTANCE = 30;
  var ZOOM_ANIMATION_DURATION = 200;
  function getImageSizeFromState(state2) {
    return state2.image ? { width: state2.image.naturalWidth, height: state2.image.naturalHeight } : { width: 1, height: 1 };
  }
  function getTouchDistance(t1, t22) {
    const dx = t1.clientX - t22.clientX;
    const dy = t1.clientY - t22.clientY;
    return Math.sqrt(dx * dx + dy * dy);
  }
  var InteractionController = class {
    options;
    /** Current drag/zoom status. */
    isDragging = false;
    isZooming = false;
    /** Active drag state during pointer interactions. */
    drag = null;
    /** Active touch state during touch interactions. */
    touch = null;
    /** Cleanup function for active touch listeners on document. */
    touchCleanup = null;
    /**
     * Cleanup function for active pointer-drag listeners on the
     * captured element. Set while a pointer drag is in progress so
     * `destroy()` can tear the drag down cleanly if the consumer
     * unmounts mid-drag. Cleared on pointerup/lostpointercapture.
     */
    pointerCleanup = null;
    /** Last tap info for double-tap detection. */
    lastTap = null;
    /** Timer for the zoom animation state (double-tap). */
    zoomTimer;
    /** Timer for wheel gesture debounce. */
    wheelGestureTimer;
    /** Whether a wheel gesture is currently active. */
    wheelGestureActive = false;
    /** Current requestAnimationFrame ID. */
    rafId = 0;
    constructor(options) {
      this.options = options;
    }
    /** Read minZoom lazily so option changes take effect immediately. */
    get minZoom() {
      return this.options.minZoom ?? MIN_ZOOM;
    }
    /** Read maxZoom lazily so option changes take effect immediately. */
    get maxZoom() {
      return this.options.maxZoom ?? MAX_ZOOM;
    }
    /** Read zoomSpeed lazily so option changes take effect immediately. */
    get zoomSpeed() {
      return this.options.zoomSpeed ?? DEFAULT_WHEEL_ZOOM_SPEED;
    }
    /** Read keyboardStep lazily so option changes take effect immediately. */
    get keyboardStep() {
      return this.options.keyboardStep ?? DEFAULT_KEYBOARD_STEP;
    }
    /**
     * Get the keyboard pan step, including modifier-based coarse movement.
     *
     * @param event The native KeyboardEvent.
     * @return The normalized pan step.
     */
    getKeyboardStep(event) {
      return event.shiftKey ? this.keyboardStep * KEYBOARD_SHIFT_STEP_MULTIPLIER : this.keyboardStep;
    }
    /** Read doubleTapZoom lazily so option changes take effect immediately. */
    get doubleTapZoom() {
      return this.options.doubleTapZoom ?? 2;
    }
    /**
     * Update the drag/zoom status and notify via callback if changed.
     *
     * @param update Partial status with isDragging and/or isZooming.
     */
    setStatus(update4) {
      let changed = false;
      if (update4.isDragging !== void 0 && update4.isDragging !== this.isDragging) {
        this.isDragging = update4.isDragging;
        changed = true;
      }
      if (update4.isZooming !== void 0 && update4.isZooming !== this.isZooming) {
        this.isZooming = update4.isZooming;
        changed = true;
      }
      if (changed) {
        this.options.onStatusChange?.({
          isDragging: this.isDragging,
          isZooming: this.isZooming
        });
      }
    }
    /**
     * Handle a pointer-down event on the container element.
     *
     * Initiates a drag (pan) interaction. Captures the pointer on the
     * provided element and registers pointermove/pointerup/lostpointercapture
     * listeners for the duration of the drag.
     *
     * @param e  The native PointerEvent.
     * @param el The DOM element to capture the pointer on.
     */
    handlePointerDown(e2, el) {
      if (e2.button !== 0) {
        return;
      }
      if (e2.pointerType === "touch") {
        return;
      }
      e2.preventDefault();
      const ownerDoc = el.ownerDocument;
      if (ownerDoc?.activeElement instanceof HTMLElement && ownerDoc.activeElement !== el) {
        ownerDoc.activeElement.blur();
      }
      el.focus();
      el.setPointerCapture(e2.pointerId);
      this.setStatus({ isDragging: true });
      this.options.onGestureStart?.();
      const currentState = this.options.getState();
      this.drag = {
        startX: e2.clientX,
        startY: e2.clientY,
        startPanX: currentState.pan.x,
        startPanY: currentState.pan.y
      };
      const onPointerMove = (moveEvent) => {
        const drag2 = this.drag;
        if (!drag2) {
          return;
        }
        const pe = moveEvent;
        cancelAnimationFrame(this.rafId);
        this.rafId = requestAnimationFrame(() => {
          const s2 = this.options.getState();
          const imgSize = this.options.getImageSize();
          const containerSize = this.options.getContainerSize();
          const panSize = imgSize ?? containerSize;
          const deltaX = panSize.width > 0 ? (pe.clientX - drag2.startX) / panSize.width : 0;
          const deltaY = panSize.height > 0 ? (pe.clientY - drag2.startY) / panSize.height : 0;
          const { pan: newCrop } = restrictPanZoom(
            {
              ...s2,
              pan: {
                x: drag2.startPanX + deltaX,
                y: drag2.startPanY + deltaY
              }
            },
            getImageSizeFromState(s2),
            s2.cropRect
          );
          this.options.actions.setPan(newCrop);
        });
      };
      const removeListeners = () => {
        el.removeEventListener("pointermove", onPointerMove);
        el.removeEventListener("pointerup", onPointerUp);
        el.removeEventListener("lostpointercapture", onPointerUp);
      };
      const onPointerUp = () => {
        this.setStatus({ isDragging: false });
        this.options.onGestureEnd?.();
        this.drag = null;
        cancelAnimationFrame(this.rafId);
        removeListeners();
        this.pointerCleanup = null;
      };
      el.addEventListener("pointermove", onPointerMove);
      el.addEventListener("pointerup", onPointerUp);
      el.addEventListener("lostpointercapture", onPointerUp);
      this.pointerCleanup = removeListeners;
    }
    /**
     * Handle a wheel event on the container element.
     *
     * Implements focal-point zoom: the point under the cursor stays
     * stationary on screen while the zoom level changes.
     *
     * Must be registered with `{ passive: false }` to allow preventDefault.
     *
     * @param e The native WheelEvent.
     */
    handleWheel(e2) {
      e2.preventDefault();
      if (this.drag) {
        return;
      }
      if (!this.wheelGestureActive) {
        this.wheelGestureActive = true;
        this.options.onGestureStart?.();
      }
      clearTimeout(this.wheelGestureTimer);
      this.wheelGestureTimer = setTimeout(() => {
        this.wheelGestureActive = false;
        this.options.onGestureEnd?.();
      }, DOUBLE_TAP_TIME);
      const s2 = this.options.getState();
      const delta = -e2.deltaY * this.zoomSpeed;
      const newZoom = Math.min(
        this.maxZoom,
        Math.max(this.minZoom, s2.zoom + delta)
      );
      if (newZoom === s2.zoom) {
        return;
      }
      const containerSize = this.options.getContainerSize();
      const imgSize = this.options.getImageSize();
      const visSize = imgSize ?? containerSize;
      const target = e2.currentTarget;
      const rect = target instanceof Element ? target.getBoundingClientRect() : void 0;
      if (visSize.width > 0 && visSize.height > 0 && rect) {
        const fx = e2.clientX - rect.left - containerSize.width / 2;
        const fy = e2.clientY - rect.top - containerSize.height / 2;
        const zoomRatio = 1 - newZoom / s2.zoom;
        const focalNormX = fx / visSize.width;
        const focalNormY = fy / visSize.height;
        const newCropX = s2.pan.x + (focalNormX - s2.pan.x) * zoomRatio;
        const newCropY = s2.pan.y + (focalNormY - s2.pan.y) * zoomRatio;
        const { pan: clampedCrop } = restrictPanZoom(
          { ...s2, zoom: newZoom, pan: { x: newCropX, y: newCropY } },
          getImageSizeFromState(s2),
          s2.cropRect
        );
        this.options.actions.setZoomAtPoint(newZoom, clampedCrop);
      } else {
        this.options.actions.setZoom(newZoom);
      }
    }
    /**
     * Handle a touch-start event on the container element.
     *
     * Supports single-finger pan, two-finger pinch zoom, and
     * double-tap to toggle between fit and 2x zoom. Registers
     * touchmove/touchend/touchcancel on the provided document for the
     * duration of the gesture.
     *
     * @param e             The native TouchEvent.
     * @param containerRect The bounding rect of the container element.
     * @param doc           The document to register move/end listeners on.
     *                      Defaults to globalThis.document. Pass the iframe's
     *                      contentDocument when running inside an iframe.
     */
    handleTouchStart(e2, containerRect, doc = document) {
      if (this.touch && e2.touches.length === 2) {
        const s2 = this.options.getState();
        const distance2 = getTouchDistance(e2.touches[0], e2.touches[1]);
        const midX = (e2.touches[0].clientX + e2.touches[1].clientX) / 2;
        const midY = (e2.touches[0].clientY + e2.touches[1].clientY) / 2;
        this.touch.didPinch = true;
        this.touch.startDistance = distance2;
        this.touch.startZoom = s2.zoom;
        this.touch.startPanX = s2.pan.x;
        this.touch.startPanY = s2.pan.y;
        this.touch.startMidX = midX;
        this.touch.startMidY = midY;
        this.touch.containerRect = containerRect;
        this.setStatus({ isDragging: false });
        return;
      }
      if (e2.touches.length === 1) {
        const tapX = e2.touches[0].clientX;
        const tapY = e2.touches[0].clientY;
        if (this.tryDoubleTap(e2, tapX, tapY, containerRect)) {
          return;
        }
        const currentState = this.options.getState();
        this.touch = {
          startDistance: 0,
          startZoom: currentState.zoom,
          lastTouchX: e2.touches[0].clientX,
          lastTouchY: e2.touches[0].clientY,
          startPanX: currentState.pan.x,
          startPanY: currentState.pan.y,
          containerRect,
          startMidX: 0,
          startMidY: 0,
          didPinch: false,
          moved: false
        };
        this.options.onGestureStart?.();
      } else if (e2.touches.length === 2) {
        const currentState = this.options.getState();
        const distance2 = getTouchDistance(e2.touches[0], e2.touches[1]);
        const midX = (e2.touches[0].clientX + e2.touches[1].clientX) / 2;
        const midY = (e2.touches[0].clientY + e2.touches[1].clientY) / 2;
        this.touch = {
          startDistance: distance2,
          startZoom: currentState.zoom,
          lastTouchX: 0,
          lastTouchY: 0,
          startPanX: currentState.pan.x,
          startPanY: currentState.pan.y,
          containerRect,
          startMidX: midX,
          startMidY: midY,
          didPinch: true,
          moved: false
        };
        this.options.onGestureStart?.();
      }
      const onTouchEnd = () => {
        this.touch = null;
        this.touchCleanup = null;
        cancelAnimationFrame(this.rafId);
        doc.removeEventListener("touchmove", this.handleTouchMove);
        doc.removeEventListener("touchend", onTouchEnd);
        doc.removeEventListener("touchcancel", onTouchEnd);
        this.setStatus({ isDragging: false });
        this.options.onGestureEnd?.();
      };
      this.touchCleanup?.();
      doc.addEventListener("touchmove", this.handleTouchMove, {
        passive: false
      });
      doc.addEventListener("touchend", onTouchEnd);
      doc.addEventListener("touchcancel", onTouchEnd);
      this.touchCleanup = onTouchEnd;
    }
    // Handle a touchmove event during an active touch gesture. Decides pinch
    // vs. pan based on current `moveEvent.touches.length`, so the gesture
    // can transition between modes without timing sensitivity (e.g. fingers
    // landing 0ms vs 200ms apart). Arrow-property binding so `this` stays
    // attached when used as an event listener.
    handleTouchMove = (moveEvent) => {
      const touch = this.touch;
      if (!touch) {
        return;
      }
      moveEvent.preventDefault();
      cancelAnimationFrame(this.rafId);
      this.rafId = requestAnimationFrame(() => {
        const s2 = this.options.getState();
        if (moveEvent.touches.length === 2) {
          if (!touch.didPinch) {
            touch.didPinch = true;
            touch.startDistance = getTouchDistance(
              moveEvent.touches[0],
              moveEvent.touches[1]
            );
            touch.startZoom = s2.zoom;
            touch.startPanX = s2.pan.x;
            touch.startPanY = s2.pan.y;
            touch.startMidX = (moveEvent.touches[0].clientX + moveEvent.touches[1].clientX) / 2;
            touch.startMidY = (moveEvent.touches[0].clientY + moveEvent.touches[1].clientY) / 2;
            this.setStatus({ isDragging: false });
            return;
          }
          const latestContainerSize = this.options.getContainerSize();
          const latestImageSize = this.options.getImageSize();
          const t0 = moveEvent.touches[0];
          const t1 = moveEvent.touches[1];
          const currentDistance = getTouchDistance(t0, t1);
          const ratio = currentDistance / touch.startDistance;
          const newZoom = Math.min(
            this.maxZoom,
            Math.max(this.minZoom, touch.startZoom * ratio)
          );
          const visSize = latestImageSize ?? latestContainerSize;
          const rect = touch.containerRect;
          if (visSize.width > 0 && visSize.height > 0 && rect) {
            const mx = (t0.clientX + t1.clientX) / 2 - rect.left - latestContainerSize.width / 2;
            const my = (t0.clientY + t1.clientY) / 2 - rect.top - latestContainerSize.height / 2;
            const startMx = touch.startMidX - rect.left - latestContainerSize.width / 2;
            const startMy = touch.startMidY - rect.top - latestContainerSize.height / 2;
            const panDx = visSize.width > 0 ? (mx - startMx) / visSize.width : 0;
            const panDy = visSize.height > 0 ? (my - startMy) / visSize.height : 0;
            const zoomRatio = touch.startZoom !== 0 ? 1 - newZoom / touch.startZoom : 0;
            const startFocalNormX = startMx / visSize.width;
            const startFocalNormY = startMy / visSize.height;
            const newCropX = touch.startPanX + panDx + (startFocalNormX - touch.startPanX) * zoomRatio;
            const newCropY = touch.startPanY + panDy + (startFocalNormY - touch.startPanY) * zoomRatio;
            const { pan: clampedCrop } = restrictPanZoom(
              {
                ...s2,
                zoom: newZoom,
                pan: { x: newCropX, y: newCropY }
              },
              getImageSizeFromState(s2),
              s2.cropRect
            );
            this.options.actions.setZoomAtPoint(newZoom, clampedCrop);
          } else if (newZoom !== s2.zoom) {
            this.options.actions.setZoom(newZoom);
          }
        } else if (moveEvent.touches.length === 1 && !touch.didPinch) {
          if (!touch.moved) {
            touch.moved = true;
            this.setStatus({ isDragging: true });
          }
          const panImageSize = this.options.getImageSize();
          const panContainerSize = this.options.getContainerSize();
          const panSize = panImageSize ?? panContainerSize;
          const deltaX = panSize.width > 0 ? (moveEvent.touches[0].clientX - touch.lastTouchX) / panSize.width : 0;
          const deltaY = panSize.height > 0 ? (moveEvent.touches[0].clientY - touch.lastTouchY) / panSize.height : 0;
          const { pan: newCrop } = restrictPanZoom(
            {
              ...s2,
              pan: {
                x: touch.startPanX + deltaX,
                y: touch.startPanY + deltaY
              }
            },
            getImageSizeFromState(s2),
            s2.cropRect
          );
          this.options.actions.setPan(newCrop);
        }
      });
    };
    // Handle double-tap-to-toggle-zoom. On a second tap within the configured
    // time/distance threshold, toggles zoom between `minZoom` and
    // `doubleTapZoom` around the tap point and dispatches. Returns `true` if
    // the tap was handled as a double-tap (caller should early-return),
    // `false` otherwise (caller proceeds with normal single-tap handling).
    // Either way, records the tap for next time.
    tryDoubleTap(e2, tapX, tapY, containerRect) {
      const now = Date.now();
      const lastTap = this.lastTap;
      if (!lastTap) {
        this.lastTap = { time: now, x: tapX, y: tapY };
        return false;
      }
      const timeDelta = now - lastTap.time;
      const distDelta = Math.sqrt(
        (tapX - lastTap.x) ** 2 + (tapY - lastTap.y) ** 2
      );
      const isDoubleTap = timeDelta < DOUBLE_TAP_TIME && distDelta < DOUBLE_TAP_DISTANCE;
      if (!isDoubleTap) {
        this.lastTap = { time: now, x: tapX, y: tapY };
        return false;
      }
      e2.preventDefault();
      this.lastTap = null;
      const currentState = this.options.getState();
      const containerSize = this.options.getContainerSize();
      const imgSize = this.options.getImageSize();
      const targetZoom = currentState.zoom > (this.minZoom + this.doubleTapZoom) / 2 ? this.minZoom : this.doubleTapZoom;
      const visSize = imgSize ?? containerSize;
      this.setStatus({ isZooming: true });
      clearTimeout(this.zoomTimer);
      this.zoomTimer = setTimeout(() => {
        this.setStatus({ isZooming: false });
      }, ZOOM_ANIMATION_DURATION);
      this.options.onGestureStart?.();
      if (visSize.width > 0 && visSize.height > 0) {
        const fx = tapX - containerRect.left - containerSize.width / 2;
        const fy = tapY - containerRect.top - containerSize.height / 2;
        const zoomRatio = 1 - targetZoom / currentState.zoom;
        const focalNormX = fx / visSize.width;
        const focalNormY = fy / visSize.height;
        const newCropX = currentState.pan.x + (focalNormX - currentState.pan.x) * zoomRatio;
        const newCropY = currentState.pan.y + (focalNormY - currentState.pan.y) * zoomRatio;
        const { pan: clampedCrop } = restrictPanZoom(
          {
            ...currentState,
            zoom: targetZoom,
            pan: { x: newCropX, y: newCropY }
          },
          getImageSizeFromState(currentState),
          currentState.cropRect
        );
        this.options.actions.setZoomAtPoint(targetZoom, clampedCrop);
      } else {
        this.options.actions.setZoom(targetZoom);
      }
      this.options.onGestureEnd?.();
      return true;
    }
    /**
     * Handle a keydown event on the container element.
     *
     * Supports arrow keys for panning, +/- for zoom, and r/R for rotation.
     *
     * @param e The native KeyboardEvent.
     */
    handleKeyDown(e2) {
      const currentState = this.options.getState();
      switch (e2.key) {
        case "ArrowUp": {
          e2.preventDefault();
          const keyboardStep = this.getKeyboardStep(e2);
          const { pan: newCrop } = restrictPanZoom(
            {
              ...currentState,
              pan: {
                x: currentState.pan.x,
                y: currentState.pan.y + keyboardStep
              }
            },
            getImageSizeFromState(currentState),
            currentState.cropRect
          );
          this.options.actions.setPan(newCrop);
          break;
        }
        case "ArrowDown": {
          e2.preventDefault();
          const keyboardStep = this.getKeyboardStep(e2);
          const { pan: newCrop } = restrictPanZoom(
            {
              ...currentState,
              pan: {
                x: currentState.pan.x,
                y: currentState.pan.y - keyboardStep
              }
            },
            getImageSizeFromState(currentState),
            currentState.cropRect
          );
          this.options.actions.setPan(newCrop);
          break;
        }
        case "ArrowLeft": {
          e2.preventDefault();
          const keyboardStep = this.getKeyboardStep(e2);
          const { pan: newCrop } = restrictPanZoom(
            {
              ...currentState,
              pan: {
                x: currentState.pan.x + keyboardStep,
                y: currentState.pan.y
              }
            },
            getImageSizeFromState(currentState),
            currentState.cropRect
          );
          this.options.actions.setPan(newCrop);
          break;
        }
        case "ArrowRight": {
          e2.preventDefault();
          const keyboardStep = this.getKeyboardStep(e2);
          const { pan: newCrop } = restrictPanZoom(
            {
              ...currentState,
              pan: {
                x: currentState.pan.x - keyboardStep,
                y: currentState.pan.y
              }
            },
            getImageSizeFromState(currentState),
            currentState.cropRect
          );
          this.options.actions.setPan(newCrop);
          break;
        }
        case "+":
        case "=": {
          e2.preventDefault();
          const newZoom = Math.min(
            this.maxZoom,
            Math.max(this.minZoom, currentState.zoom + 0.5)
          );
          this.options.actions.setZoom(newZoom);
          break;
        }
        case "-":
        case "_": {
          e2.preventDefault();
          const newZoom = Math.min(
            this.maxZoom,
            Math.max(this.minZoom, currentState.zoom - 0.5)
          );
          this.options.actions.setZoom(newZoom);
          break;
        }
        case "r":
        case "R": {
          if (e2.metaKey || e2.ctrlKey || e2.altKey) {
            break;
          }
          e2.preventDefault();
          this.options.actions.snapRotate90(e2.shiftKey ? -1 : 1);
          break;
        }
        case "h":
        case "H": {
          if (e2.metaKey || e2.ctrlKey || e2.altKey || e2.shiftKey) {
            break;
          }
          e2.preventDefault();
          this.options.actions.toggleFlip?.("horizontal");
          break;
        }
        case "v":
        case "V": {
          if (e2.metaKey || e2.ctrlKey || e2.altKey || e2.shiftKey) {
            break;
          }
          e2.preventDefault();
          this.options.actions.toggleFlip?.("vertical");
          break;
        }
      }
    }
    /**
     * Clean up all timers, animation frames, and active touch listeners.
     *
     * Must be called when the controller is no longer needed (e.g., on
     * component unmount or element removal).
     */
    destroy() {
      cancelAnimationFrame(this.rafId);
      clearTimeout(this.zoomTimer);
      clearTimeout(this.wheelGestureTimer);
      this.touchCleanup?.();
      this.touchCleanup = null;
      this.pointerCleanup?.();
      this.pointerCleanup = null;
      this.drag = null;
      this.touch = null;
      this.lastTap = null;
      this.wheelGestureActive = false;
      this.isDragging = false;
      this.isZooming = false;
    }
  };

  // packages/media-editor/build-module/image-editor/react/hooks/use-interaction.mjs
  var KEYBOARD_INTERACTION_IDLE_MS = 300;
  function isHandledKeyboardPan(event) {
    switch (event.key) {
      case "ArrowUp":
      case "ArrowDown":
      case "ArrowLeft":
      case "ArrowRight":
        return true;
      default:
        return false;
    }
  }
  function isHandledKeyboardZoom(event) {
    switch (event.key) {
      case "+":
      case "=":
      case "-":
      case "_":
        return true;
      default:
        return false;
    }
  }
  function useInteraction(state2, actions2, containerSize, imageSize, options) {
    const [isDragging, setIsDragging] = (0, import_element230.useState)(false);
    const [isZooming, setIsZooming] = (0, import_element230.useState)(false);
    const [isGestureActive, setIsGestureActive] = (0, import_element230.useState)(false);
    const [isKeyboardPanning, setIsKeyboardPanning] = (0, import_element230.useState)(false);
    const keyboardInteractionTimerRef = (0, import_element230.useRef)();
    const isKeyboardGestureActiveRef = (0, import_element230.useRef)(false);
    const stateRef = (0, import_element230.useRef)(state2);
    stateRef.current = state2;
    const containerSizeRef = (0, import_element230.useRef)(containerSize);
    containerSizeRef.current = containerSize;
    const imageSizeRef = (0, import_element230.useRef)(imageSize);
    imageSizeRef.current = imageSize;
    const optionsRef = (0, import_element230.useRef)(options);
    optionsRef.current = options;
    const actionsRef = (0, import_element230.useRef)(actions2);
    actionsRef.current = actions2;
    const controllerRef = (0, import_element230.useRef)(null);
    const startPlacementGesture = (0, import_element230.useCallback)(() => {
      setIsGestureActive(true);
    }, []);
    const stopPlacementGesture = (0, import_element230.useCallback)(() => {
      setIsGestureActive(false);
    }, []);
    const signalKeyboardGesture = (0, import_element230.useCallback)(() => {
      if (!isKeyboardGestureActiveRef.current) {
        isKeyboardGestureActiveRef.current = true;
        optionsRef.current?.onGestureStart?.();
      }
      clearTimeout(keyboardInteractionTimerRef.current);
      keyboardInteractionTimerRef.current = setTimeout(() => {
        isKeyboardGestureActiveRef.current = false;
        setIsKeyboardPanning(false);
        optionsRef.current?.onGestureEnd?.();
      }, KEYBOARD_INTERACTION_IDLE_MS);
    }, []);
    (0, import_element230.useEffect)(() => {
      return () => {
        clearTimeout(keyboardInteractionTimerRef.current);
      };
    }, []);
    (0, import_element230.useEffect)(() => {
      const controller = new InteractionController({
        getState: () => stateRef.current,
        actions: {
          setPan: (pan) => actionsRef.current.setPan(pan),
          setZoom: (zoom) => actionsRef.current.setZoom(zoom),
          setZoomAtPoint: (zoom, pan) => actionsRef.current.setZoomAtPoint(zoom, pan),
          snapRotate90: (direction) => actionsRef.current.snapRotate90(direction),
          toggleFlip: (direction) => actionsRef.current.toggleFlip?.(direction)
        },
        getContainerSize: () => containerSizeRef.current,
        getImageSize: () => imageSizeRef.current,
        get minZoom() {
          return optionsRef.current?.minZoom;
        },
        get maxZoom() {
          return optionsRef.current?.maxZoom;
        },
        get zoomSpeed() {
          return optionsRef.current?.zoomSpeed;
        },
        get keyboardStep() {
          return optionsRef.current?.keyboardStep;
        },
        get doubleTapZoom() {
          return optionsRef.current?.doubleTapZoom;
        },
        onGestureStart: () => {
          startPlacementGesture();
          optionsRef.current?.onGestureStart?.();
        },
        onGestureEnd: () => {
          stopPlacementGesture();
          optionsRef.current?.onGestureEnd?.();
        },
        onStatusChange: (status) => {
          setIsDragging(status.isDragging);
          setIsZooming(status.isZooming);
        }
      });
      controllerRef.current = controller;
      return () => {
        controller.destroy();
        controllerRef.current = null;
      };
    }, [startPlacementGesture, stopPlacementGesture]);
    const isDisabled = options?.disabled ?? false;
    (0, import_element230.useEffect)(() => {
      if (!isDisabled) {
        return;
      }
      controllerRef.current?.destroy();
      setIsDragging(false);
      setIsZooming(false);
      setIsKeyboardPanning(false);
      const wasGestureOpen = isGestureActive || isKeyboardGestureActiveRef.current;
      if (isKeyboardGestureActiveRef.current) {
        isKeyboardGestureActiveRef.current = false;
        clearTimeout(keyboardInteractionTimerRef.current);
      }
      stopPlacementGesture();
      if (wasGestureOpen) {
        optionsRef.current?.onGestureEnd?.();
      }
    }, [isDisabled, isGestureActive, stopPlacementGesture]);
    const onPointerDown = (0, import_element230.useCallback)((e2) => {
      if (optionsRef.current?.disabled) {
        return;
      }
      const el = e2.currentTarget;
      controllerRef.current?.handlePointerDown(e2.nativeEvent, el);
    }, []);
    const onTouchStart = (0, import_element230.useCallback)((e2) => {
      if (optionsRef.current?.disabled) {
        return;
      }
      const el = e2.currentTarget;
      const rect = el.getBoundingClientRect();
      controllerRef.current?.handleTouchStart(
        e2.nativeEvent,
        rect,
        el.ownerDocument
      );
    }, []);
    const onKeyDown = (0, import_element230.useCallback)(
      (e2) => {
        if (optionsRef.current?.disabled) {
          return;
        }
        if (isHandledKeyboardPan(e2.nativeEvent)) {
          setIsKeyboardPanning(true);
          signalKeyboardGesture();
        } else if (isHandledKeyboardZoom(e2.nativeEvent)) {
          signalKeyboardGesture();
        }
        controllerRef.current?.handleKeyDown(e2.nativeEvent);
      },
      [signalKeyboardGesture]
    );
    const onWheelNative = (0, import_element230.useCallback)((e2) => {
      if (optionsRef.current?.disabled) {
        return;
      }
      controllerRef.current?.handleWheel(e2);
    }, []);
    return {
      handlers: {
        onPointerDown,
        onTouchStart,
        onKeyDown
      },
      onWheelNative,
      isDragging,
      isZooming,
      isPlacementActive: isGestureActive || isKeyboardPanning || isZooming
    };
  }

  // packages/media-editor/build-module/image-editor/react/hooks/use-transform-style.mjs
  var import_element231 = __toESM(require_element(), 1);

  // packages/media-editor/build-module/image-editor/core/transform-style.mjs
  var IDENTITY_MATRIX_STYLE = "matrix(1, 0, 0, 1, 0, 0)";
  function computeTransformStyle(state2, imageSize) {
    if (!isValidSize(imageSize)) {
      return IDENTITY_MATRIX_STYLE;
    }
    const safeState = sanitizeCropperState(state2);
    const translateX = safeState.pan.x * imageSize.width;
    const translateY = safeState.pan.y * imageSize.height;
    const rad = degreesToRadians(safeState.rotation);
    const cos = Math.cos(rad);
    const sin = Math.sin(rad);
    const sx = safeState.flip.horizontal ? -1 : 1;
    const sy = safeState.flip.vertical ? -1 : 1;
    const z = safeState.zoom;
    const a2 = sx * cos * z;
    const b2 = sy * sin * z;
    const c6 = -sx * sin * z;
    const d2 = sy * cos * z;
    return `matrix(${a2}, ${b2}, ${c6}, ${d2}, ${translateX}, ${translateY})`;
  }

  // packages/media-editor/build-module/image-editor/react/hooks/use-transform-style.mjs
  function useTransformStyle(state2, imageSize) {
    return (0, import_element231.useMemo)(
      () => computeTransformStyle(state2, imageSize),
      [state2, imageSize]
    );
  }

  // packages/media-editor/build-module/image-editor/react/hooks/use-aria-announcer.mjs
  var import_a11y8 = __toESM(require_a11y(), 1);
  var import_element232 = __toESM(require_element(), 1);
  var import_i18n145 = __toESM(require_i18n(), 1);

  // packages/media-editor/build-module/image-editor/core/source-region.mjs
  function getSourceRegion(state2, imageSize) {
    const safeState = sanitizeCropperState(state2);
    if (!isValidSize(imageSize)) {
      return {
        x: 0,
        y: 0,
        width: 0,
        height: 0,
        rotation: safeState.rotation,
        flip: { ...safeState.flip },
        zoom: safeState.zoom
      };
    }
    const syntheticContainer = { width: 1e3, height: 1e3 };
    const camera = createCamera(safeState, syntheticContainer, imageSize);
    const inv = mat2d_exports.create();
    mat2d_exports.invert(inv, camera);
    const baseCamera = createCamera(
      { ...safeState, pan: { x: 0, y: 0 }, zoom: 1 },
      syntheticContainer,
      imageSize
    );
    const visibleBounds = getVisibleBounds(baseCamera);
    const cropRect = safeState.cropRect;
    const cropCenterScreenX = visibleBounds.left + (cropRect.x + cropRect.width / 2) * visibleBounds.width;
    const cropCenterScreenY = visibleBounds.top + (cropRect.y + cropRect.height / 2) * visibleBounds.height;
    const srcCenter = vec2_exports.create();
    vec2_exports.transformMat2d(
      srcCenter,
      [cropCenterScreenX, cropCenterScreenY],
      inv
    );
    const snapRotation = Math.round(safeState.rotation / 90) * 90;
    const { width: rotW, height: rotH } = getRotatedBBox(
      imageSize.width,
      imageSize.height,
      snapRotation
    );
    const sourceW = cropRect.width * rotW / safeState.zoom;
    const sourceH = cropRect.height * rotH / safeState.zoom;
    return {
      x: srcCenter[0] * imageSize.width - sourceW / 2,
      y: srcCenter[1] * imageSize.height - sourceH / 2,
      width: sourceW,
      height: sourceH,
      rotation: safeState.rotation,
      flip: { ...safeState.flip },
      zoom: safeState.zoom
    };
  }
  function getCropRectFromSourceRegion(state2, imageSize, region) {
    if (!isValidSize(imageSize) || region.width <= 0 || region.height <= 0) {
      return null;
    }
    const safeState = sanitizeCropperState(state2);
    const syntheticContainer = { width: 1e3, height: 1e3 };
    const baseCamera = createCamera(
      { ...safeState, pan: { x: 0, y: 0 }, zoom: 1 },
      syntheticContainer,
      imageSize
    );
    const visibleBounds = getVisibleBounds(baseCamera);
    if (visibleBounds.width <= 0 || visibleBounds.height <= 0) {
      return null;
    }
    const sourceCenter = vec2_exports.fromValues(
      (region.x + region.width / 2) / imageSize.width,
      (region.y + region.height / 2) / imageSize.height
    );
    const screenCenter = vec2_exports.create();
    const camera = createCamera(safeState, syntheticContainer, imageSize);
    vec2_exports.transformMat2d(screenCenter, sourceCenter, camera);
    const snapRotation = Math.round(safeState.rotation / 90) * 90;
    const { width: rotW, height: rotH } = getRotatedBBox(
      imageSize.width,
      imageSize.height,
      snapRotation
    );
    if (rotW <= 0 || rotH <= 0) {
      return null;
    }
    const width = region.width * safeState.zoom / rotW;
    const height = region.height * safeState.zoom / rotH;
    const centerX = (screenCenter[0] - visibleBounds.left) / visibleBounds.width;
    const centerY = (screenCenter[1] - visibleBounds.top) / visibleBounds.height;
    return {
      x: centerX - width / 2,
      y: centerY - height / 2,
      width,
      height
    };
  }
  var CARDINAL_ROTATION_EPSILON = 1e-6;
  function isCardinalRotation(rotation) {
    const normalizedRotation = normalizeRotation(rotation);
    const nearestCardinal = Math.round(normalizedRotation / 90) * 90;
    return Math.abs(normalizedRotation - nearestCardinal) < CARDINAL_ROTATION_EPSILON;
  }
  function snapCropRectToSourcePixels(state2, imageSize, cropRect, handle) {
    const safeState = sanitizeCropperState(state2);
    if (!isCardinalRotation(safeState.rotation)) {
      return cropRect;
    }
    return snapCropRectEdgesToSourcePixels(safeState, imageSize, cropRect, {
      left: handle.includes("w"),
      top: handle.includes("n"),
      right: handle.includes("e"),
      bottom: handle.includes("s")
    });
  }
  function snapCropRectToSourcePixelGrid(state2, imageSize, cropRect) {
    return snapCropRectEdgesToSourcePixels(state2, imageSize, cropRect, {
      left: true,
      top: true,
      right: true,
      bottom: true
    });
  }
  function snapCropRectEdgesToSourcePixels(state2, imageSize, cropRect, edges) {
    if (!isValidSize(imageSize)) {
      return cropRect;
    }
    const stateWithCrop = sanitizeCropperState({ ...state2, cropRect });
    const region = getSourceRegion(stateWithCrop, imageSize);
    const shouldSnapX = edges.left || edges.right;
    const shouldSnapY = edges.top || edges.bottom;
    const left = edges.left ? Math.round(region.x) : region.x;
    const top = edges.top ? Math.round(region.y) : region.y;
    const right = edges.right ? Math.round(region.x + region.width) : region.x + region.width;
    const bottom = edges.bottom ? Math.round(region.y + region.height) : region.y + region.height;
    if (right <= left || bottom <= top) {
      return cropRect;
    }
    const snappedCropRect = getCropRectFromSourceRegion(
      stateWithCrop,
      imageSize,
      {
        ...region,
        x: left,
        y: top,
        width: right - left,
        height: bottom - top
      }
    );
    if (!snappedCropRect) {
      return cropRect;
    }
    return {
      x: shouldSnapX ? snappedCropRect.x : cropRect.x,
      y: shouldSnapY ? snappedCropRect.y : cropRect.y,
      width: shouldSnapX ? snappedCropRect.width : cropRect.width,
      height: shouldSnapY ? snappedCropRect.height : cropRect.height
    };
  }

  // packages/media-editor/build-module/image-editor/react/hooks/use-aria-announcer.mjs
  var ARIA_DEBOUNCE_MS = 300;
  function getFlipAnnouncement(state2, previousState) {
    if (!previousState || previousState.flip.horizontal === state2.flip.horizontal && previousState.flip.vertical === state2.flip.vertical) {
      return void 0;
    }
    const { horizontal, vertical } = state2.flip;
    if (horizontal && vertical) {
      return (0, import_i18n145.__)("Flipped horizontally and vertically");
    }
    if (horizontal) {
      return (0, import_i18n145.__)("Flipped horizontally");
    }
    if (vertical) {
      return (0, import_i18n145.__)("Flipped vertically");
    }
    return (0, import_i18n145.__)("Flip removed");
  }
  function getRotationAnnouncement(state2, previousState) {
    if (previousState && Math.round(previousState.rotation) === Math.round(state2.rotation)) {
      return void 0;
    }
    const singleFlip = state2.flip.horizontal !== state2.flip.vertical;
    const visualDir = singleFlip ? -1 : 1;
    let visualRotation = Math.round(state2.rotation) * visualDir % 360;
    if (visualRotation > 180) {
      visualRotation -= 360;
    }
    if (visualRotation <= -180) {
      visualRotation += 360;
    }
    if (visualRotation === 0) {
      return previousState ? (0, import_i18n145.__)("Rotation 0 degrees") : void 0;
    }
    if (visualRotation > 0) {
      return (0, import_i18n145.sprintf)(
        /* translators: %d: rotation angle in degrees. */
        (0, import_i18n145.__)("Rotated %d degrees clockwise"),
        visualRotation
      );
    }
    return (0, import_i18n145.sprintf)(
      /* translators: %d: rotation angle in degrees. */
      (0, import_i18n145.__)("Rotated %d degrees counterclockwise"),
      Math.abs(visualRotation)
    );
  }
  function getCropAnnouncement(state2, previousState) {
    if (!state2.image) {
      return void 0;
    }
    const imageSize = {
      width: state2.image.naturalWidth,
      height: state2.image.naturalHeight
    };
    const region = getSourceRegion(state2, imageSize);
    if (previousState?.image) {
      const previousRegion = getSourceRegion(
        { ...state2, cropRect: previousState.cropRect },
        imageSize
      );
      if (Math.round(previousRegion.width) === Math.round(region.width) && Math.round(previousRegion.height) === Math.round(region.height)) {
        return void 0;
      }
    }
    return (0, import_i18n145.sprintf)(
      /* translators: 1: crop width in pixels, 2: crop height in pixels. */
      (0, import_i18n145.__)("Crop %1$d by %2$d pixels"),
      Math.round(region.width),
      Math.round(region.height)
    );
  }
  function getZoomAnnouncement(state2, previousState) {
    if (previousState && Math.round(previousState.zoom * 100) === Math.round(state2.zoom * 100)) {
      return void 0;
    }
    return (0, import_i18n145.sprintf)(
      /* translators: %d: zoom level as a percentage. */
      (0, import_i18n145.__)("Zoom %d%%"),
      Math.round(state2.zoom * 100)
    );
  }
  function buildAnnouncement(state2, previousState) {
    const flip4 = getFlipAnnouncement(state2, previousState);
    if (flip4) {
      return flip4;
    }
    const parts = [
      getRotationAnnouncement(state2, previousState),
      getZoomAnnouncement(state2, previousState),
      getCropAnnouncement(state2, previousState)
    ].filter((part) => part !== void 0);
    return parts.join(", ");
  }
  function useAriaAnnouncer(state2) {
    const timerRef = (0, import_element232.useRef)();
    const prevMessageRef = (0, import_element232.useRef)("");
    const prevStateRef = (0, import_element232.useRef)(null);
    const latestStateRef = (0, import_element232.useRef)(state2);
    (0, import_element232.useLayoutEffect)(() => {
      latestStateRef.current = state2;
    }, [state2]);
    (0, import_element232.useEffect)(() => {
      clearTimeout(timerRef.current);
      timerRef.current = setTimeout(() => {
        const current = latestStateRef.current;
        const msg = buildAnnouncement(current, prevStateRef.current);
        prevStateRef.current = current;
        if (msg !== prevMessageRef.current) {
          prevMessageRef.current = msg;
          (0, import_a11y8.speak)(msg);
        }
      }, ARIA_DEBOUNCE_MS);
      return () => {
        clearTimeout(timerRef.current);
      };
    }, [
      state2.zoom,
      state2.rotation,
      state2.cropRect.width,
      state2.cropRect.height,
      state2.flip.horizontal,
      state2.flip.vertical
    ]);
  }

  // packages/media-editor/build-module/image-editor/react/components/stencils/rectangle-stencil.mjs
  var import_element233 = __toESM(require_element(), 1);
  var import_i18n146 = __toESM(require_i18n(), 1);

  // packages/media-editor/build-module/image-editor/react/visually-hidden-style.mjs
  var VISUALLY_HIDDEN_STYLE = {
    position: "absolute",
    width: 1,
    height: 1,
    padding: 0,
    margin: -1,
    overflow: "hidden",
    clip: "rect(0, 0, 0, 0)",
    whiteSpace: "nowrap",
    border: 0
  };

  // packages/media-editor/build-module/image-editor/react/components/stencils/rectangle-stencil.mjs
  var import_jsx_runtime378 = __toESM(require_jsx_runtime(), 1);
  var CORNER_POSITIONS = ["nw", "ne", "se", "sw"];
  var ALL_POSITIONS = [
    "nw",
    "n",
    "ne",
    "e",
    "se",
    "s",
    "sw",
    "w"
  ];
  function getHandleLabel(pos) {
    switch (pos) {
      case "n":
        return (0, import_i18n146.__)("Resize from top edge");
      case "s":
        return (0, import_i18n146.__)("Resize from bottom edge");
      case "e":
        return (0, import_i18n146.__)("Resize from right edge");
      case "w":
        return (0, import_i18n146.__)("Resize from left edge");
      case "nw":
        return (0, import_i18n146.__)("Resize from top-left corner");
      case "ne":
        return (0, import_i18n146.__)("Resize from top-right corner");
      case "sw":
        return (0, import_i18n146.__)("Resize from bottom-left corner");
      case "se":
        return (0, import_i18n146.__)("Resize from bottom-right corner");
    }
  }
  var KEYBOARD_SETTLE_DELAY = 500;
  function RectangleStencil({
    cropRect,
    containerSize,
    imageSize,
    onCropChange,
    onResizeStart,
    onResizeEnd,
    aspectRatio,
    freeformCrop = false,
    isResizeDisabled = false,
    stencilTransition,
    cropBounds,
    onEscape,
    minCropSize,
    snapCropRect,
    keyboardResizeStep
  }) {
    const boundsMinX = cropBounds?.minX ?? 0;
    const boundsMinY = cropBounds?.minY ?? 0;
    const boundsMaxX = cropBounds?.maxX ?? 1;
    const boundsMaxY = cropBounds?.maxY ?? 1;
    const bounds = (0, import_element233.useMemo)(
      () => ({
        minX: boundsMinX,
        minY: boundsMinY,
        maxX: boundsMaxX,
        maxY: boundsMaxY
      }),
      [boundsMinX, boundsMinY, boundsMaxX, boundsMaxY]
    );
    const keyboardSettleTimerRef = (0, import_element233.useRef)();
    const keyboardResizeActiveRef = (0, import_element233.useRef)(false);
    const resizeHandleDescriptionId = (0, import_element233.useId)();
    const hasLockedRatio = !!(aspectRatio && aspectRatio > 0);
    const activePointerResizeRef = (0, import_element233.useRef)(null);
    (0, import_element233.useEffect)(() => {
      return () => {
        clearTimeout(keyboardSettleTimerRef.current);
        keyboardResizeActiveRef.current = false;
        activePointerResizeRef.current?.cancel(false);
      };
    }, []);
    const latestHandlersRef = (0, import_element233.useRef)(null);
    const normalizedRatio = (0, import_element233.useMemo)(() => {
      if (!hasLockedRatio || imageSize.width === 0) {
        return 0;
      }
      return aspectRatio * imageSize.height / imageSize.width;
    }, [aspectRatio, hasLockedRatio, imageSize.width, imageSize.height]);
    const offsetX = (containerSize.width - imageSize.width) / 2;
    const offsetY = (containerSize.height - imageSize.height) / 2;
    const left = offsetX + cropRect.x * imageSize.width;
    const top = offsetY + cropRect.y * imageSize.height;
    const width = cropRect.width * imageSize.width;
    const height = cropRect.height * imageSize.height;
    const handlePointerDown = (0, import_element233.useCallback)(
      (handle, event) => {
        if (isResizeDisabled || event.pointerType === "touch" && event.isPrimary === false) {
          event.preventDefault();
          event.stopPropagation();
          return;
        }
        if (event.button !== 0) {
          return;
        }
        event.preventDefault();
        event.stopPropagation();
        const ownerDoc = event.currentTarget.ownerDocument;
        if (ownerDoc.activeElement instanceof HTMLElement) {
          ownerDoc.activeElement.blur();
        }
        const el = event.currentTarget;
        el.setPointerCapture(event.pointerId);
        const drag2 = {
          handle,
          startX: event.clientX,
          startY: event.clientY,
          startRect: { ...cropRect }
        };
        let rafId2 = 0;
        let latestX = event.clientX;
        let latestY = event.clientY;
        let latestShift = event.shiftKey;
        const onMove = (e2) => {
          const pe = e2;
          latestX = pe.clientX;
          latestY = pe.clientY;
          latestShift = pe.shiftKey;
          if (rafId2) {
            return;
          }
          rafId2 = requestAnimationFrame(() => {
            rafId2 = 0;
            const h2 = latestHandlersRef.current;
            if (!h2) {
              return;
            }
            let newRect;
            if (h2.hasLockedRatio) {
              newRect = h2.computeLockedRect(drag2, latestX, latestY);
            } else if (latestShift) {
              newRect = h2.computeShiftLockedRect(
                drag2,
                latestX,
                latestY
              );
            } else {
              newRect = h2.computeFreeRect(drag2, latestX, latestY);
              newRect = h2.snapCropRect?.(newRect, drag2.handle) ?? newRect;
            }
            h2.onCropChange(newRect);
          });
        };
        let ended = false;
        const endResize = (notifyResizeEnd = true, restoreFocus = true) => {
          if (ended) {
            return;
          }
          ended = true;
          if (rafId2) {
            cancelAnimationFrame(rafId2);
            rafId2 = 0;
          }
          el.removeEventListener("pointermove", onMove);
          el.removeEventListener("pointerup", onEnd);
          el.removeEventListener("lostpointercapture", onEnd);
          activePointerResizeRef.current = null;
          if (notifyResizeEnd) {
            latestHandlersRef.current?.onResizeEnd?.();
          }
          if (restoreFocus) {
            el.focus({ preventScroll: true });
          }
        };
        const cancelResize = (notifyResizeEnd = true) => endResize(notifyResizeEnd, false);
        const onEnd = () => endResize();
        el.addEventListener("pointermove", onMove);
        el.addEventListener("pointerup", onEnd);
        el.addEventListener("lostpointercapture", onEnd);
        activePointerResizeRef.current = { cancel: cancelResize };
        onResizeStart?.(handle);
        clearTimeout(keyboardSettleTimerRef.current);
        keyboardResizeActiveRef.current = false;
      },
      [cropRect, isResizeDisabled, onResizeStart]
    );
    const computeFreeRect = (0, import_element233.useCallback)(
      (drag2, clientX, clientY) => computeFreeResizeRect(
        drag2,
        clientX,
        clientY,
        imageSize,
        bounds,
        minCropSize
      ),
      [imageSize, bounds, minCropSize]
    );
    const computeLockedRect = (0, import_element233.useCallback)(
      (drag2, clientX, clientY, driverAxis) => computeLockedResizeRect(
        drag2,
        clientX,
        clientY,
        imageSize,
        bounds,
        normalizedRatio,
        minCropSize,
        driverAxis
      ),
      [imageSize, bounds, normalizedRatio, minCropSize]
    );
    const computeShiftLockedRect = (0, import_element233.useCallback)(
      (drag2, clientX, clientY) => computeShiftLockedResizeRect(
        drag2,
        clientX,
        clientY,
        imageSize,
        bounds,
        minCropSize
      ),
      [imageSize, bounds, minCropSize]
    );
    latestHandlersRef.current = {
      hasLockedRatio,
      computeLockedRect,
      computeFreeRect,
      computeShiftLockedRect,
      onCropChange,
      onResizeEnd,
      snapCropRect
    };
    (0, import_element233.useEffect)(() => {
      if (!isResizeDisabled) {
        return;
      }
      activePointerResizeRef.current?.cancel();
      if (keyboardResizeActiveRef.current) {
        clearTimeout(keyboardSettleTimerRef.current);
        keyboardResizeActiveRef.current = false;
        latestHandlersRef.current?.onResizeEnd?.();
      }
    }, [isResizeDisabled]);
    const handleKeyDown = (0, import_element233.useCallback)(
      (handle, event) => {
        const key = event.key;
        if (isResizeDisabled) {
          return;
        }
        if (key === "Escape") {
          event.preventDefault();
          event.stopPropagation();
          onEscape?.();
          return;
        }
        if (key !== "ArrowUp" && key !== "ArrowDown" && key !== "ArrowLeft" && key !== "ArrowRight") {
          return;
        }
        event.preventDefault();
        event.stopPropagation();
        if (!keyboardResizeActiveRef.current) {
          keyboardResizeActiveRef.current = true;
          onResizeStart?.(handle);
        }
        const scheduleKeyboardResizeEnd = () => {
          clearTimeout(keyboardSettleTimerRef.current);
          keyboardSettleTimerRef.current = setTimeout(() => {
            keyboardResizeActiveRef.current = false;
            onResizeEnd?.();
          }, KEYBOARD_SETTLE_DELAY);
        };
        const stepMultiplier = event.shiftKey ? KEYBOARD_SHIFT_STEP_MULTIPLIER : 1;
        const stepX = keyboardResizeStep?.width ?? DEFAULT_KEYBOARD_STEP;
        const stepY = keyboardResizeStep?.height ?? DEFAULT_KEYBOARD_STEP;
        const adjustedStepX = stepX * stepMultiplier;
        const adjustedStepY = stepY * stepMultiplier;
        let dx = 0;
        let dy = 0;
        if (key === "ArrowLeft") {
          dx = -adjustedStepX;
        }
        if (key === "ArrowRight") {
          dx = adjustedStepX;
        }
        if (key === "ArrowUp") {
          dy = -adjustedStepY;
        }
        if (key === "ArrowDown") {
          dy = adjustedStepY;
        }
        const keyboardDriverAxis = dx !== 0 ? "width" : "height";
        if (hasLockedRatio) {
          const syntheticDrag = {
            handle,
            startX: 0,
            startY: 0,
            startRect: { ...cropRect }
          };
          const clientX = dx * imageSize.width;
          const clientY = dy * imageSize.height;
          onCropChange(
            computeLockedRect(
              syntheticDrag,
              clientX,
              clientY,
              keyboardDriverAxis
            )
          );
          scheduleKeyboardResizeEnd();
        } else {
          const syntheticDrag = {
            handle,
            startX: 0,
            startY: 0,
            startRect: { ...cropRect }
          };
          const clientX = dx * imageSize.width;
          const clientY = dy * imageSize.height;
          const rect = computeFreeRect(syntheticDrag, clientX, clientY);
          onCropChange(snapCropRect?.(rect, handle) ?? rect);
          scheduleKeyboardResizeEnd();
        }
      },
      [
        cropRect,
        hasLockedRatio,
        imageSize.width,
        imageSize.height,
        computeLockedRect,
        computeFreeRect,
        onCropChange,
        onResizeStart,
        onResizeEnd,
        onEscape,
        keyboardResizeStep,
        snapCropRect,
        isResizeDisabled
      ]
    );
    if (containerSize.width === 0 || containerSize.height === 0) {
      return null;
    }
    const handles = hasLockedRatio ? CORNER_POSITIONS : ALL_POSITIONS;
    return /* @__PURE__ */ (0, import_jsx_runtime378.jsxs)(
      "div",
      {
        className: "wp-media-editor-image-editor__stencil",
        "data-testid": "cropper-stencil",
        style: {
          left,
          top,
          width,
          height,
          transition: stencilTransition
        },
        children: [
          freeformCrop && /* @__PURE__ */ (0, import_jsx_runtime378.jsx)(
            "div",
            {
              id: resizeHandleDescriptionId,
              style: VISUALLY_HIDDEN_STYLE,
              children: (0, import_i18n146.__)(
                "Use arrow keys to resize the crop area. Hold Shift for larger steps."
              )
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime378.jsx)(
            "div",
            {
              className: "wp-media-editor-image-editor__stencil-rect",
              style: {
                width: "100%",
                height: "100%",
                top: 0,
                left: 0
              }
            }
          ),
          freeformCrop && handles.map((pos) => /* @__PURE__ */ (0, import_jsx_runtime378.jsx)(
            "button",
            {
              type: "button",
              className: `wp-media-editor-image-editor__handle wp-media-editor-image-editor__handle--${pos}`,
              onPointerDown: (event) => handlePointerDown(pos, event),
              onTouchStart: (event) => {
                if (event.touches.length < 2) {
                  event.stopPropagation();
                }
              },
              onKeyDown: (event) => handleKeyDown(pos, event),
              disabled: isResizeDisabled,
              "aria-label": getHandleLabel(pos),
              "aria-describedby": resizeHandleDescriptionId
            },
            pos
          ))
        ]
      }
    );
  }

  // packages/media-editor/build-module/image-editor/react/components/overlays/dimming-overlay.mjs
  var import_jsx_runtime379 = __toESM(require_jsx_runtime(), 1);
  function DimmingOverlay({
    cropRect,
    containerSize,
    imageSize,
    transition
  }) {
    if (containerSize.width === 0 || containerSize.height === 0) {
      return null;
    }
    const offsetX = (containerSize.width - imageSize.width) / 2;
    const offsetY = (containerSize.height - imageSize.height) / 2;
    const left = offsetX + cropRect.x * imageSize.width;
    const top = offsetY + cropRect.y * imageSize.height;
    const width = cropRect.width * imageSize.width;
    const height = cropRect.height * imageSize.height;
    const composedTransition = transition ? `${transition}, box-shadow 0.15s ease` : void 0;
    return /* @__PURE__ */ (0, import_jsx_runtime379.jsx)(
      "div",
      {
        className: "wp-media-editor-image-editor__dimming",
        "data-testid": "cropper-dimming",
        style: {
          left,
          top,
          width,
          height,
          transition: composedTransition
        }
      }
    );
  }

  // packages/media-editor/build-module/image-editor/react/components/overlays/grid-overlay.mjs
  var import_jsx_runtime380 = __toESM(require_jsx_runtime(), 1);
  function GridOverlay({
    cropRect,
    containerSize,
    imageSize
  }) {
    if (containerSize.width === 0 || containerSize.height === 0) {
      return null;
    }
    const offsetX = (containerSize.width - imageSize.width) / 2;
    const offsetY = (containerSize.height - imageSize.height) / 2;
    const left = offsetX + cropRect.x * imageSize.width;
    const top = offsetY + cropRect.y * imageSize.height;
    const width = cropRect.width * imageSize.width;
    const height = cropRect.height * imageSize.height;
    const thirdW = width / 3;
    const thirdH = height / 3;
    return /* @__PURE__ */ (0, import_jsx_runtime380.jsxs)(
      "div",
      {
        className: "wp-media-editor-image-editor__grid",
        "data-testid": "cropper-grid",
        style: {
          left,
          top,
          width,
          height
        },
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime380.jsx)(
            "div",
            {
              className: "wp-media-editor-image-editor__grid-line wp-media-editor-image-editor__grid-line--horizontal",
              style: { top: thirdH }
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime380.jsx)(
            "div",
            {
              className: "wp-media-editor-image-editor__grid-line wp-media-editor-image-editor__grid-line--horizontal",
              style: { top: thirdH * 2 }
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime380.jsx)(
            "div",
            {
              className: "wp-media-editor-image-editor__grid-line wp-media-editor-image-editor__grid-line--vertical",
              style: { left: thirdW }
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime380.jsx)(
            "div",
            {
              className: "wp-media-editor-image-editor__grid-line wp-media-editor-image-editor__grid-line--vertical",
              style: { left: thirdW * 2 }
            }
          )
        ]
      }
    );
  }

  // packages/media-editor/build-module/image-editor/react/components/overlays/dimensions-overlay.mjs
  var import_element234 = __toESM(require_element(), 1);
  var import_jsx_runtime381 = __toESM(require_jsx_runtime(), 1);
  var HANDLE_GAP_PX = 12;
  var TRANSLATE_PERCENT = {
    before: "-100%",
    center: "-50%",
    after: "0"
  };
  var GAP_DIRECTION = {
    before: -1,
    center: 0,
    after: 1
  };
  var OPPOSITE_SIDE = {
    before: "after",
    center: "center",
    after: "before"
  };
  function preferredAnchor(handle) {
    let x2 = "center";
    if (handle.includes("w")) {
      x2 = "before";
    } else if (handle.includes("e")) {
      x2 = "after";
    }
    let y3 = "center";
    if (handle.includes("n")) {
      y3 = "before";
    } else if (handle.includes("s")) {
      y3 = "after";
    }
    return { x: x2, y: y3 };
  }
  function sideStart(side, handlePos, length2) {
    if (side === "before") {
      return handlePos - HANDLE_GAP_PX - length2;
    }
    if (side === "after") {
      return handlePos + HANDLE_GAP_PX;
    }
    return handlePos - length2 / 2;
  }
  function fittingSide(preferred, handlePos, length2, containerLength) {
    const fits = (side) => {
      const start2 = sideStart(side, handlePos, length2);
      return start2 >= 0 && start2 + length2 <= containerLength;
    };
    if (fits(preferred)) {
      return preferred;
    }
    const opposite = OPPOSITE_SIDE[preferred];
    if (opposite !== preferred && fits(opposite)) {
      return opposite;
    }
    if (preferred !== "center" && fits("center")) {
      return "center";
    }
    const overflow = (side) => {
      const start2 = sideStart(side, handlePos, length2);
      return Math.max(0, -start2) + Math.max(0, start2 + length2 - containerLength);
    };
    const candidates = [preferred, opposite, "center"];
    return candidates.reduce(
      (best, side) => overflow(side) < overflow(best) ? side : best
    );
  }
  function DimensionsOverlay({
    cropRect,
    containerSize,
    imageSize,
    activeHandle,
    outputWidth,
    outputHeight
  }) {
    const tooltipRef = (0, import_element234.useRef)(null);
    const [tooltipSize, setTooltipSize] = (0, import_element234.useState)(null);
    (0, import_element234.useLayoutEffect)(() => {
      if (!tooltipRef.current) {
        return;
      }
      const rect = tooltipRef.current.getBoundingClientRect();
      setTooltipSize((prev) => {
        if (prev && prev.width === rect.width && prev.height === rect.height) {
          return prev;
        }
        return { width: rect.width, height: rect.height };
      });
    }, [outputWidth, outputHeight]);
    if (!activeHandle || containerSize.width === 0 || containerSize.height === 0) {
      return null;
    }
    const offsetX = (containerSize.width - imageSize.width) / 2;
    const offsetY = (containerSize.height - imageSize.height) / 2;
    const left = offsetX + cropRect.x * imageSize.width;
    const top = offsetY + cropRect.y * imageSize.height;
    const width = cropRect.width * imageSize.width;
    const height = cropRect.height * imageSize.height;
    let handleX = left + width / 2;
    if (activeHandle.includes("w")) {
      handleX = left;
    } else if (activeHandle.includes("e")) {
      handleX = left + width;
    }
    let handleY = top + height / 2;
    if (activeHandle.includes("n")) {
      handleY = top;
    } else if (activeHandle.includes("s")) {
      handleY = top + height;
    }
    const preferred = preferredAnchor(activeHandle);
    const anchor = tooltipSize ? {
      x: fittingSide(
        preferred.x,
        handleX,
        tooltipSize.width,
        containerSize.width
      ),
      y: fittingSide(
        preferred.y,
        handleY,
        tooltipSize.height,
        containerSize.height
      )
    } : preferred;
    return /* @__PURE__ */ (0, import_jsx_runtime381.jsx)(
      "div",
      {
        ref: tooltipRef,
        className: "wp-media-editor-image-editor__dimensions-tooltip",
        "data-testid": "cropper-dimensions-tooltip",
        style: {
          left: handleX + GAP_DIRECTION[anchor.x] * HANDLE_GAP_PX,
          top: handleY + GAP_DIRECTION[anchor.y] * HANDLE_GAP_PX,
          transform: `translate(${TRANSLATE_PERCENT[anchor.x]}, ${TRANSLATE_PERCENT[anchor.y]})`
        },
        "aria-hidden": "true",
        children: `W: ${Math.round(outputWidth)}px H: ${Math.round(
          outputHeight
        )}px`
      }
    );
  }

  // packages/media-editor/build-module/image-editor/react/components/viewport-provider.mjs
  var import_element236 = __toESM(require_element(), 1);

  // packages/media-editor/build-module/image-editor/react/hooks/use-viewport-state.mjs
  var import_element235 = __toESM(require_element(), 1);

  // packages/media-editor/build-module/image-editor/core/viewport-state.mjs
  var DEFAULT_VIEWPORT_STATE = {
    zoom: 1,
    pan: { x: 0, y: 0 }
  };
  function viewportReducer(state2, action) {
    switch (action.type) {
      case "SET_VIEWPORT_ZOOM": {
        const zoom = Math.min(4, Math.max(0.1, action.payload));
        return zoom === state2.zoom ? state2 : { ...state2, zoom };
      }
      case "SET_VIEWPORT_PAN": {
        const { x: x2, y: y3 } = action.payload;
        return x2 === state2.pan.x && y3 === state2.pan.y ? state2 : { ...state2, pan: action.payload };
      }
      case "RESET_VIEWPORT":
        return state2.zoom === DEFAULT_VIEWPORT_STATE.zoom && state2.pan.x === DEFAULT_VIEWPORT_STATE.pan.x && state2.pan.y === DEFAULT_VIEWPORT_STATE.pan.y ? state2 : DEFAULT_VIEWPORT_STATE;
    }
  }

  // packages/media-editor/build-module/image-editor/react/hooks/use-viewport-state.mjs
  function useViewportState() {
    const [viewport, dispatch9] = (0, import_element235.useReducer)(
      viewportReducer,
      DEFAULT_VIEWPORT_STATE
    );
    const setViewportZoom = (0, import_element235.useCallback)((zoom) => {
      dispatch9({ type: "SET_VIEWPORT_ZOOM", payload: zoom });
    }, []);
    const setViewportPan = (0, import_element235.useCallback)((pan) => {
      dispatch9({ type: "SET_VIEWPORT_PAN", payload: pan });
    }, []);
    const resetViewport = (0, import_element235.useCallback)(() => {
      dispatch9({ type: "RESET_VIEWPORT" });
    }, []);
    return (0, import_element235.useMemo)(
      () => ({ viewport, setViewportZoom, setViewportPan, resetViewport }),
      [viewport, setViewportZoom, setViewportPan, resetViewport]
    );
  }

  // packages/media-editor/build-module/image-editor/react/components/viewport-provider.mjs
  var import_jsx_runtime382 = __toESM(require_jsx_runtime(), 1);
  var ViewportContext = (0, import_element236.createContext)(null);
  function ViewportProvider({
    children
  }) {
    const viewportState = useViewportState();
    return /* @__PURE__ */ (0, import_jsx_runtime382.jsx)(ViewportContext.Provider, { value: viewportState, children });
  }
  function useViewport() {
    const context = (0, import_element236.useContext)(ViewportContext);
    if (!context) {
      throw new Error(
        "useViewport must be used within a ViewportProvider."
      );
    }
    return context;
  }

  // packages/media-editor/build-module/image-editor/react/components/cropper.mjs
  var import_jsx_runtime383 = __toESM(require_jsx_runtime(), 1);
  var CROP_RECT_EPSILON = 1e-6;
  var CARDINAL_ROTATION_EPSILON2 = 1e-6;
  var SETTLE_TRANSITION_DURATION_MS = 200;
  var SETTLE_TRANSITION_FALLBACK_MS = SETTLE_TRANSITION_DURATION_MS + 100;
  var SETTLE_TRANSFORM_TRANSITION = `transform ${SETTLE_TRANSITION_DURATION_MS}ms ease-out`;
  var SETTLE_STENCIL_TRANSITION = [
    `left ${SETTLE_TRANSITION_DURATION_MS}ms ease-out`,
    `top ${SETTLE_TRANSITION_DURATION_MS}ms ease-out`,
    `width ${SETTLE_TRANSITION_DURATION_MS}ms ease-out`,
    `height ${SETTLE_TRANSITION_DURATION_MS}ms ease-out`
  ].join(", ");
  function CropperInner({
    src,
    controller,
    stencil: StencilComponent = RectangleStencil,
    showGrid = false,
    isPlacementActive = false,
    showDimming = true,
    showDimensions = true,
    minZoom,
    maxZoom,
    aspectRatio,
    freeformCrop = false,
    focusOnMount = false,
    disabled: disabled2 = false,
    onImageLoaded,
    onStateChange,
    onGestureStart,
    onGestureEnd,
    className
  }, ref) {
    const {
      state: state2,
      setImage,
      setCropRect,
      settleCrop,
      setVisualSize,
      adjustCropRectForViewport
    } = controller;
    const {
      viewport: viewportState,
      setViewportPan,
      resetViewport
    } = useViewport();
    const canvasRef = (0, import_element237.useRef)(null);
    const cropAreaDescriptionId = (0, import_element237.useId)();
    const [isCropAreaFocused, setIsCropAreaFocused] = (0, import_element237.useState)(focusOnMount);
    const [isFocusVisible, setIsFocusVisible] = (0, import_element237.useState)(false);
    const [canvasSize, setCanvasSize] = (0, import_element237.useState)({
      width: 0,
      height: 0
    });
    (0, import_element237.useLayoutEffect)(() => {
      if (focusOnMount) {
        canvasRef.current?.focus({ preventScroll: true });
      }
    }, [focusOnMount]);
    const handleCropAreaFocus = (0, import_element237.useCallback)(
      (event) => {
        const target = event.target;
        if (target === event.currentTarget) {
          setIsCropAreaFocused(true);
        }
        if (event.relatedTarget !== null && target.matches(":focus-visible")) {
          setIsFocusVisible(true);
        }
      },
      []
    );
    const handleCropAreaBlur = (0, import_element237.useCallback)(
      (event) => {
        if (event.target === event.currentTarget) {
          setIsCropAreaFocused(false);
        }
        if (!event.currentTarget.contains(
          event.relatedTarget
        )) {
          setIsFocusVisible(false);
        }
      },
      []
    );
    (0, import_element237.useEffect)(() => {
      const element = canvasRef.current;
      if (!element) {
        return;
      }
      const observer = new ResizeObserver((entries) => {
        for (const entry of entries) {
          const { width, height } = entry.contentRect;
          setCanvasSize((prev) => {
            if (prev.width === width && prev.height === height) {
              return prev;
            }
            return { width, height };
          });
        }
      });
      observer.observe(element);
      return () => {
        observer.disconnect();
      };
    }, []);
    (0, import_element237.useEffect)(() => {
      onStateChange?.(state2);
    }, [state2, onStateChange]);
    useAriaAnnouncer(state2);
    const naturalWidth = state2.image?.naturalWidth ?? 0;
    const naturalHeight = state2.image?.naturalHeight ?? 0;
    const { elementSize, visualSize } = (0, import_element237.useMemo)(
      () => getImageFit(
        canvasSize,
        { width: naturalWidth, height: naturalHeight },
        state2.rotation
      ),
      [canvasSize, naturalWidth, naturalHeight, state2.rotation]
    );
    (0, import_element237.useEffect)(() => {
      setVisualSize(visualSize);
    }, [visualSize, setVisualSize]);
    (0, import_element237.useEffect)(() => {
      if (freeformCrop || visualSize.width === 0 || visualSize.height === 0 || !aspectRatio || aspectRatio <= 0) {
        return;
      }
      const rect = computeInscribedRect(aspectRatio, visualSize);
      const current = state2.cropRect;
      if (Math.abs(current.x - rect.x) < CROP_RECT_EPSILON && Math.abs(current.y - rect.y) < CROP_RECT_EPSILON && Math.abs(current.width - rect.width) < CROP_RECT_EPSILON && Math.abs(current.height - rect.height) < CROP_RECT_EPSILON) {
        return;
      }
      adjustCropRectForViewport(rect);
    }, [
      freeformCrop,
      aspectRatio,
      visualSize,
      adjustCropRectForViewport,
      state2.cropRect
    ]);
    const prevAspectRatioRef = (0, import_element237.useRef)(aspectRatio);
    (0, import_element237.useEffect)(() => {
      if (prevAspectRatioRef.current === aspectRatio) {
        return;
      }
      prevAspectRatioRef.current = aspectRatio;
      if (!freeformCrop || visualSize.width === 0 || visualSize.height === 0 || !aspectRatio || aspectRatio <= 0) {
        return;
      }
      const rect = computeInscribedRect(aspectRatio, visualSize);
      const current = state2.cropRect;
      if (Math.abs(current.x - rect.x) < CROP_RECT_EPSILON && Math.abs(current.y - rect.y) < CROP_RECT_EPSILON && Math.abs(current.width - rect.width) < CROP_RECT_EPSILON && Math.abs(current.height - rect.height) < CROP_RECT_EPSILON) {
        return;
      }
      adjustCropRectForViewport(rect);
    }, [
      aspectRatio,
      freeformCrop,
      visualSize,
      adjustCropRectForViewport,
      state2.cropRect
    ]);
    const cropBounds = (0, import_element237.useMemo)(() => {
      if (!state2.image || elementSize.width === 0) {
        return void 0;
      }
      return getImageCropBounds(state2, elementSize, visualSize);
    }, [state2, elementSize, visualSize]);
    const effectiveMinZoom = minZoom !== void 0 ? minZoom : getMinZoom(state2);
    const [isResizing, setIsResizing] = (0, import_element237.useState)(false);
    const isResizingRef = (0, import_element237.useRef)(false);
    const isSettlingRef = (0, import_element237.useRef)(false);
    const [isTouchPinching, setIsTouchPinchingState] = (0, import_element237.useState)(false);
    const isTouchPinchingRef = (0, import_element237.useRef)(false);
    const setTouchPinching = (0, import_element237.useCallback)((isPinching) => {
      isTouchPinchingRef.current = isPinching;
      setIsTouchPinchingState(isPinching);
    }, []);
    const [activeHandle, setActiveHandle] = (0, import_element237.useState)(
      null
    );
    const viewScaleRest = (0, import_element237.useMemo)(
      () => getViewScale(
        state2.cropRect,
        canvasSize,
        visualSize,
        SETTLE_TARGET_CANVAS_FILL,
        MAX_VIEW_SCALE
      ),
      [state2.cropRect, canvasSize, visualSize]
    );
    const [frozenViewScale, setFrozenViewScale] = (0, import_element237.useState)(1);
    const viewScale = isResizing ? frozenViewScale : viewScaleRest;
    const scaledVisualSize = (0, import_element237.useMemo)(
      () => ({
        width: visualSize.width * viewScale,
        height: visualSize.height * viewScale
      }),
      [visualSize.width, visualSize.height, viewScale]
    );
    const displayScale = naturalWidth > 0 ? elementSize.width / naturalWidth * state2.zoom * viewScale : 0;
    const keyboardResizeStep = (0, import_element237.useMemo)(() => {
      if (displayScale < PIXEL_SNAP_DISPLAY_SCALE || aspectRatio && aspectRatio > 0 || naturalWidth <= 0 || naturalHeight <= 0) {
        return void 0;
      }
      const snapRotation = Math.round(state2.rotation / 90) * 90;
      if (Math.abs(state2.rotation - snapRotation) >= CARDINAL_ROTATION_EPSILON2) {
        return void 0;
      }
      const bbox = getRotatedBBox(
        naturalWidth,
        naturalHeight,
        snapRotation
      );
      if (bbox.width <= 0 || bbox.height <= 0) {
        return void 0;
      }
      return {
        width: state2.zoom / bbox.width,
        height: state2.zoom / bbox.height
      };
    }, [
      displayScale,
      aspectRatio,
      naturalWidth,
      naturalHeight,
      state2.rotation,
      state2.zoom
    ]);
    const minCropSize = (0, import_element237.useMemo)(() => {
      if (naturalWidth <= 0 || naturalHeight <= 0) {
        return void 0;
      }
      const snapRotation = Math.round(state2.rotation / 90) * 90;
      const bbox = getRotatedBBox(
        naturalWidth,
        naturalHeight,
        snapRotation
      );
      const minPixels = getMinCropPixels(displayScale);
      return {
        width: Math.min(1, minPixels * state2.zoom / bbox.width),
        height: Math.min(1, minPixels * state2.zoom / bbox.height)
      };
    }, [
      naturalWidth,
      naturalHeight,
      state2.rotation,
      state2.zoom,
      displayScale
    ]);
    const snapCropRect = (0, import_element237.useCallback)(
      (rect, handle) => {
        if (displayScale < PIXEL_SNAP_DISPLAY_SCALE || naturalWidth <= 0 || naturalHeight <= 0) {
          return rect;
        }
        return snapCropRectToSourcePixels(
          state2,
          { width: naturalWidth, height: naturalHeight },
          rect,
          handle
        );
      },
      [displayScale, naturalWidth, naturalHeight, state2]
    );
    const wasPixelSnapEnabledRef = (0, import_element237.useRef)(false);
    (0, import_element237.useEffect)(() => {
      const isPixelSnapEnabled = freeformCrop && (!aspectRatio || aspectRatio <= 0) && displayScale >= PIXEL_SNAP_DISPLAY_SCALE && naturalWidth > 0 && naturalHeight > 0;
      const wasPixelSnapEnabled = wasPixelSnapEnabledRef.current;
      wasPixelSnapEnabledRef.current = isPixelSnapEnabled;
      if (!isPixelSnapEnabled || wasPixelSnapEnabled) {
        return;
      }
      const snappedCropRect = snapCropRectToSourcePixelGrid(
        state2,
        { width: naturalWidth, height: naturalHeight },
        state2.cropRect
      );
      const currentCropRect = state2.cropRect;
      if (Math.abs(currentCropRect.x - snappedCropRect.x) < CROP_RECT_EPSILON && Math.abs(currentCropRect.y - snappedCropRect.y) < CROP_RECT_EPSILON && Math.abs(currentCropRect.width - snappedCropRect.width) < CROP_RECT_EPSILON && Math.abs(currentCropRect.height - snappedCropRect.height) < CROP_RECT_EPSILON) {
        return;
      }
      setCropRect(snappedCropRect);
    }, [
      aspectRatio,
      displayScale,
      freeformCrop,
      naturalWidth,
      naturalHeight,
      setCropRect,
      state2
    ]);
    const {
      handlers,
      onWheelNative,
      isDragging,
      isZooming,
      isPlacementActive: isInteractionPlacementActive
    } = useInteraction(state2, controller, canvasSize, scaledVisualSize, {
      minZoom: effectiveMinZoom,
      maxZoom,
      onGestureStart,
      onGestureEnd,
      disabled: disabled2
    });
    const canvasHandlers = {
      ...handlers,
      onPointerDownCapture: () => {
        setIsFocusVisible(false);
      },
      onTouchStartCapture: (event) => {
        if (event.touches.length > 1) {
          setTouchPinching(true);
        }
      },
      onTouchMoveCapture: (event) => {
        if (event.touches.length > 1) {
          setTouchPinching(true);
        }
      },
      onTouchEndCapture: (event) => {
        if (event.touches.length === 0) {
          setTouchPinching(false);
        }
      },
      onTouchCancelCapture: (event) => {
        if (event.touches.length === 0) {
          setTouchPinching(false);
        }
      },
      onKeyDownCapture: (event) => {
        if (!["Shift", "Control", "Alt", "Meta"].includes(event.key)) {
          setIsFocusVisible(true);
        }
      },
      onPointerDown: (event) => {
        if (disabled2 || isResizingRef.current || isTouchPinchingRef.current || event.pointerType === "touch" && event.isPrimary === false) {
          event.preventDefault();
          return;
        }
        handlers.onPointerDown?.(event);
        setIsFocusVisible(false);
      }
    };
    (0, import_element237.useEffect)(() => {
      const el = canvasRef.current;
      if (!el) {
        return;
      }
      const handleWheel = (event) => {
        if (isResizingRef.current || isSettlingRef.current) {
          event.preventDefault();
          return;
        }
        onWheelNative(event);
      };
      el.addEventListener("wheel", handleWheel, {
        passive: false
      });
      return () => {
        el.removeEventListener("wheel", handleWheel);
      };
    }, [onWheelNative]);
    const transformString = useTransformStyle(state2, visualSize);
    const handleImageLoad = (0, import_element237.useCallback)(
      (event) => {
        const img = event.currentTarget;
        const size4 = {
          width: img.naturalWidth,
          height: img.naturalHeight
        };
        setImage({
          src,
          naturalWidth: size4.width,
          naturalHeight: size4.height
        });
        onImageLoaded?.(size4);
      },
      [src, setImage, onImageLoaded]
    );
    const handleCropChange = (0, import_element237.useCallback)(
      (rect) => {
        if (isTouchPinchingRef.current) {
          return;
        }
        setCropRect(rect);
        if (isResizingRef.current && scaledVisualSize.width > 0 && scaledVisualSize.height > 0) {
          const offsetX = (canvasSize.width - scaledVisualSize.width) / 2;
          const offsetY = (canvasSize.height - scaledVisualSize.height) / 2;
          const rightOverflow = Math.max(
            0,
            offsetX + (rect.x + rect.width) * scaledVisualSize.width - canvasSize.width
          );
          const leftOverflow = Math.max(
            0,
            -(offsetX + rect.x * scaledVisualSize.width)
          );
          const bottomOverflow = Math.max(
            0,
            offsetY + (rect.y + rect.height) * scaledVisualSize.height - canvasSize.height
          );
          const topOverflow = Math.max(
            0,
            -(offsetY + rect.y * scaledVisualSize.height)
          );
          setViewportPan({
            x: -rightOverflow + leftOverflow,
            y: -bottomOverflow + topOverflow
          });
        }
      },
      [setCropRect, setViewportPan, canvasSize, scaledVisualSize]
    );
    const [settling, setSettling] = (0, import_element237.useState)(false);
    const settleTimerRef = (0, import_element237.useRef)();
    const finishSettling = (0, import_element237.useCallback)(() => {
      clearTimeout(settleTimerRef.current);
      isSettlingRef.current = false;
      setSettling(false);
    }, []);
    (0, import_element237.useEffect)(() => {
      return () => {
        clearTimeout(settleTimerRef.current);
      };
    }, []);
    const isInteractiveGrid = showGrid === "interactive";
    const showInteractiveGrid = isInteractiveGrid && (isInteractionPlacementActive || isResizing || isPlacementActive);
    const outputSize = (0, import_element237.useMemo)(() => {
      if (!showDimensions || !activeHandle || !state2.image) {
        return null;
      }
      const region = getSourceRegion(state2, {
        width: state2.image.naturalWidth,
        height: state2.image.naturalHeight
      });
      return { width: region.width, height: region.height };
    }, [showDimensions, activeHandle, state2]);
    const handleEscape = (0, import_element237.useCallback)(() => {
      setIsFocusVisible(true);
      canvasRef.current?.focus({ preventScroll: true });
    }, []);
    const handleResizeStart = (0, import_element237.useCallback)(
      (handle) => {
        if (isTouchPinchingRef.current) {
          return;
        }
        setFrozenViewScale(viewScaleRest);
        isResizingRef.current = true;
        setIsResizing(true);
        setActiveHandle(handle ?? null);
        finishSettling();
        resetViewport();
        onGestureStart?.();
      },
      [finishSettling, onGestureStart, resetViewport, viewScaleRest]
    );
    const handleResizeEnd = (0, import_element237.useCallback)(() => {
      const isCancellingForPinch = isTouchPinchingRef.current;
      isResizingRef.current = false;
      setIsResizing(false);
      setActiveHandle(null);
      clearTimeout(settleTimerRef.current);
      if (isCancellingForPinch) {
        finishSettling();
        resetViewport();
        return;
      }
      isSettlingRef.current = true;
      setSettling(true);
      resetViewport();
      settleCrop();
      onGestureEnd?.();
      settleTimerRef.current = setTimeout(
        finishSettling,
        SETTLE_TRANSITION_FALLBACK_MS
      );
    }, [finishSettling, settleCrop, onGestureEnd, resetViewport]);
    const handleSettleTransitionEnd = (0, import_element237.useCallback)(
      (event) => {
        if (!isSettlingRef.current || event.propertyName !== "transform") {
          return;
        }
        finishSettling();
      },
      [finishSettling]
    );
    let imageTransition;
    if (settling) {
      imageTransition = SETTLE_TRANSFORM_TRANSITION;
    } else if (isZooming) {
      imageTransition = "transform 150ms linear";
    }
    const settleStencilTransition = settling ? SETTLE_STENCIL_TRANSITION : void 0;
    const imageStyle = (0, import_element237.useMemo)(() => {
      if (elementSize.width === 0 || elementSize.height === 0) {
        return {};
      }
      const centerX = (canvasSize.width - elementSize.width) / 2;
      const centerY = (canvasSize.height - elementSize.height) / 2;
      return {
        width: elementSize.width,
        height: elementSize.height,
        maxWidth: elementSize.width,
        maxHeight: elementSize.height,
        left: centerX,
        top: centerY,
        // Always lead with `scale()` (identity at rest) so the transform's
        // function list stays structurally constant across rest, resize, and
        // settle. A conditional that dropped `scale()` at viewScale === 1
        // would change the list shape exactly when the settle transition
        // crosses 1:1, forcing the browser to fall back to matrix-decomposition
        // interpolation instead of interpolating each function in turn.
        transform: `scale(${viewScale}) ${transformString}`,
        transition: imageTransition,
        imageRendering: displayScale > 1 ? "pixelated" : void 0
      };
    }, [
      canvasSize,
      elementSize,
      transformString,
      imageTransition,
      displayScale,
      viewScale
    ]);
    const settleTransition = settling ? SETTLE_TRANSFORM_TRANSITION : void 0;
    const willChange = isResizing || settling ? "transform" : void 0;
    let stageStyle;
    if (viewportState.pan.x !== 0 || viewportState.pan.y !== 0) {
      stageStyle = {
        transform: `translate(${viewportState.pan.x}px, ${viewportState.pan.y}px)`,
        transition: settleTransition,
        willChange
      };
    } else if (settling) {
      stageStyle = {
        transform: "translate(0px, 0px)",
        transition: settleTransition,
        willChange
      };
    }
    const setContainerRef = (0, import_element237.useCallback)(
      (element) => {
        if (typeof ref === "function") {
          ref(element);
        } else if (ref) {
          ref.current = element;
        }
      },
      [ref]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime383.jsx)(
      "div",
      {
        ref: setContainerRef,
        className: clsx_default(
          "wp-media-editor-image-editor",
          isDragging && "wp-media-editor-image-editor--dragging",
          className
        ),
        children: /* @__PURE__ */ (0, import_jsx_runtime383.jsxs)(
          "div",
          {
            ref: canvasRef,
            className: clsx_default(
              "wp-media-editor-image-editor__canvas",
              isInteractiveGrid && "wp-media-editor-image-editor__canvas--grid-interactive",
              showInteractiveGrid && "wp-media-editor-image-editor__canvas--show-grid",
              settling && "wp-media-editor-image-editor__canvas--settling",
              // Marks the cropper as in keyboard-interaction mode.
              // CSS uses :focus on the canvas to show the stencil
              // outline and :focus on a handle to show its ring,
              // so the class applies whenever any cropper element
              // has keyboard focus.
              isFocusVisible && "wp-media-editor-image-editor__canvas--focus-visible"
            ),
            tabIndex: 0,
            role: "group",
            "aria-label": (0, import_i18n147.__)("Crop area"),
            "aria-describedby": isCropAreaFocused ? cropAreaDescriptionId : void 0,
            onFocus: handleCropAreaFocus,
            onBlur: handleCropAreaBlur,
            ...canvasHandlers,
            children: [
              /* @__PURE__ */ (0, import_jsx_runtime383.jsx)(
                "div",
                {
                  id: cropAreaDescriptionId,
                  style: VISUALLY_HIDDEN_STYLE,
                  children: (0, import_i18n147.__)(
                    "When this area is focused, use arrow keys to move the image and plus or minus to zoom. Tab to resize handles and controls."
                  )
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime383.jsxs)(
                "div",
                {
                  className: "wp-media-editor-image-editor__stage",
                  "data-testid": "cropper-stage",
                  style: stageStyle,
                  onTransitionEnd: handleSettleTransitionEnd,
                  children: [
                    /* @__PURE__ */ (0, import_jsx_runtime383.jsx)(
                      "img",
                      {
                        className: "wp-media-editor-image-editor__image",
                        "data-testid": "cropper-image",
                        src,
                        alt: "",
                        onLoad: handleImageLoad,
                        style: imageStyle,
                        draggable: false
                      }
                    ),
                    showDimming && /* @__PURE__ */ (0, import_jsx_runtime383.jsx)(
                      DimmingOverlay,
                      {
                        cropRect: state2.cropRect,
                        containerSize: canvasSize,
                        imageSize: scaledVisualSize,
                        transition: settleStencilTransition
                      }
                    ),
                    /* @__PURE__ */ (0, import_jsx_runtime383.jsx)(
                      StencilComponent,
                      {
                        cropRect: state2.cropRect,
                        containerSize: canvasSize,
                        imageSize: scaledVisualSize,
                        onCropChange: handleCropChange,
                        onResizeStart: handleResizeStart,
                        onResizeEnd: handleResizeEnd,
                        onEscape: handleEscape,
                        aspectRatio,
                        freeformCrop,
                        isResizeDisabled: isTouchPinching || disabled2,
                        stencilTransition: settleStencilTransition,
                        cropBounds,
                        minCropSize,
                        snapCropRect,
                        keyboardResizeStep
                      }
                    ),
                    (showGrid === true || isInteractiveGrid) && /* @__PURE__ */ (0, import_jsx_runtime383.jsx)(
                      GridOverlay,
                      {
                        cropRect: state2.cropRect,
                        containerSize: canvasSize,
                        imageSize: scaledVisualSize
                      }
                    ),
                    activeHandle && outputSize && /* @__PURE__ */ (0, import_jsx_runtime383.jsx)(
                      DimensionsOverlay,
                      {
                        cropRect: state2.cropRect,
                        containerSize: canvasSize,
                        imageSize: scaledVisualSize,
                        activeHandle,
                        outputWidth: outputSize.width,
                        outputHeight: outputSize.height
                      }
                    )
                  ]
                }
              )
            ]
          }
        )
      }
    );
  }
  var CropperInnerWithRef = (0, import_element237.forwardRef)(
    CropperInner
  );
  var Cropper = (0, import_element237.forwardRef)(
    (props, ref) => /* @__PURE__ */ (0, import_jsx_runtime383.jsx)(ViewportProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime383.jsx)(CropperInnerWithRef, { ...props, ref }) })
  );

  // packages/media-editor/build-module/state/use-media-editor-state.mjs
  var import_element238 = __toESM(require_element(), 1);

  // packages/media-editor/build-module/state/types.mjs
  var DEFAULT_CROP_OPTIONS = {
    aspectRatioValue: "0"
  };

  // packages/media-editor/build-module/state/composite-reducer.mjs
  function mediaEditorReducer(state2, action) {
    switch (action.type) {
      case "CROPPER": {
        const nextCropper = cropperReducer(state2.cropper, action.action);
        if (nextCropper === state2.cropper) {
          return state2;
        }
        return { ...state2, cropper: nextCropper };
      }
      case "SET_ASPECT_RATIO_VALUE": {
        const { presetKey, resolved, visualSize } = action.payload;
        const shouldReshape = resolved !== void 0 && resolved > 0 && visualSize.width > 0 && visualSize.height > 0;
        const nextCropOptions = {
          ...state2.cropOptions,
          aspectRatioValue: presetKey
        };
        if (!shouldReshape) {
          if (state2.cropOptions.aspectRatioValue === presetKey) {
            return state2;
          }
          return { ...state2, cropOptions: nextCropOptions };
        }
        const newCropRect = computeInscribedRect(resolved, visualSize);
        const nextCropper = cropperReducer(state2.cropper, {
          type: "SET_CROP_RECT",
          payload: newCropRect
        });
        return {
          cropper: nextCropper,
          cropOptions: nextCropOptions
        };
      }
      case "RESET_CROP_OPTIONS": {
        if (state2.cropOptions.aspectRatioValue === DEFAULT_CROP_OPTIONS.aspectRatioValue) {
          return state2;
        }
        return {
          ...state2,
          cropOptions: { ...DEFAULT_CROP_OPTIONS }
        };
      }
      case "RESTORE_SNAPSHOT":
        return action.payload;
      case "VIEWPORT_ADJUST_CROP_RECT": {
        const nextCropper = cropperReducer(state2.cropper, {
          type: "SET_CROP_RECT",
          payload: action.payload
        });
        if (nextCropper === state2.cropper) {
          return state2;
        }
        return { ...state2, cropper: nextCropper };
      }
    }
  }
  function areMediaEditorStatesEqual(a2, b2) {
    if (a2 === b2) {
      return true;
    }
    return areCropperStatesEqual(a2.cropper, b2.cropper) && a2.cropOptions.aspectRatioValue === b2.cropOptions.aspectRatioValue;
  }
  function buildInitialMediaEditorState(initialCropper, initialOptions) {
    return {
      cropper: initialCropper,
      cropOptions: { ...DEFAULT_CROP_OPTIONS, ...initialOptions }
    };
  }

  // packages/media-editor/build-module/state/use-media-editor-state.mjs
  function resolveAspectRatio(presetKey, cropperImage) {
    const num = parseFloat(presetKey);
    if (num === 0 || Number.isNaN(num)) {
      return void 0;
    }
    if (num === ORIGINAL_ASPECT_RATIO) {
      if (cropperImage && cropperImage.naturalWidth > 0 && cropperImage.naturalHeight > 0) {
        return cropperImage.naturalWidth / cropperImage.naturalHeight;
      }
      return void 0;
    }
    if (num > 0) {
      return num;
    }
    return void 0;
  }
  function areCropperImagesEqual(a2, b2) {
    return a2?.src === b2?.src && a2?.naturalWidth === b2?.naturalWidth && a2?.naturalHeight === b2?.naturalHeight;
  }
  function useMediaEditorState(initialState) {
    const [state2, dispatch9] = (0, import_element238.useReducer)(
      mediaEditorReducer,
      null,
      () => buildInitialMediaEditorState(
        enforceContainment({
          ...DEFAULT_STATE2,
          ...initialState?.cropper
        }),
        initialState?.cropOptions
      )
    );
    const [initialBaseline, setInitialBaseline] = (0, import_element238.useState)(() => state2);
    const stateRef = (0, import_element238.useRef)(state2);
    const visualSizeRef = (0, import_element238.useRef)({ width: 0, height: 0 });
    const historyRef = (0, import_element238.useRef)([]);
    const redoStackRef = (0, import_element238.useRef)([]);
    const [hasUndo, setHasUndo] = (0, import_element238.useState)(false);
    const [hasRedo, setHasRedo] = (0, import_element238.useState)(false);
    const isGestureOpenRef = (0, import_element238.useRef)(false);
    const gestureSnapshotRef = (0, import_element238.useRef)(null);
    const pushSnapshot = (0, import_element238.useCallback)((snapshot) => {
      const last = historyRef.current[historyRef.current.length - 1];
      if (last && areMediaEditorStatesEqual(last, snapshot)) {
        return;
      }
      historyRef.current = [...historyRef.current, snapshot];
      redoStackRef.current = [];
      setHasUndo(true);
      setHasRedo(false);
    }, []);
    const dispatchWithHistory = (0, import_element238.useCallback)(
      (action, recordHistory = true) => {
        const preState = stateRef.current;
        const postState = mediaEditorReducer(preState, action);
        if (recordHistory) {
          if (!areMediaEditorStatesEqual(preState, postState)) {
            if (isGestureOpenRef.current) {
              if (gestureSnapshotRef.current === null) {
                gestureSnapshotRef.current = preState;
              }
            } else {
              pushSnapshot(preState);
            }
          }
        }
        stateRef.current = postState;
        dispatch9(action);
      },
      [pushSnapshot]
    );
    const beginGesture = (0, import_element238.useCallback)(() => {
      if (isGestureOpenRef.current) {
        return;
      }
      isGestureOpenRef.current = true;
      gestureSnapshotRef.current = null;
    }, []);
    const endGesture = (0, import_element238.useCallback)(() => {
      const snapshot = gestureSnapshotRef.current;
      if (snapshot && !areMediaEditorStatesEqual(snapshot, stateRef.current)) {
        pushSnapshot(snapshot);
      }
      gestureSnapshotRef.current = null;
      isGestureOpenRef.current = false;
    }, [pushSnapshot]);
    const dispatchCropperAction = (0, import_element238.useCallback)(
      (action) => {
        dispatchWithHistory({ type: "CROPPER", action });
      },
      [dispatchWithHistory]
    );
    const cropperSetters = (0, import_element238.useMemo)(
      () => buildCropperSetters(
        dispatchCropperAction,
        () => stateRef.current.cropper
      ),
      [dispatchCropperAction]
    );
    const setImage = (0, import_element238.useCallback)((image) => {
      if (areCropperImagesEqual(stateRef.current.cropper.image, image)) {
        return;
      }
      const action = {
        type: "CROPPER",
        action: { type: "SET_IMAGE", payload: image }
      };
      const next = mediaEditorReducer(stateRef.current, action);
      stateRef.current = next;
      dispatch9(action);
      setInitialBaseline(next);
      isGestureOpenRef.current = false;
      gestureSnapshotRef.current = null;
      historyRef.current = [];
      redoStackRef.current = [];
      setHasUndo(false);
      setHasRedo(false);
    }, []);
    const reset = (0, import_element238.useCallback)(
      (resetState) => {
        dispatchWithHistory({
          type: "CROPPER",
          action: { type: "RESET", payload: resetState }
        });
      },
      [dispatchWithHistory]
    );
    const setAspectRatioValue = (0, import_element238.useCallback)(
      (presetKey) => {
        const resolved = resolveAspectRatio(
          presetKey,
          stateRef.current.cropper.image
        );
        dispatchWithHistory({
          type: "SET_ASPECT_RATIO_VALUE",
          payload: {
            presetKey,
            resolved,
            visualSize: visualSizeRef.current
          }
        });
      },
      [dispatchWithHistory]
    );
    const resetCropOptions = (0, import_element238.useCallback)(() => {
      dispatchWithHistory({ type: "RESET_CROP_OPTIONS" });
    }, [dispatchWithHistory]);
    const undo2 = (0, import_element238.useCallback)(() => {
      endGesture();
      const prev = historyRef.current[historyRef.current.length - 1];
      if (!prev) {
        return;
      }
      redoStackRef.current = [stateRef.current, ...redoStackRef.current];
      historyRef.current = historyRef.current.slice(0, -1);
      setHasUndo(historyRef.current.length > 0);
      setHasRedo(true);
      stateRef.current = prev;
      dispatch9({ type: "RESTORE_SNAPSHOT", payload: prev });
    }, [endGesture]);
    const redo2 = (0, import_element238.useCallback)(() => {
      endGesture();
      const next = redoStackRef.current[0];
      if (!next) {
        return;
      }
      historyRef.current = [...historyRef.current, stateRef.current];
      redoStackRef.current = redoStackRef.current.slice(1);
      setHasUndo(true);
      setHasRedo(redoStackRef.current.length > 0);
      stateRef.current = next;
      dispatch9({ type: "RESTORE_SNAPSHOT", payload: next });
    }, [endGesture]);
    const setVisualSize = (0, import_element238.useCallback)((size4) => {
      visualSizeRef.current = size4;
    }, []);
    const adjustCropRectForViewport = (0, import_element238.useCallback)(
      (rect) => {
        dispatchWithHistory(
          { type: "VIEWPORT_ADJUST_CROP_RECT", payload: rect },
          false
        );
      },
      [dispatchWithHistory]
    );
    const isDirty = !areMediaEditorStatesEqual(state2, initialBaseline);
    const isCropperDirty = !areCropperStatesEqual(
      state2.cropper,
      initialBaseline.cropper
    );
    const getCroppedImage = (0, import_element238.useCallback)(
      (mimeType, quality) => {
        if (!state2.cropper.image) {
          return Promise.reject(
            new Error("No image loaded \u2014 call setImage first.")
          );
        }
        return exportCroppedImage(
          state2.cropper.image.src,
          state2.cropper,
          mimeType,
          quality
        );
      },
      [state2.cropper]
    );
    const controller = (0, import_element238.useMemo)(
      () => ({
        // CropperController surface (state is the cropper slice so a
        // <Cropper> takes this controller as-is).
        ...cropperSetters,
        state: state2.cropper,
        setImage,
        reset,
        isDirty,
        getCroppedImage,
        // Composite extensions
        cropOptions: state2.cropOptions,
        setAspectRatioValue,
        resetCropOptions,
        isCropperDirty,
        hasUndo,
        hasRedo,
        undo: undo2,
        redo: redo2,
        beginGesture,
        endGesture,
        setVisualSize,
        adjustCropRectForViewport
      }),
      [
        cropperSetters,
        state2.cropper,
        setImage,
        reset,
        isDirty,
        getCroppedImage,
        state2.cropOptions,
        setAspectRatioValue,
        resetCropOptions,
        isCropperDirty,
        hasUndo,
        hasRedo,
        undo2,
        redo2,
        beginGesture,
        endGesture,
        setVisualSize,
        adjustCropRectForViewport
      ]
    );
    return controller;
  }

  // packages/media-editor/build-module/state/media-editor-state-provider.mjs
  var import_element239 = __toESM(require_element(), 1);
  var import_jsx_runtime384 = __toESM(require_jsx_runtime(), 1);
  var MediaEditorStateContext = (0, import_element239.createContext)(
    null
  );
  function MediaEditorStateProvider({
    initialCropperState,
    initialCropOptions,
    children
  }) {
    const controller = useMediaEditorState({
      cropper: initialCropperState,
      cropOptions: initialCropOptions
    });
    return /* @__PURE__ */ (0, import_jsx_runtime384.jsx)(MediaEditorStateContext.Provider, { value: controller, children });
  }
  function useMediaEditor() {
    const context = (0, import_element239.useContext)(MediaEditorStateContext);
    if (!context) {
      throw new Error(
        "useMediaEditor must be used within a MediaEditorStateProvider."
      );
    }
    return context;
  }

  // packages/media-editor/build-module/components/media-editor-canvas/index.mjs
  var import_jsx_runtime385 = __toESM(require_jsx_runtime(), 1);
  function MediaEditorCanvas({
    isPlacementActive = false,
    onGestureStart,
    onGestureEnd,
    disabled: disabled2 = false
  }) {
    const { media } = useMediaEditorContext();
    const controller = useMediaEditor();
    const { aspectRatioValue } = controller.cropOptions;
    const cropperImage = controller.state.image;
    const { beginGesture, endGesture, setImage } = controller;
    const [status, setStatus] = (0, import_element240.useState)(
      "loading"
    );
    const aspectRatio = (0, import_element240.useMemo)(
      () => resolveAspectRatio(aspectRatioValue, cropperImage),
      [aspectRatioValue, cropperImage]
    );
    const handleGestureStart = (0, import_element240.useCallback)(() => {
      beginGesture();
      onGestureStart?.();
    }, [beginGesture, onGestureStart]);
    const handleGestureEnd = (0, import_element240.useCallback)(() => {
      endGesture();
      onGestureEnd?.();
    }, [endGesture, onGestureEnd]);
    const mediaUrl = media?.source_url;
    const mediaType = getMediaTypeFromMimeType(media?.mime_type);
    const mediaWidth = Number(media?.media_details?.width);
    const mediaHeight = Number(media?.media_details?.height);
    (0, import_element240.useEffect)(() => {
      if (cropperImage || !mediaUrl || !Number.isFinite(mediaWidth) || !Number.isFinite(mediaHeight) || mediaWidth <= 0 || mediaHeight <= 0) {
        return;
      }
      setImage({
        src: mediaUrl,
        naturalWidth: mediaWidth,
        naturalHeight: mediaHeight
      });
    }, [cropperImage, mediaUrl, mediaWidth, mediaHeight, setImage]);
    const isImage = mediaType.type === "image";
    (0, import_element240.useEffect)(() => {
      if (!mediaUrl || !isImage) {
        return;
      }
      setStatus("loading");
      const probe = new window.Image();
      probe.onload = () => setStatus("loaded");
      probe.onerror = () => setStatus("error");
      probe.src = mediaUrl;
      if (probe.complete) {
        setStatus(probe.naturalWidth > 0 ? "loaded" : "error");
      }
      return () => {
        probe.onload = null;
        probe.onerror = null;
      };
    }, [mediaUrl, isImage]);
    if (!mediaUrl || !isImage) {
      return null;
    }
    if (status === "error") {
      return /* @__PURE__ */ (0, import_jsx_runtime385.jsx)("div", { className: "media-editor-canvas", children: /* @__PURE__ */ (0, import_jsx_runtime385.jsx)("div", { className: "media-editor-canvas__error", role: "alert", children: /* @__PURE__ */ (0, import_jsx_runtime385.jsx)("p", { children: (0, import_i18n148.__)("Failed to load image.") }) }) });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime385.jsxs)("div", { className: "media-editor-canvas", children: [
      status === "loading" && /* @__PURE__ */ (0, import_jsx_runtime385.jsx)("div", { className: "media-editor-canvas__spinner", children: /* @__PURE__ */ (0, import_jsx_runtime385.jsx)(import_components81.Spinner, {}) }),
      /* @__PURE__ */ (0, import_jsx_runtime385.jsx)(
        "div",
        {
          className: clsx_default("media-editor-canvas__cropper", {
            "is-loaded": status === "loaded"
          }),
          children: /* @__PURE__ */ (0, import_jsx_runtime385.jsx)(
            Cropper,
            {
              src: mediaUrl,
              controller,
              aspectRatio,
              freeformCrop: true,
              showGrid: "interactive",
              isPlacementActive,
              onGestureStart: handleGestureStart,
              onGestureEnd: handleGestureEnd,
              disabled: disabled2
            }
          )
        }
      )
    ] });
  }

  // packages/media-editor/build-module/components/media-editor-fine-rotation/index.mjs
  var import_i18n149 = __toESM(require_i18n(), 1);

  // packages/media-editor/build-module/hooks/use-crop-gesture-handlers.mjs
  var import_element241 = __toESM(require_element(), 1);
  var CROP_CONTROL_ATTR = "data-crop-control";
  var KEYBOARD_GESTURE_IDLE_MS = 300;
  function useCropGestureHandlers(options = {}) {
    const { commitOnKeyUp = true } = options;
    const { beginGesture, endGesture } = useMediaEditor();
    const keyboardTimerRef = (0, import_element241.useRef)();
    const clearKeyboardTimer = (0, import_element241.useCallback)(() => {
      clearTimeout(keyboardTimerRef.current);
    }, []);
    const scheduleKeyboardEnd = (0, import_element241.useCallback)(() => {
      clearKeyboardTimer();
      keyboardTimerRef.current = setTimeout(() => {
        endGesture();
      }, KEYBOARD_GESTURE_IDLE_MS);
    }, [clearKeyboardTimer, endGesture]);
    (0, import_element241.useEffect)(() => clearKeyboardTimer, [clearKeyboardTimer]);
    const handlePointerDownCapture = (0, import_element241.useCallback)(() => {
      clearKeyboardTimer();
      beginGesture();
    }, [beginGesture, clearKeyboardTimer]);
    const handlePointerEnd = (0, import_element241.useCallback)(() => {
      clearKeyboardTimer();
      endGesture();
    }, [clearKeyboardTimer, endGesture]);
    const handleKeyDownCapture = (0, import_element241.useCallback)(() => {
      beginGesture();
      if (!commitOnKeyUp) {
        scheduleKeyboardEnd();
      }
    }, [beginGesture, commitOnKeyUp, scheduleKeyboardEnd]);
    const handleKeyUp = (0, import_element241.useCallback)(() => {
      if (commitOnKeyUp) {
        endGesture();
        return;
      }
      scheduleKeyboardEnd();
    }, [commitOnKeyUp, endGesture, scheduleKeyboardEnd]);
    return {
      [CROP_CONTROL_ATTR]: true,
      onPointerDownCapture: handlePointerDownCapture,
      onPointerUp: handlePointerEnd,
      onPointerCancel: handlePointerEnd,
      onKeyDownCapture: handleKeyDownCapture,
      onKeyUp: handleKeyUp
    };
  }

  // packages/media-editor/build-module/components/rotation-ruler/index.mjs
  var import_element243 = __toESM(require_element(), 1);

  // packages/media-editor/build-module/components/rotation-ruler/use-ruler-drag.mjs
  var import_element242 = __toESM(require_element(), 1);
  function pxToValueDelta(deltaPx, pixelsPerStep, step) {
    return -deltaPx / pixelsPerStep * step;
  }
  function clampValue(value, min4, max4) {
    if (value < min4) {
      return min4;
    }
    if (value > max4) {
      return max4;
    }
    return value;
  }
  function quantize(value, step) {
    return Math.round(value / step) * step;
  }
  function useRulerDrag(options) {
    const {
      value,
      onChange,
      min: min4,
      max: max4,
      step,
      pixelsPerStep,
      disabled: disabled2,
      onPointerDownStart
    } = options;
    const latestRef = (0, import_element242.useRef)({
      value,
      startX: 0,
      startValue: 0,
      activeStep: step,
      dragging: false,
      captureElement: null,
      capturePointerId: 0,
      windowPointerUp: null
    });
    (0, import_element242.useEffect)(() => {
      latestRef.current.value = value;
    }, [value]);
    const endDrag = (0, import_element242.useCallback)(() => {
      const state2 = latestRef.current;
      if (!state2.dragging) {
        return;
      }
      state2.dragging = false;
      if (state2.captureElement && state2.captureElement.hasPointerCapture(state2.capturePointerId)) {
        state2.captureElement.releasePointerCapture(
          state2.capturePointerId
        );
      }
      state2.captureElement = null;
      if (state2.windowPointerUp) {
        window.removeEventListener("pointerup", state2.windowPointerUp);
        window.removeEventListener(
          "pointercancel",
          state2.windowPointerUp
        );
        state2.windowPointerUp = null;
      }
    }, []);
    (0, import_element242.useEffect)(() => endDrag, [endDrag]);
    (0, import_element242.useEffect)(() => {
      if (disabled2) {
        endDrag();
      }
    }, [disabled2, endDrag]);
    const onPointerDown = (0, import_element242.useCallback)(
      (event) => {
        if (disabled2 || event.button !== 0) {
          return;
        }
        const state2 = latestRef.current;
        event.currentTarget.setPointerCapture(event.pointerId);
        state2.captureElement = event.currentTarget;
        state2.capturePointerId = event.pointerId;
        state2.startX = event.clientX;
        state2.startValue = state2.value;
        state2.activeStep = event.shiftKey ? step / 2 : step;
        state2.dragging = true;
        onPointerDownStart?.();
        const onWindowUp = () => endDrag();
        state2.windowPointerUp = onWindowUp;
        window.addEventListener("pointerup", onWindowUp);
        window.addEventListener("pointercancel", onWindowUp);
      },
      [disabled2, onPointerDownStart, endDrag, step]
    );
    const onPointerMove = (0, import_element242.useCallback)(
      (event) => {
        const state2 = latestRef.current;
        if (disabled2 || !state2.dragging) {
          return;
        }
        const requestedStep = event.shiftKey ? step / 2 : step;
        if (requestedStep !== state2.activeStep) {
          state2.startX = event.clientX;
          state2.startValue = state2.value;
          state2.activeStep = requestedStep;
        }
        const deltaPx = event.clientX - state2.startX;
        const deltaValue = pxToValueDelta(
          deltaPx,
          pixelsPerStep,
          state2.activeStep
        );
        const raw = state2.startValue + deltaValue;
        const stepped = quantize(raw, state2.activeStep);
        const next = clampValue(stepped, min4, max4);
        if (next !== state2.value) {
          state2.value = next;
          onChange(next);
        }
      },
      [disabled2, onChange, min4, max4, step, pixelsPerStep]
    );
    return {
      onPointerDown,
      onPointerMove,
      onPointerUp: endDrag,
      onPointerCancel: endDrag
    };
  }

  // packages/media-editor/build-module/components/rotation-ruler/index.mjs
  var import_jsx_runtime386 = __toESM(require_jsx_runtime(), 1);
  var STRIP_HEIGHT = 32;
  var LABEL_BASELINE_Y = 11;
  var MAJOR_INTERVAL = 15;
  var TICK_HEIGHT_MINOR = 4;
  var TICK_HEIGHT_MID = 8;
  var TICK_HEIGHT_MAJOR = 14;
  function useTicks(min4, max4) {
    return (0, import_element243.useMemo)(() => {
      const out = [];
      for (let v3 = Math.ceil(min4); v3 <= Math.floor(max4); v3 += 1) {
        let kind = "minor";
        let height = TICK_HEIGHT_MINOR;
        if (v3 % 15 === 0) {
          kind = "major";
          height = TICK_HEIGHT_MAJOR;
        } else if (v3 % 5 === 0) {
          kind = "mid";
          height = TICK_HEIGHT_MID;
        }
        out.push({ value: v3, kind, height });
      }
      return out;
    }, [min4, max4]);
  }
  function formatValue(value) {
    const rounded = Math.round(value * 10) / 10;
    return Number.isInteger(rounded) ? rounded.toFixed(0) : rounded.toFixed(1);
  }
  function RotationRuler(props) {
    const {
      value,
      onChange,
      min: min4 = -45,
      max: max4 = 45,
      step = 1,
      label,
      unit = "\xB0",
      pixelsPerStep = 6,
      className,
      id,
      disabled: disabled2 = false
    } = props;
    const inputRef = (0, import_element243.useRef)(null);
    const generatedId = (0, import_element243.useId)();
    const inputId = id ?? generatedId;
    const dragHandlers = useRulerDrag({
      value,
      onChange,
      min: min4,
      max: max4,
      step,
      pixelsPerStep,
      disabled: disabled2,
      onPointerDownStart: () => inputRef.current?.focus()
    });
    const handleKeyDown = (event) => {
      const isIncrement = event.key === "ArrowRight" || event.key === "ArrowUp";
      const isDecrement = event.key === "ArrowLeft" || event.key === "ArrowDown";
      if (!isIncrement && !isDecrement) {
        return;
      }
      event.preventDefault();
      if (disabled2) {
        return;
      }
      const direction = isIncrement ? 1 : -1;
      const magnitude = event.shiftKey ? step / 2 : step;
      const next = clampValue(value + direction * magnitude, min4, max4);
      if (next !== value) {
        onChange(next);
      }
    };
    const display = `${formatValue(value)}${unit}`;
    const ticks = useTicks(min4, max4);
    const pxPerUnit = pixelsPerStep / step;
    const stripStyle = (0, import_element243.useMemo)(() => {
      const offset4 = -value * pxPerUnit;
      return {
        transform: `translateX(calc(-50% + ${offset4}px))`
      };
    }, [value, pxPerUnit]);
    const closestMajor = Math.round(value / MAJOR_INTERVAL) * MAJOR_INTERVAL;
    const onMajor = Math.abs(value - closestMajor) < 0.01;
    const numberText = onMajor ? `${closestMajor}` : formatValue(value);
    const isNegative = numberText.startsWith("-");
    const digits = isNegative ? numberText.slice(1) : numberText;
    const majorTicks = ticks.filter((tick) => tick.kind === "major");
    return /* @__PURE__ */ (0, import_jsx_runtime386.jsxs)(
      "div",
      {
        className: clsx_default("rotation-ruler", className),
        role: "presentation",
        "data-testid": "rotation-ruler",
        "data-disabled": disabled2 || void 0,
        ...dragHandlers,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime386.jsx)(
            "input",
            {
              ref: inputRef,
              id: inputId,
              type: "range",
              className: "rotation-ruler__input",
              min: min4,
              max: max4,
              step: "any",
              value,
              disabled: disabled2,
              "aria-label": label,
              "aria-valuetext": display,
              onChange: (event) => onChange(
                clampValue(event.target.valueAsNumber, min4, max4)
              ),
              onKeyDown: handleKeyDown
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime386.jsx)("div", { className: "rotation-ruler__strip", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime386.jsxs)(
            "svg",
            {
              className: "rotation-ruler__ticks",
              style: stripStyle,
              width: (max4 - min4) * pxPerUnit,
              height: STRIP_HEIGHT,
              viewBox: `${min4 * pxPerUnit} 0 ${(max4 - min4) * pxPerUnit} ${STRIP_HEIGHT}`,
              preserveAspectRatio: "xMidYMid meet",
              children: [
                ticks.map((tick) => /* @__PURE__ */ (0, import_jsx_runtime386.jsx)(
                  "line",
                  {
                    x1: tick.value * pxPerUnit,
                    x2: tick.value * pxPerUnit,
                    y1: STRIP_HEIGHT - tick.height,
                    y2: STRIP_HEIGHT,
                    className: `rotation-ruler__tick rotation-ruler__tick--${tick.kind}`
                  },
                  tick.value
                )),
                majorTicks.map((tick) => /* @__PURE__ */ (0, import_jsx_runtime386.jsxs)(
                  "text",
                  {
                    x: tick.value * pxPerUnit,
                    y: LABEL_BASELINE_Y,
                    textAnchor: "middle",
                    className: "rotation-ruler__label",
                    children: [
                      tick.value,
                      unit
                    ]
                  },
                  tick.value
                ))
              ]
            }
          ) }),
          /* @__PURE__ */ (0, import_jsx_runtime386.jsx)("div", { className: "rotation-ruler__active-label", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime386.jsxs)("span", { className: "rotation-ruler__active-label-number", children: [
            isNegative && /* @__PURE__ */ (0, import_jsx_runtime386.jsx)("span", { className: "rotation-ruler__active-label-sign", children: "-" }),
            digits,
            /* @__PURE__ */ (0, import_jsx_runtime386.jsx)("span", { className: "rotation-ruler__active-label-unit", children: unit })
          ] }) }),
          /* @__PURE__ */ (0, import_jsx_runtime386.jsx)("div", { className: "rotation-ruler__pointer", "aria-hidden": "true" })
        ]
      }
    );
  }

  // packages/media-editor/build-module/components/media-editor-fine-rotation/index.mjs
  var import_jsx_runtime387 = __toESM(require_jsx_runtime(), 1);
  function MediaEditorFineRotation({
    onPlacementControlInteraction,
    disabled: disabled2 = false
  }) {
    const { state: state2, setRotation } = useMediaEditor();
    const rotationGestureHandlers = useCropGestureHandlers({
      commitOnKeyUp: false
    });
    const baseAngle = Math.round(state2.rotation / 90) * 90;
    const singleFlip = state2.flip.horizontal !== state2.flip.vertical;
    const visualDir = singleFlip ? -1 : 1;
    const fineOffset = (state2.rotation - baseAngle) * visualDir;
    const handleRotationSlider = (value) => {
      const EPS = 0.01;
      const clamped = Math.max(
        -MAX_ROTATION_OFFSET + EPS,
        Math.min(MAX_ROTATION_OFFSET - EPS, value)
      );
      onPlacementControlInteraction?.();
      setRotation(baseAngle + clamped * visualDir);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime387.jsx)(
      "div",
      {
        role: "presentation",
        className: "media-editor-fine-rotation",
        ...rotationGestureHandlers,
        children: /* @__PURE__ */ (0, import_jsx_runtime387.jsx)(
          RotationRuler,
          {
            label: (0, import_i18n149.__)("Fine rotation"),
            min: -MAX_ROTATION_OFFSET,
            max: MAX_ROTATION_OFFSET,
            value: fineOffset,
            onChange: handleRotationSlider,
            disabled: disabled2
          }
        )
      }
    );
  }

  // packages/media-editor/build-module/components/media-editor-crop-panel/index.mjs
  var import_components83 = __toESM(require_components(), 1);
  var import_i18n151 = __toESM(require_i18n(), 1);

  // packages/media-editor/build-module/components/media-editor-image-controls/index.mjs
  var import_components82 = __toESM(require_components(), 1);
  var import_i18n150 = __toESM(require_i18n(), 1);

  // packages/media-editor/build-module/components/media-editor/use-crop-options.mjs
  var import_element244 = __toESM(require_element(), 1);
  function getAspectRatioOptions(aspectRatioPresets) {
    return [
      ...DEFAULT_ASPECT_RATIOS.filter((preset) => preset.value <= 0),
      ...aspectRatioPresets ?? DEFAULT_ASPECT_RATIOS.filter((preset) => preset.value > 0)
    ];
  }
  function useCropOptions({
    aspectRatioPresets
  } = {}) {
    const controller = useMediaEditor();
    const { aspectRatioValue } = controller.cropOptions;
    const cropperImage = controller.state.image;
    const aspectRatioOptions = (0, import_element244.useMemo)(
      () => getAspectRatioOptions(aspectRatioPresets),
      [aspectRatioPresets]
    );
    const resolvedAspectRatio = (0, import_element244.useMemo)(
      () => resolveAspectRatio(aspectRatioValue, cropperImage),
      [aspectRatioValue, cropperImage]
    );
    return {
      aspectRatioValue,
      setAspectRatioValue: controller.setAspectRatioValue,
      aspectRatioOptions,
      resolvedAspectRatio,
      resetCropOptions: controller.resetCropOptions
    };
  }

  // packages/media-editor/build-module/components/media-editor-image-controls/index.mjs
  var import_jsx_runtime388 = __toESM(require_jsx_runtime(), 1);
  var DEFAULT_ZOOM_FACTOR = 1.2;
  function MediaEditorImageControls({
    withLabels = false,
    showAspectRatioControl = false,
    aspectRatioPresets,
    zoomFactor = DEFAULT_ZOOM_FACTOR,
    disabled: disabled2 = false
  }) {
    const { state: state2, setFlip, snapRotate90, setZoom } = useMediaEditor();
    const { aspectRatioValue, setAspectRatioValue, aspectRatioOptions } = useCropOptions({ aspectRatioPresets });
    const hasAspectRatioControl = !withLabels && showAspectRatioControl;
    const minZoom = getMinZoom(state2);
    const zoomByFactor = (factor) => {
      setZoom(
        Math.min(MAX_ZOOM, Math.max(minZoom, state2.zoom * factor))
      );
    };
    const rotateButtons = /* @__PURE__ */ (0, import_jsx_runtime388.jsxs)(import_jsx_runtime388.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime388.jsx)(
        import_components82.Button,
        {
          size: "compact",
          icon: rotate_left_default,
          label: (0, import_i18n150.__)("Rotate 90\xB0 counter-clockwise"),
          showTooltip: true,
          disabled: disabled2,
          accessibleWhenDisabled: true,
          onClick: () => snapRotate90(-1)
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime388.jsx)(
        import_components82.Button,
        {
          size: "compact",
          icon: rotate_right_default,
          label: (0, import_i18n150.__)("Rotate 90\xB0 clockwise"),
          showTooltip: true,
          disabled: disabled2,
          accessibleWhenDisabled: true,
          onClick: () => snapRotate90(1)
        }
      )
    ] });
    const flipButtons = /* @__PURE__ */ (0, import_jsx_runtime388.jsxs)(import_jsx_runtime388.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime388.jsx)(
        import_components82.Button,
        {
          size: "compact",
          icon: flip_horizontal_default,
          label: (0, import_i18n150.__)("Flip horizontal"),
          showTooltip: true,
          isPressed: state2.flip.horizontal,
          disabled: disabled2,
          accessibleWhenDisabled: true,
          onClick: () => setFlip({
            horizontal: !state2.flip.horizontal,
            vertical: state2.flip.vertical
          })
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime388.jsx)(
        import_components82.Button,
        {
          size: "compact",
          icon: flip_vertical_default,
          label: (0, import_i18n150.__)("Flip vertical"),
          showTooltip: true,
          isPressed: state2.flip.vertical,
          disabled: disabled2,
          accessibleWhenDisabled: true,
          onClick: () => setFlip({
            horizontal: state2.flip.horizontal,
            vertical: !state2.flip.vertical
          })
        }
      )
    ] });
    const zoomButtons = /* @__PURE__ */ (0, import_jsx_runtime388.jsxs)(import_jsx_runtime388.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime388.jsx)(
        import_components82.Button,
        {
          size: "compact",
          icon: plus_default,
          label: (0, import_i18n150.__)("Zoom in"),
          showTooltip: true,
          disabled: disabled2 || state2.zoom >= MAX_ZOOM,
          accessibleWhenDisabled: true,
          onClick: () => zoomByFactor(zoomFactor)
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime388.jsx)(
        import_components82.Button,
        {
          size: "compact",
          icon: line_solid_default,
          label: (0, import_i18n150.__)("Zoom out"),
          showTooltip: true,
          disabled: disabled2 || state2.zoom <= minZoom,
          accessibleWhenDisabled: true,
          onClick: () => zoomByFactor(1 / zoomFactor)
        }
      )
    ] });
    const aspectRatioDropdown = hasAspectRatioControl ? /* @__PURE__ */ (0, import_jsx_runtime388.jsx)(
      import_components82.DropdownMenu,
      {
        icon: aspect_ratio_default,
        label: (0, import_i18n150.__)("Aspect ratio"),
        popoverProps: { placement: "top" },
        toggleProps: { size: "compact", disabled: disabled2 },
        children: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime388.jsx)(import_components82.MenuGroup, { label: (0, import_i18n150.__)("Aspect ratio"), children: aspectRatioOptions.map((preset) => {
          const value = preset.value.toString();
          const isSelected2 = value === aspectRatioValue;
          return /* @__PURE__ */ (0, import_jsx_runtime388.jsx)(
            import_components82.MenuItem,
            {
              role: "menuitemradio",
              isSelected: isSelected2,
              icon: isSelected2 ? check_default : void 0,
              disabled: disabled2,
              onClick: () => {
                if (disabled2) {
                  return;
                }
                setAspectRatioValue(value);
                onClose();
              },
              children: preset.label
            },
            value
          );
        }) })
      }
    ) : null;
    if (withLabels) {
      return /* @__PURE__ */ (0, import_jsx_runtime388.jsxs)("div", { className: "media-editor-image-controls is-stacked", children: [
        /* @__PURE__ */ (0, import_jsx_runtime388.jsxs)("div", { className: "media-editor-image-controls__transforms", children: [
          /* @__PURE__ */ (0, import_jsx_runtime388.jsxs)(
            "div",
            {
              className: "media-editor-image-controls__group",
              role: "group",
              "aria-label": (0, import_i18n150.__)("Rotate"),
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime388.jsx)(
                  "span",
                  {
                    className: "media-editor-image-controls__label",
                    "aria-hidden": "true",
                    children: (0, import_i18n150.__)("Rotate")
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime388.jsx)("div", { className: "media-editor-image-controls__buttons", children: rotateButtons })
              ]
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime388.jsxs)(
            "div",
            {
              className: "media-editor-image-controls__group",
              role: "group",
              "aria-label": (0, import_i18n150.__)("Flip"),
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime388.jsx)(
                  "span",
                  {
                    className: "media-editor-image-controls__label",
                    "aria-hidden": "true",
                    children: (0, import_i18n150.__)("Flip")
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime388.jsx)("div", { className: "media-editor-image-controls__buttons", children: flipButtons })
              ]
            }
          )
        ] }),
        /* @__PURE__ */ (0, import_jsx_runtime388.jsxs)(
          "div",
          {
            className: "media-editor-image-controls__group",
            role: "group",
            "aria-label": (0, import_i18n150.__)("Zoom"),
            children: [
              /* @__PURE__ */ (0, import_jsx_runtime388.jsx)(
                "span",
                {
                  className: "media-editor-image-controls__label",
                  "aria-hidden": "true",
                  children: (0, import_i18n150.__)("Zoom")
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime388.jsx)("div", { className: "media-editor-image-controls__buttons", children: zoomButtons })
            ]
          }
        )
      ] });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime388.jsxs)("div", { className: "media-editor-image-controls", children: [
      rotateButtons,
      flipButtons,
      zoomButtons,
      aspectRatioDropdown
    ] });
  }

  // packages/media-editor/build-module/components/media-editor-crop-panel/index.mjs
  var import_jsx_runtime389 = __toESM(require_jsx_runtime(), 1);
  function MediaEditorCropPanel({
    aspectRatioValue,
    onAspectRatioChange,
    aspectRatioOptions,
    disabled: disabled2 = false
  }) {
    return (
      // Tag the whole panel as a crop-control region so the modal's
      // Cmd+Z handler doesn't mistake the SelectControl input for a
      // metadata field (which would suppress undo).
      /* @__PURE__ */ (0, import_jsx_runtime389.jsxs)(
        Stack,
        {
          direction: "column",
          gap: "xl",
          ...{ [CROP_CONTROL_ATTR]: true },
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime389.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime389.jsx)("h2", {}), children: (0, import_i18n151.__)("Crop options") }),
            /* @__PURE__ */ (0, import_jsx_runtime389.jsx)(MediaEditorImageControls, { withLabels: true, disabled: disabled2 }),
            /* @__PURE__ */ (0, import_jsx_runtime389.jsx)(
              import_components83.SelectControl,
              {
                label: (0, import_i18n151.__)("Aspect ratio"),
                value: aspectRatioValue,
                onChange: onAspectRatioChange,
                disabled: disabled2,
                options: aspectRatioOptions.map((preset) => ({
                  label: preset.label,
                  value: preset.value.toString()
                }))
              }
            )
          ]
        }
      )
    );
  }

  // packages/media-editor/build-module/components/media-editor-keyboard-shortcuts-modal/index.mjs
  var import_components84 = __toESM(require_components(), 1);
  var import_element245 = __toESM(require_element(), 1);
  var import_i18n152 = __toESM(require_i18n(), 1);
  var import_keycodes3 = __toESM(require_keycodes(), 1);
  var import_jsx_runtime390 = __toESM(require_jsx_runtime(), 1);
  var SHORTCUTS = [
    {
      description: (0, import_i18n152.__)("Undo"),
      keyCombination: { modifier: "primary", character: "z" }
    },
    {
      description: (0, import_i18n152.__)("Redo"),
      keyCombination: { modifier: "primaryShift", character: "z" }
    },
    {
      description: (0, import_i18n152.__)("Pan"),
      keyCombination: {
        character: ["\u2191", "\u2193", "\u2190", "\u2192"],
        ariaLabel: (0, import_i18n152.__)("Arrow keys")
      }
    },
    {
      description: (0, import_i18n152.__)("Zoom in"),
      keyCombination: { character: "+" }
    },
    {
      description: (0, import_i18n152.__)("Zoom out"),
      keyCombination: { character: "-" }
    },
    {
      description: (0, import_i18n152.__)("Rotate 90\xB0 clockwise"),
      keyCombination: { character: "R" }
    },
    {
      description: (0, import_i18n152.__)("Rotate 90\xB0 counter-clockwise"),
      keyCombination: { modifier: "shift", character: "R" }
    },
    {
      description: (0, import_i18n152.__)("Flip horizontal"),
      keyCombination: { character: "H" }
    },
    {
      description: (0, import_i18n152.__)("Flip vertical"),
      keyCombination: { character: "V" }
    },
    {
      description: (0, import_i18n152.__)("Pan or resize crop (large step)"),
      keyCombination: {
        modifier: "shift",
        character: ["\u2191", "\u2193", "\u2190", "\u2192"],
        ariaLabel: (0, import_i18n152.__)("Shift + Arrow keys")
      }
    }
  ];
  function KeyCombinationDisplay({
    keyCombination
  }) {
    const { modifier, character, ariaLabel } = keyCombination;
    let keys;
    if (Array.isArray(character)) {
      if (modifier) {
        const sample = import_keycodes3.displayShortcutList[modifier](character[0]);
        keys = [...sample.slice(0, -1), ...character];
      } else {
        keys = character;
      }
    } else {
      keys = modifier ? import_keycodes3.displayShortcutList[modifier](character) : [character];
    }
    const charString = Array.isArray(character) ? character.join("") : character;
    let label;
    if (ariaLabel) {
      label = ariaLabel;
    } else if (modifier) {
      label = import_keycodes3.shortcutAriaLabel[modifier](charString);
    } else {
      label = charString;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime390.jsx)(
      "kbd",
      {
        className: "media-editor-keyboard-shortcuts-modal__shortcut-term",
        "aria-label": label,
        children: keys.map(
          (key, index3) => key === "+" && modifier ? /* @__PURE__ */ (0, import_jsx_runtime390.jsx)(import_element245.Fragment, { children: key }, index3) : /* @__PURE__ */ (0, import_jsx_runtime390.jsx)(
            "kbd",
            {
              className: "media-editor-keyboard-shortcuts-modal__shortcut-key",
              children: key
            },
            index3
          )
        )
      }
    );
  }
  function MediaEditorKeyboardShortcutsModal({
    onClose
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime390.jsxs)(
      import_components84.Modal,
      {
        className: "media-editor-keyboard-shortcuts-modal",
        title: (0, import_i18n152.__)("Keyboard shortcuts"),
        onRequestClose: onClose,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime390.jsx)("p", { className: "media-editor-keyboard-shortcuts-modal__note", children: (0, import_i18n152.__)(
            "These shortcuts work when the image editor has focus."
          ) }),
          /* @__PURE__ */ (0, import_jsx_runtime390.jsx)(
            "ul",
            {
              className: "media-editor-keyboard-shortcuts-modal__shortcut-list",
              role: "list",
              children: SHORTCUTS.map(({ description, keyCombination }, index3) => /* @__PURE__ */ (0, import_jsx_runtime390.jsxs)(
                "li",
                {
                  className: "media-editor-keyboard-shortcuts-modal__shortcut",
                  children: [
                    /* @__PURE__ */ (0, import_jsx_runtime390.jsx)("span", { className: "media-editor-keyboard-shortcuts-modal__shortcut-description", children: description }),
                    /* @__PURE__ */ (0, import_jsx_runtime390.jsx)(
                      KeyCombinationDisplay,
                      {
                        keyCombination
                      }
                    )
                  ]
                },
                index3
              ))
            }
          )
        ]
      }
    );
  }

  // packages/media-editor/build-module/components/media-editor/use-save-media-editor.mjs
  var import_api_fetch2 = __toESM(require_api_fetch(), 1);
  var import_data41 = __toESM(require_data(), 1);
  var import_core_data32 = __toESM(require_core_data(), 1);
  var import_element246 = __toESM(require_element(), 1);
  var import_i18n153 = __toESM(require_i18n(), 1);
  var import_notices14 = __toESM(require_notices(), 1);

  // packages/media-editor/build-module/components/media-editor-modal/build-modifiers.mjs
  var CROP_TOLERANCE = 0.1;
  function buildModifiers(state2, imageSize) {
    const modifiers = [];
    if (imageSize.width === 0 || imageSize.height === 0) {
      return modifiers;
    }
    const { cropRect, pan, zoom, flip: flip4 } = state2;
    const hasFlipH = flip4.horizontal;
    const hasFlipV = flip4.vertical;
    if (hasFlipH || hasFlipV) {
      modifiers.push({
        type: "flip",
        args: { flip: { horizontal: hasFlipH, vertical: hasFlipV } }
      });
    }
    const rawAngle = (state2.rotation % 360 + 360) % 360;
    const singleAxisFlip = hasFlipH !== hasFlipV;
    const signedAngle2 = singleAxisFlip ? (360 - rawAngle) % 360 : rawAngle;
    if (signedAngle2 !== 0) {
      modifiers.push({ type: "rotate", args: { angle: signedAngle2 } });
    }
    const snapRotation = Math.round(state2.rotation / 90) * 90;
    const { width: snapW, height: snapH } = getRotatedBBox(
      imageSize.width,
      imageSize.height,
      snapRotation
    );
    const { width: fullW, height: fullH } = getRotatedBBox(
      imageSize.width,
      imageSize.height,
      state2.rotation
    );
    const imgLeft = 0.5 + pan.x - zoom / 2;
    const imgTop = 0.5 + pan.y - zoom / 2;
    const snapX = (cropRect.x - imgLeft) / zoom * snapW;
    const snapY = (cropRect.y - imgTop) / zoom * snapH;
    const widthPx = cropRect.width / zoom * snapW;
    const heightPx = cropRect.height / zoom * snapH;
    const offsetX = (fullW - snapW) / 2;
    const offsetY = (fullH - snapH) / 2;
    const fullX = snapX + offsetX;
    const fullY = snapY + offsetY;
    const leftPct = fullX / fullW * 100;
    const topPct = fullY / fullH * 100;
    const widthPct = widthPx / fullW * 100;
    const heightPct = heightPx / fullH * 100;
    const coversFullFrame = leftPct <= CROP_TOLERANCE && topPct <= CROP_TOLERANCE && widthPct >= 100 - CROP_TOLERANCE && heightPct >= 100 - CROP_TOLERANCE;
    if (!coversFullFrame) {
      modifiers.push({
        type: "crop",
        args: {
          left: leftPct,
          top: topPct,
          width: widthPct,
          height: heightPct
        }
      });
    }
    return modifiers;
  }

  // packages/media-editor/build-module/components/media-editor/use-save-media-editor.mjs
  var METADATA_EDIT_KEYS = [
    "title",
    "caption",
    "description",
    "alt_text",
    "post"
  ];
  var MEDIA_EDITOR_NOTICES_CONTEXT = "media-editor";
  function getCropModifiers(cropper) {
    if (!cropper.isCropperDirty || !cropper.state.image) {
      return [];
    }
    return buildModifiers(cropper.state, {
      width: cropper.state.image.naturalWidth,
      height: cropper.state.image.naturalHeight
    });
  }
  function getMetadataEdits(pendingEdits, media) {
    const metadataEdits = {};
    for (const key of METADATA_EDIT_KEYS) {
      if (pendingEdits && key in pendingEdits) {
        metadataEdits[key] = pendingEdits[key];
      }
    }
    if (!("post" in metadataEdits) && media?.post !== void 0) {
      metadataEdits.post = media.post;
    }
    return metadataEdits;
  }
  function useSaveMediaEditor({
    cropper,
    id,
    isImage,
    media,
    onSaved
  }) {
    const registry = (0, import_data41.useRegistry)();
    const {
      clearEntityRecordEdits,
      receiveEntityRecords,
      saveEditedEntityRecord
    } = (0, import_data41.useDispatch)(import_core_data32.store);
    const { createErrorNotice, removeAllNotices } = (0, import_data41.useDispatch)(import_notices14.store);
    const [isSaving, setIsSaving] = (0, import_element246.useState)(false);
    const save = (0, import_element246.useCallback)(async () => {
      removeAllNotices("snackbar", MEDIA_EDITOR_NOTICES_CONTEXT);
      setIsSaving(true);
      try {
        let saved;
        const modifiers = getCropModifiers(cropper);
        const previous = modifiers.length > 0 && media ? {
          id,
          url: media.source_url
        } : void 0;
        if (modifiers.length > 0) {
          const pendingEdits = registry.select(import_core_data32.store).getEntityRecordNonTransientEdits(
            "postType",
            "attachment",
            id
          );
          const metadataEdits = getMetadataEdits(pendingEdits, media);
          saved = await (0, import_api_fetch2.default)({
            path: `/wp/v2/media/${id}/edit`,
            method: "POST",
            data: {
              src: media?.source_url,
              modifiers,
              ...metadataEdits
            }
          });
          if (saved) {
            receiveEntityRecords(
              "postType",
              "attachment",
              saved,
              void 0,
              true
            );
          }
        } else {
          saved = await saveEditedEntityRecord(
            "postType",
            "attachment",
            id
          );
        }
        const next = saved ?? media;
        if (next && next.id !== id) {
          clearEntityRecordEdits("postType", "attachment", id);
        }
        if (next && next.id) {
          if (next.id === id) {
            cropper.reset();
          }
          onSaved?.({
            id: next.id,
            url: next.source_url,
            media: next,
            previous
          });
        }
      } catch (error2) {
        const message2 = error2 instanceof Error ? error2.message : error2?.message ?? (0, import_i18n153.__)("An unknown error occurred.");
        createErrorNotice(
          isImage ? (0, import_i18n153.sprintf)(
            /* translators: %s: Error message. */
            (0, import_i18n153.__)("Could not save image. %s"),
            message2
          ) : (0, import_i18n153.sprintf)(
            /* translators: %s: Error message. */
            (0, import_i18n153.__)("Could not save media. %s"),
            message2
          ),
          {
            type: "snackbar",
            context: MEDIA_EDITOR_NOTICES_CONTEXT
          }
        );
      } finally {
        setIsSaving(false);
      }
    }, [
      clearEntityRecordEdits,
      createErrorNotice,
      cropper,
      id,
      isImage,
      media,
      onSaved,
      receiveEntityRecords,
      registry,
      removeAllNotices,
      saveEditedEntityRecord
    ]);
    return { isSaving, save };
  }

  // packages/media-editor/build-module/components/media-editor/index.mjs
  var import_jsx_runtime391 = __toESM(require_jsx_runtime(), 1);
  var ATTACHMENT_EMBED_QUERY = { _embed: "author,wp:attached-to" };
  var PLACEMENT_CONTROL_IDLE_MS = 300;
  var DETAILS_PANEL = "details";
  var CROP_PANEL = "crop";
  function MediaEditorSidebar({
    tabs,
    activeTab,
    onSelectTab,
    disabled: disabled2 = false
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime391.jsxs)(
      navigable_region_default,
      {
        className: "media-editor__sidebar",
        ariaLabel: (0, import_i18n154.__)("Media settings"),
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime391.jsx)("h2", {}), children: (0, import_i18n154.__)("Media settings") }),
          /* @__PURE__ */ (0, import_jsx_runtime391.jsxs)(
            tabs_exports.Root,
            {
              className: "media-editor__tabs",
              value: activeTab,
              onValueChange: onSelectTab,
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime391.jsx)("div", { className: "media-editor__tablist", children: /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(tabs_exports.List, { variant: "minimal", children: tabs.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
                  tabs_exports.Tab,
                  {
                    value: tab.id,
                    disabled: disabled2,
                    children: tab.title
                  },
                  tab.id
                )) }) }),
                tabs.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
                  tabs_exports.Panel,
                  {
                    value: tab.id,
                    tabIndex: -1,
                    className: "media-editor__panel",
                    children: /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(Stack, { direction: "column", gap: "lg", children: tab.render() })
                  },
                  tab.id
                ))
              ]
            }
          )
        ]
      }
    );
  }
  var MediaEditorFrameContext = (0, import_element247.createContext)(null);
  function useMediaEditorFrameContext() {
    const context = (0, import_element247.useContext)(MediaEditorFrameContext);
    if (!context) {
      throw new Error(
        "useMediaEditorFrameContext must be used within MediaEditor"
      );
    }
    return context;
  }
  function HeaderActions({ showCloseButton = false }) {
    const { isImage, isSaving, onCancel, isWide, activePanel, onTogglePanel } = useMediaEditorFrameContext();
    const isPanelOpen = !!activePanel;
    const [isShortcutsModalOpen, setIsShortcutsModalOpen] = (0, import_element247.useState)(false);
    return /* @__PURE__ */ (0, import_jsx_runtime391.jsxs)(
      Stack,
      {
        className: "media-editor__header-actions",
        justify: "flex-end",
        align: "center",
        gap: "sm",
        children: [
          isImage && /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
            import_components85.Button,
            {
              size: "compact",
              icon: keyboard_default,
              label: (0, import_i18n154.__)("Keyboard shortcuts"),
              onClick: () => setIsShortcutsModalOpen(true)
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
            import_components85.Button,
            {
              size: "compact",
              icon: drawer_right_default,
              label: (0, import_i18n154.__)("Media settings"),
              isPressed: isPanelOpen,
              "aria-expanded": isWide ? isPanelOpen : void 0,
              onClick: onTogglePanel
            }
          ),
          showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
            import_components85.Button,
            {
              size: "compact",
              icon: close_default,
              label: (0, import_i18n154.__)("Close"),
              onClick: onCancel,
              disabled: isSaving,
              accessibleWhenDisabled: true
            }
          ),
          isShortcutsModalOpen && /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
            MediaEditorKeyboardShortcutsModal,
            {
              onClose: () => setIsShortcutsModalOpen(false)
            }
          )
        ]
      }
    );
  }
  function HistoryActions() {
    const { isImage, isUndoRedoDisabled, onReset, isWide, activePanel } = useMediaEditorFrameContext();
    const {
      reset,
      isDirty,
      hasUndo,
      hasRedo,
      undo: undoCrop,
      redo: redoCrop,
      beginGesture,
      endGesture
    } = useMediaEditor();
    if (!isImage || !isWide && !!activePanel) {
      return null;
    }
    const handleUndo = () => {
      if (isUndoRedoDisabled) {
        return;
      }
      undoCrop();
    };
    const handleRedo = () => {
      if (isUndoRedoDisabled) {
        return;
      }
      redoCrop();
    };
    const handleReset = () => {
      if (isUndoRedoDisabled) {
        return;
      }
      beginGesture();
      reset();
      onReset();
      endGesture();
    };
    return /* @__PURE__ */ (0, import_jsx_runtime391.jsxs)(
      Stack,
      {
        className: "media-editor__history-actions",
        align: "center",
        gap: "sm",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
            import_components85.Button,
            {
              size: "compact",
              variant: "tertiary",
              disabled: isUndoRedoDisabled || !isDirty,
              accessibleWhenDisabled: true,
              onClick: handleReset,
              children: (0, import_i18n154.__)("Reset")
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
            import_components85.Button,
            {
              size: "compact",
              icon: undo_default,
              label: (0, import_i18n154.__)("Undo"),
              showTooltip: true,
              shortcut: import_keycodes4.displayShortcut.primary("z"),
              disabled: isUndoRedoDisabled || !hasUndo,
              accessibleWhenDisabled: true,
              onClick: handleUndo
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
            import_components85.Button,
            {
              size: "compact",
              icon: redo_default,
              label: (0, import_i18n154.__)("Redo"),
              showTooltip: true,
              shortcut: (0, import_keycodes4.isAppleOS)() ? import_keycodes4.displayShortcut.primaryShift("z") : import_keycodes4.displayShortcut.primary("y"),
              disabled: isUndoRedoDisabled || !hasRedo,
              accessibleWhenDisabled: true,
              onClick: handleRedo
            }
          )
        ]
      }
    );
  }
  function SaveActions({ size: size4 = "default" }) {
    const { isSaving, hasMedia, hasChanges, onCancel, onSave } = useMediaEditorFrameContext();
    const saveDisabled = isSaving || !hasMedia || !hasChanges;
    return /* @__PURE__ */ (0, import_jsx_runtime391.jsxs)(
      Stack,
      {
        className: "media-editor__save-actions",
        justify: "flex-end",
        align: "center",
        gap: "sm",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
            import_components85.Button,
            {
              __next40pxDefaultSize: true,
              size: size4,
              variant: "tertiary",
              onClick: onCancel,
              disabled: isSaving,
              accessibleWhenDisabled: true,
              children: (0, import_i18n154.__)("Cancel")
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
            import_components85.Button,
            {
              __next40pxDefaultSize: true,
              size: size4,
              variant: "primary",
              onClick: onSave,
              isBusy: isSaving,
              disabled: saveDisabled,
              accessibleWhenDisabled: true,
              children: (0, import_i18n154.__)("Save")
            }
          )
        ]
      }
    );
  }
  function MediaEditorContent({
    fields: fields2 = [],
    id,
    aspectRatioPresets,
    onClose,
    onSaved,
    renderFrame,
    noticesClassName = "media-editor__snackbar",
    noticesPortalElement,
    shouldCloseOnEsc = false
  }) {
    const cropper = useMediaEditor();
    const isWide = (0, import_compose38.useViewportMatch)("small");
    const [activePanel, setActivePanel] = (0, import_element247.useState)(
      isWide ? DETAILS_PANEL : null
    );
    const hasChosenPanelRef = (0, import_element247.useRef)(false);
    const lastPanelRef = (0, import_element247.useRef)(DETAILS_PANEL);
    const hasChosenTabRef = (0, import_element247.useRef)(false);
    const selectPanel = (0, import_element247.useCallback)((panel) => {
      hasChosenTabRef.current = true;
      lastPanelRef.current = panel;
      setActivePanel(panel);
    }, []);
    const togglePanel = (0, import_element247.useCallback)(() => {
      hasChosenPanelRef.current = true;
      setActivePanel((open3) => open3 ? null : lastPanelRef.current);
    }, []);
    const layout = isWide ? "wide" : "narrow";
    const { media, hasEdits } = (0, import_data42.useSelect)(
      (select9) => {
        const {
          getEditedEntityRecord,
          getEntityRecord,
          hasEditsForEntityRecord
        } = select9(import_core_data33.store);
        getEntityRecord(
          "postType",
          "attachment",
          id,
          ATTACHMENT_EMBED_QUERY
        );
        return {
          media: getEditedEntityRecord(
            "postType",
            "attachment",
            id
          ),
          hasEdits: hasEditsForEntityRecord(
            "postType",
            "attachment",
            id
          )
        };
      },
      [id]
    );
    const hasChanges = cropper.isCropperDirty || hasEdits;
    const { clearEntityRecordEdits, editEntityRecord, invalidateResolution } = (0, import_data42.useDispatch)(import_core_data33.store);
    const { removeAllNotices } = (0, import_data42.useDispatch)(import_notices15.store);
    const [isDiscardDialogOpen, setIsDiscardDialogOpen] = (0, import_element247.useState)(false);
    const [isPlacementActive, setIsPlacementActive] = (0, import_element247.useState)(false);
    const [isCanvasGestureActive, setIsCanvasGestureActive] = (0, import_element247.useState)(false);
    const placementControlTimerRef = (0, import_element247.useRef)();
    const signalPlacementControlInteraction = (0, import_element247.useCallback)(() => {
      setIsPlacementActive(true);
      clearTimeout(placementControlTimerRef.current);
      placementControlTimerRef.current = setTimeout(() => {
        setIsPlacementActive(false);
      }, PLACEMENT_CONTROL_IDLE_MS);
    }, []);
    const handleCanvasGestureStart = (0, import_element247.useCallback)(() => {
      setIsCanvasGestureActive(true);
    }, []);
    const handleCanvasGestureEnd = (0, import_element247.useCallback)(() => {
      setIsCanvasGestureActive(false);
    }, []);
    const isCropInteractionActive = isPlacementActive || isCanvasGestureActive;
    (0, import_element247.useEffect)(() => {
      return () => {
        clearTimeout(placementControlTimerRef.current);
      };
    }, []);
    (0, import_element247.useEffect)(() => {
      setIsPlacementActive(false);
      setIsCanvasGestureActive(false);
    }, [id]);
    (0, import_element247.useEffect)(() => {
      invalidateResolution("getEntityRecord", [
        "postType",
        "attachment",
        id,
        ATTACHMENT_EMBED_QUERY
      ]);
    }, [id, invalidateResolution]);
    const mediaType = getMediaTypeFromMimeType(media?.mime_type).type;
    const isImage = !!media && mediaType === "image";
    (0, import_element247.useEffect)(() => {
      if (hasChosenPanelRef.current && hasChosenTabRef.current) {
        return;
      }
      const defaultPanel = isWide && isImage ? CROP_PANEL : DETAILS_PANEL;
      if (!hasChosenTabRef.current) {
        lastPanelRef.current = defaultPanel;
      }
      if (!hasChosenPanelRef.current) {
        setActivePanel(isWide ? lastPanelRef.current : null);
      }
    }, [isWide, isImage]);
    const {
      aspectRatioValue,
      setAspectRatioValue,
      aspectRatioOptions,
      resetCropOptions
    } = useCropOptions({ aspectRatioPresets });
    const { isSaving, save: saveMediaEditor } = useSaveMediaEditor({
      cropper,
      id,
      isImage,
      media,
      onSaved
    });
    const handleChange = (updates) => {
      if (isSaving) {
        return;
      }
      editEntityRecord("postType", "attachment", id, updates);
    };
    const discardAndClose = () => {
      removeAllNotices("snackbar", MEDIA_EDITOR_NOTICES_CONTEXT);
      clearEntityRecordEdits("postType", "attachment", id);
      onClose?.();
    };
    const handleRequestClose = () => {
      if (isSaving) {
        return;
      }
      if (hasChanges) {
        setIsDiscardDialogOpen(true);
        return;
      }
      discardAndClose();
    };
    const handleKeyDown = (event) => {
      const isUndoShortcut = import_keycodes4.isKeyboardEvent.primary(event, "z");
      const isRedoShortcut = import_keycodes4.isKeyboardEvent.primaryShift(event, "z") || !(0, import_keycodes4.isAppleOS)() && import_keycodes4.isKeyboardEvent.primary(event, "y");
      if ((isUndoShortcut || isRedoShortcut) && isImage) {
        const target = event.target;
        const isMetadataField = (target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.isContentEditable) && !target.closest(`[${CROP_CONTROL_ATTR}]`);
        if (!isMetadataField) {
          event.preventDefault();
          if (isCropInteractionActive || isSaving) {
            return;
          }
          if (isRedoShortcut) {
            cropper.redo();
          } else {
            cropper.undo();
          }
        }
      }
      if (shouldCloseOnEsc) {
        if (event.code !== "Escape" && event.key !== "Escape") {
          return;
        }
        if (isSaving) {
          event.preventDefault();
          return;
        }
        if (hasChanges) {
          event.preventDefault();
          setIsDiscardDialogOpen(true);
        }
      }
    };
    const snackbar = /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
      import_notices15.SnackbarNotices,
      {
        className: noticesClassName,
        context: MEDIA_EDITOR_NOTICES_CONTEXT
      }
    );
    const imageControls = isImage && !isWide ? /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
      MediaEditorImageControls,
      {
        showAspectRatioControl: true,
        aspectRatioPresets,
        disabled: isSaving
      }
    ) : null;
    const tabs = [
      ...isImage ? [
        {
          id: CROP_PANEL,
          title: (0, import_i18n154.__)("Crop"),
          render: () => /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
            MediaEditorCropPanel,
            {
              aspectRatioValue,
              onAspectRatioChange: setAspectRatioValue,
              aspectRatioOptions,
              disabled: isSaving
            }
          )
        }
      ] : [],
      {
        id: DETAILS_PANEL,
        title: (0, import_i18n154.__)("Details"),
        render: () => /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(MediaForm, {})
      }
    ];
    const ruler = isImage ? /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
      MediaEditorFineRotation,
      {
        onPlacementControlInteraction: signalPlacementControlInteraction,
        disabled: isSaving
      }
    ) : null;
    const children = /* @__PURE__ */ (0, import_jsx_runtime391.jsxs)(
      MediaEditorProvider,
      {
        value: media ?? void 0,
        onChange: handleChange,
        settings: {
          // Disable the fields while saving, so the guard in
          // `handleChange` is not silently swallowing typing.
          // `readOnly` would swap the field's layout mid-save;
          // disabled keeps it in place and greys it out.
          fields: isSaving ? fields2.map((field) => ({
            ...field,
            isDisabled: true
          })) : fields2
        },
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime391.jsx)("div", { className: "media-editor", children: !media ? /* @__PURE__ */ (0, import_jsx_runtime391.jsx)("div", { className: "media-editor__loading", children: /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(import_components85.Spinner, {}) }) : /* @__PURE__ */ (0, import_jsx_runtime391.jsxs)(
            "div",
            {
              className: clsx_default("media-editor__body", {
                "has-panel-open": !!activePanel
              }),
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime391.jsxs)(
                  navigable_region_default,
                  {
                    className: "media-editor__content",
                    ariaLabel: isImage ? (0, import_i18n154.__)("Image editor") : (0, import_i18n154.__)("Media preview"),
                    children: [
                      /* @__PURE__ */ (0, import_jsx_runtime391.jsx)("div", { className: "media-editor__canvas-area", children: isImage ? /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
                        MediaEditorCanvas,
                        {
                          isPlacementActive,
                          onGestureStart: handleCanvasGestureStart,
                          onGestureEnd: handleCanvasGestureEnd,
                          disabled: isSaving
                        }
                      ) : /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(MediaPreview2, {}) }),
                      isImage && /* @__PURE__ */ (0, import_jsx_runtime391.jsxs)("div", { className: "media-editor__canvas-toolbar", children: [
                        ruler,
                        imageControls
                      ] })
                    ]
                  }
                ),
                !!activePanel && /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
                  MediaEditorSidebar,
                  {
                    tabs,
                    activeTab: tabs.some(
                      (tab) => tab.id === activePanel
                    ) ? activePanel : DETAILS_PANEL,
                    onSelectTab: selectPanel,
                    disabled: isSaving
                  }
                )
              ]
            }
          ) }),
          /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(
            import_components85.__experimentalConfirmDialog,
            {
              isOpen: isDiscardDialogOpen,
              confirmButtonText: (0, import_i18n154.__)("Discard"),
              cancelButtonText: (0, import_i18n154.__)("Keep editing"),
              onCancel: () => setIsDiscardDialogOpen(false),
              onConfirm: () => {
                setIsDiscardDialogOpen(false);
                discardAndClose();
              },
              children: (0, import_i18n154.__)(
                "Are you sure you want to discard your unsaved changes?"
              )
            }
          ),
          noticesPortalElement ? (0, import_element247.createPortal)(snackbar, noticesPortalElement) : snackbar
        ]
      }
    );
    const contextValue = {
      isImage,
      isSaving,
      hasMedia: !!media,
      hasChanges,
      // Saving freezes the whole edit surface: `save()` reads the
      // modifiers once and then awaits, so anything changed after that
      // would be silently dropped when the save resolves.
      isUndoRedoDisabled: isCropInteractionActive || isSaving,
      aspectRatioPresets,
      isWide,
      activePanel,
      onTogglePanel: togglePanel,
      onCancel: handleRequestClose,
      onSave: saveMediaEditor,
      onReset: resetCropOptions
    };
    return /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(MediaEditorFrameContext.Provider, { value: contextValue, children: renderFrame({
      children,
      isImage,
      layout,
      onRequestClose: handleRequestClose,
      onKeyDown: handleKeyDown,
      shouldCloseOnClickOutside: !hasChanges && !isSaving,
      isSaving,
      hasChanges,
      hasMedia: !!media
    }) });
  }
  function MediaEditor(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(MediaEditorStateProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime391.jsx)(MediaEditorContent, { ...props }) }, props.id);
  }
  MediaEditor.HeaderActions = HeaderActions;
  MediaEditor.HistoryActions = HistoryActions;
  MediaEditor.SaveActions = SaveActions;
  var media_editor_default = MediaEditor;

  // packages/media-editor/build-module/components/media-editor-modal/index.mjs
  var import_jsx_runtime392 = __toESM(require_jsx_runtime(), 1);
  function ModalFooter() {
    return /* @__PURE__ */ (0, import_jsx_runtime392.jsxs)(
      "div",
      {
        className: "media-editor-modal__footer",
        role: "region",
        "aria-label": (0, import_i18n155.__)("Editor actions"),
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime392.jsx)(media_editor_default.HistoryActions, {}),
          /* @__PURE__ */ (0, import_jsx_runtime392.jsx)(media_editor_default.SaveActions, {})
        ]
      }
    );
  }
  function MediaEditorModal({
    fields: fields2 = [],
    aspectRatioPresets
  }) {
    const { isModalOpen, id, onUpdate, onClose } = (0, import_data43.useSelect)((select9) => {
      const { isOpen: isOpen2, getId: getId2, getOnUpdate: getOnUpdate2, getOnClose: getOnClose2 } = select9(store2);
      return {
        isModalOpen: isOpen2(),
        id: getId2(),
        onUpdate: getOnUpdate2(),
        onClose: getOnClose2()
      };
    }, []);
    const { closeMediaEditorModal: closeMediaEditorModal2 } = (0, import_data43.useDispatch)(store2);
    const { createSuccessNotice } = (0, import_data43.useDispatch)(import_notices16.store);
    if (!isModalOpen || !id) {
      return null;
    }
    const portalElement = typeof document === "undefined" ? null : document.body;
    const stopKeyDownPropagation = (event) => {
      event.stopPropagation();
    };
    const handleClose = () => {
      closeMediaEditorModal2();
      onClose?.();
    };
    return /* @__PURE__ */ (0, import_jsx_runtime392.jsx)(
      media_editor_default,
      {
        id,
        fields: fields2,
        aspectRatioPresets,
        shouldCloseOnEsc: true,
        noticesClassName: "media-editor-modal__snackbar",
        noticesPortalElement: portalElement,
        onClose: handleClose,
        onSaved: ({ id: savedId, url, previous }) => {
          if (savedId && onUpdate) {
            const update4 = {
              id: savedId,
              url
            };
            onUpdate(update4);
          }
          handleClose();
          if (previous && savedId !== previous.id && onUpdate) {
            createSuccessNotice((0, import_i18n155.__)("Image edited."), {
              type: "snackbar",
              actions: [
                {
                  label: (0, import_i18n155.__)("Undo"),
                  onClick: () => {
                    onUpdate({
                      id: previous.id,
                      url: previous.url
                    });
                  }
                }
              ]
            });
          }
        },
        renderFrame: ({
          children,
          onRequestClose,
          onKeyDown,
          shouldCloseOnClickOutside
        }) => /* @__PURE__ */ (0, import_jsx_runtime392.jsx)(
          import_keyboard_shortcuts.ShortcutProvider,
          {
            className: "media-editor-modal__shortcut-scope",
            onKeyDown: stopKeyDownPropagation,
            children: /* @__PURE__ */ (0, import_jsx_runtime392.jsxs)(
              import_components86.Modal,
              {
                className: "media-editor-modal",
                title: (0, import_i18n155.__)("Edit media"),
                size: "fill",
                isDismissible: false,
                shouldCloseOnClickOutside,
                onKeyDown,
                onRequestClose,
                headerActions: /* @__PURE__ */ (0, import_jsx_runtime392.jsx)(media_editor_default.HeaderActions, { showCloseButton: true }),
                children: [
                  children,
                  /* @__PURE__ */ (0, import_jsx_runtime392.jsx)(ModalFooter, {})
                ]
              }
            )
          }
        )
      }
    );
  }

  // packages/media-editor/build-module/private-apis.mjs
  var privateApis2 = {};
  lock5(privateApis2, {
    store: store2,
    MediaEditor,
    MediaEditorModal
  });

  // packages/editor/build-module/components/media-categories/index.mjs
  var import_i18n156 = __toESM(require_i18n(), 1);
  var import_data44 = __toESM(require_data(), 1);
  var import_html_entities10 = __toESM(require_html_entities(), 1);
  var import_core_data34 = __toESM(require_core_data(), 1);
  var getExternalLink = (url, text) => `<a ${getExternalLinkAttributes(url)}>${text}</a>`;
  var getExternalLinkAttributes = (url) => `href="${url}" target="_blank" rel="noopener"`;
  var getOpenverseLicense = (license, licenseVersion) => {
    let licenseName = license.trim();
    if (license !== "pdm") {
      licenseName = license.toUpperCase().replace("SAMPLING", "Sampling");
    }
    if (licenseVersion) {
      licenseName += ` ${licenseVersion}`;
    }
    if (!["pdm", "cc0"].includes(license)) {
      licenseName = `CC ${licenseName}`;
    }
    return licenseName;
  };
  var getOpenverseCaption = (item) => {
    const {
      title,
      foreign_landing_url: foreignLandingUrl,
      creator,
      creator_url: creatorUrl,
      license,
      license_version: licenseVersion,
      license_url: licenseUrl
    } = item;
    const fullLicense = getOpenverseLicense(license, licenseVersion);
    const _creator = (0, import_html_entities10.decodeEntities)(creator);
    let _caption;
    if (_creator) {
      _caption = title ? (0, import_i18n156.sprintf)(
        // translators: %1s: Title of a media work from Openverse; %2$s: Name of the work's creator; %3s: Work's licence e.g: "CC0 1.0".
        (0, import_i18n156._x)('"%1$s" by %2$s/ %3$s', "caption"),
        getExternalLink(
          foreignLandingUrl,
          (0, import_html_entities10.decodeEntities)(title)
        ),
        creatorUrl ? getExternalLink(creatorUrl, _creator) : _creator,
        licenseUrl ? getExternalLink(
          `${licenseUrl}?ref=openverse`,
          fullLicense
        ) : fullLicense
      ) : (0, import_i18n156.sprintf)(
        // translators: %1s: Link attributes for a given Openverse media work; %2s: Name of the work's creator; %3s: Works's licence e.g: "CC0 1.0".
        (0, import_i18n156._x)("<a %1$s>Work</a> by %2$s/ %3$s", "caption"),
        getExternalLinkAttributes(foreignLandingUrl),
        creatorUrl ? getExternalLink(creatorUrl, _creator) : _creator,
        licenseUrl ? getExternalLink(
          `${licenseUrl}?ref=openverse`,
          fullLicense
        ) : fullLicense
      );
    } else {
      _caption = title ? (0, import_i18n156.sprintf)(
        // translators: %1s: Title of a media work from Openverse; %2s: Work's licence e.g: "CC0 1.0".
        (0, import_i18n156._x)('"%1$s"/ %2$s', "caption"),
        getExternalLink(
          foreignLandingUrl,
          (0, import_html_entities10.decodeEntities)(title)
        ),
        licenseUrl ? getExternalLink(
          `${licenseUrl}?ref=openverse`,
          fullLicense
        ) : fullLicense
      ) : (0, import_i18n156.sprintf)(
        // translators: %1s: Link attributes for a given Openverse media work; %2s: Works's licence e.g: "CC0 1.0".
        (0, import_i18n156._x)("<a %1$s>Work</a>/ %2$s", "caption"),
        getExternalLinkAttributes(foreignLandingUrl),
        licenseUrl ? getExternalLink(
          `${licenseUrl}?ref=openverse`,
          fullLicense
        ) : fullLicense
      );
    }
    return _caption.replace(/\s{2}/g, " ");
  };
  var getCoreMediaQuery = (query = {}) => ({
    ...query,
    orderBy: !!query?.search ? "relevance" : "date"
  });
  var coreMediaFetch = async (query = {}) => {
    const finalQuery = getCoreMediaQuery(query);
    const records = await (0, import_data44.resolveSelect)(import_core_data34.store).getEntityRecords(
      "postType",
      "attachment",
      finalQuery
    );
    const totalItems = (0, import_data44.select)(import_core_data34.store).getEntityRecordsTotalItems(
      "postType",
      "attachment",
      finalQuery
    );
    const totalPages = (0, import_data44.select)(import_core_data34.store).getEntityRecordsTotalPages(
      "postType",
      "attachment",
      finalQuery
    );
    return {
      mediaItems: records.map((record) => ({
        ...record,
        alt: record.alt_text,
        url: record.source_url,
        previewUrl: record.media_details?.sizes?.medium?.source_url,
        caption: record.caption?.raw
      })),
      totalItems,
      totalPages
    };
  };
  var getAttachedImagesQuery = (postId2, query = {}) => ({
    ...query,
    media_type: "image",
    parent: postId2
  });
  var normalizePostId = (postId2) => {
    const parsedPostId = typeof postId2 === "number" ? postId2 : Number(postId2);
    return Number.isInteger(parsedPostId) && parsedPostId > 0 ? parsedPostId : void 0;
  };
  var saveAttachmentParent = (attachmentId, postId2) => (
    // `throwOnError` so a failed REST write rejects (rather than being silently
    // swallowed), letting the attach/detach handlers surface an error notice
    // instead of a false success.
    (0, import_data44.dispatch)(import_core_data34.store).saveEntityRecord(
      "postType",
      "attachment",
      {
        id: attachmentId,
        post: postId2
      },
      { throwOnError: true }
    )
  );
  var getMediaItemType = (mediaItem) => mediaItem?.media_type || mediaItem?.mime_type?.split("/")[0] || mediaItem?.type;
  var getImageAttachmentIds = (mediaItems) => [
    ...new Set(
      (Array.isArray(mediaItems) ? mediaItems : [mediaItems]).filter(
        (mediaItem) => getMediaItemType(mediaItem) === "image"
      ).map((mediaItem) => mediaItem?.id).filter(Boolean)
    )
  ];
  var invalidateAttachedImagesQueries = (postId2, query = {}) => {
    const { invalidateResolution } = (0, import_data44.dispatch)(import_core_data34.store);
    invalidateResolution("getEntityRecords", [
      "postType",
      "attachment",
      getCoreMediaQuery(getAttachedImagesQuery(postId2, query))
    ]);
  };
  var subscribeToMediaInvalidation = (args, onChange) => {
    const isResolved = () => (0, import_data44.select)(import_core_data34.store).hasFinishedResolution("getEntityRecords", args);
    let wasResolved = isResolved();
    return (0, import_data44.subscribe)(() => {
      const nowResolved = isResolved();
      if (wasResolved && !nowResolved) {
        onChange();
      }
      wasResolved = nowResolved;
    }, import_core_data34.store);
  };
  var createCoreMediaCategory = ({ getQuery, ...category }) => ({
    ...category,
    async fetch(query = {}) {
      return coreMediaFetch(getQuery(query));
    },
    subscribe(onChange, query = {}) {
      return subscribeToMediaInvalidation(
        [
          "postType",
          "attachment",
          getCoreMediaQuery(getQuery(query))
        ],
        onChange
      );
    }
  });
  var getAttachedImagesCategory = (postId2, typeLabel) => createCoreMediaCategory({
    name: "attached-images",
    labels: {
      name: (0, import_i18n156.__)("Attached images"),
      search_items: (0, import_i18n156.__)("Search attachments")
    },
    mediaType: "image",
    getQuery: (query) => getAttachedImagesQuery(postId2, query),
    // The post type's singular label (e.g. "Page"), threaded through so the
    // shared panel can word its attach/detach copy for the current post type.
    postTypeLabel: typeLabel,
    // Empty-state message. Providing this also keeps the source in the tab
    // list when it has no items, so it stays discoverable and the first
    // image can be attached even with none yet.
    emptyMessage: typeLabel ? (0, import_i18n156.sprintf)(
      // translators: %s: Name of the post type e.g: "Page".
      (0, import_i18n156.__)("No images attached to this %s."),
      typeLabel
    ) : (0, import_i18n156.__)("No images attached to this post."),
    async attach(mediaItems) {
      const attachmentIds = getImageAttachmentIds(mediaItems);
      await Promise.all(
        attachmentIds.map(
          (attachmentId) => saveAttachmentParent(attachmentId, postId2)
        )
      );
      return attachmentIds.length;
    },
    async detach(mediaItem) {
      await saveAttachmentParent(mediaItem.id, 0);
    },
    invalidate(query = {}) {
      invalidateAttachedImagesQueries(postId2, query);
    }
  });
  var inserterMediaCategories = [
    createCoreMediaCategory({
      name: "images",
      labels: {
        name: (0, import_i18n156.__)("Images"),
        search_items: (0, import_i18n156.__)("Search images")
      },
      mediaType: "image",
      getQuery: (query) => ({ ...query, media_type: "image" })
    }),
    createCoreMediaCategory({
      name: "videos",
      labels: {
        name: (0, import_i18n156.__)("Videos"),
        search_items: (0, import_i18n156.__)("Search videos")
      },
      mediaType: "video",
      getQuery: (query) => ({ ...query, media_type: "video" })
    }),
    createCoreMediaCategory({
      name: "audio",
      labels: {
        name: (0, import_i18n156.__)("Audio"),
        search_items: (0, import_i18n156.__)("Search audio")
      },
      mediaType: "audio",
      getQuery: (query) => ({ ...query, media_type: "audio" })
    }),
    {
      name: "openverse",
      labels: {
        name: (0, import_i18n156.__)("Openverse"),
        search_items: (0, import_i18n156.__)("Search Openverse")
      },
      mediaType: "image",
      async fetch(query = {}) {
        const defaultArgs = {
          mature: false,
          excluded_source: "flickr,inaturalist,wikimedia",
          license: "pdm,cc0"
        };
        const finalQuery = { ...query, ...defaultArgs };
        const mapFromInserterMediaRequest = {
          per_page: "page_size",
          search: "q"
        };
        const url = new URL("https://api.openverse.org/v1/images/");
        Object.entries(finalQuery).forEach(([key, value]) => {
          const queryKey = mapFromInserterMediaRequest[key] || key;
          url.searchParams.set(queryKey, value);
        });
        const response = await window.fetch(url, {
          headers: {
            "User-Agent": "WordPress/inserter-media-fetch"
          }
        });
        const jsonResponse = await response.json();
        const results = jsonResponse.results;
        return results.map((result) => ({
          ...result,
          // This is a temp solution for better titles, until Openverse API
          // completes the cleaning up of some titles of their upstream data.
          title: result.title?.toLowerCase().startsWith("file:") ? result.title.slice(5) : result.title,
          sourceId: result.id,
          id: void 0,
          caption: getOpenverseCaption(result),
          previewUrl: result.thumbnail
        }));
      },
      getReportUrl: ({ sourceId }) => `https://wordpress.org/openverse/image/${sourceId}/report/`,
      isExternalResource: true
    }
  ];
  function getInserterMediaCategories(postId2, viewablePostTypeLabel) {
    const currentPostId = normalizePostId(postId2);
    if (!currentPostId || !viewablePostTypeLabel) {
      return inserterMediaCategories;
    }
    return [
      getAttachedImagesCategory(currentPostId, viewablePostTypeLabel),
      ...inserterMediaCategories
    ];
  }

  // node_modules/uuid/dist/stringify.js
  var byteToHex = [];
  for (let i2 = 0; i2 < 256; ++i2) {
    byteToHex.push((i2 + 256).toString(16).slice(1));
  }
  function unsafeStringify(arr, offset4 = 0) {
    return (byteToHex[arr[offset4 + 0]] + byteToHex[arr[offset4 + 1]] + byteToHex[arr[offset4 + 2]] + byteToHex[arr[offset4 + 3]] + "-" + byteToHex[arr[offset4 + 4]] + byteToHex[arr[offset4 + 5]] + "-" + byteToHex[arr[offset4 + 6]] + byteToHex[arr[offset4 + 7]] + "-" + byteToHex[arr[offset4 + 8]] + byteToHex[arr[offset4 + 9]] + "-" + byteToHex[arr[offset4 + 10]] + byteToHex[arr[offset4 + 11]] + byteToHex[arr[offset4 + 12]] + byteToHex[arr[offset4 + 13]] + byteToHex[arr[offset4 + 14]] + byteToHex[arr[offset4 + 15]]).toLowerCase();
  }

  // node_modules/uuid/dist/rng.js
  var rnds8 = new Uint8Array(16);
  function rng() {
    return crypto.getRandomValues(rnds8);
  }

  // node_modules/uuid/dist/v4.js
  function v4(options, buf, offset4) {
    if (!buf && !options && crypto.randomUUID) {
      return crypto.randomUUID();
    }
    return _v4(options, buf, offset4);
  }
  function _v4(options, buf, offset4) {
    options = options || {};
    const rnds = options.random ?? options.rng?.() ?? rng();
    if (rnds.length < 16) {
      throw new Error("Random bytes length must be >= 16");
    }
    rnds[6] = rnds[6] & 15 | 64;
    rnds[8] = rnds[8] & 63 | 128;
    if (buf) {
      offset4 = offset4 || 0;
      if (offset4 < 0 || offset4 + 16 > buf.length) {
        throw new RangeError(`UUID byte range ${offset4}:${offset4 + 15} is out of buffer bounds`);
      }
      for (let i2 = 0; i2 < 16; ++i2) {
        buf[offset4 + i2] = rnds[i2];
      }
      return buf;
    }
    return unsafeStringify(rnds);
  }
  var v4_default = v4;

  // packages/editor/build-module/utils/media-upload/index.mjs
  var import_data45 = __toESM(require_data(), 1);
  var import_core_data35 = __toESM(require_core_data(), 1);
  var import_media_utils2 = __toESM(require_media_utils(), 1);
  var import_i18n157 = __toESM(require_i18n(), 1);

  // packages/editor/build-module/components/upload-progress-snackbar/tracker.mjs
  var import_element248 = __toESM(require_element(), 1);
  var state = null;
  var cumulativeFailures = 0;
  var listeners = /* @__PURE__ */ new Set();
  function notify() {
    listeners.forEach((listener) => listener());
  }
  function addFiles(filenames) {
    if (!filenames.length) {
      return;
    }
    if (!state) {
      state = { total: 0, completed: 0, pending: [] };
    }
    state = {
      total: state.total + filenames.length,
      completed: state.completed,
      pending: [...state.pending, ...filenames]
    };
    notify();
  }
  function advance2(count) {
    finish(count, 0);
  }
  function advanceFailed(count = 1) {
    finish(count, count);
  }
  function finish(count, failed) {
    if (!state || count <= 0) {
      return;
    }
    cumulativeFailures += failed;
    const completed = Math.min(state.total, state.completed + count);
    const pending = state.pending.slice(count);
    if (completed >= state.total) {
      state = null;
    } else {
      state = { total: state.total, completed, pending };
    }
    notify();
  }
  function getFailureCount() {
    return cumulativeFailures;
  }
  function getState() {
    return state;
  }
  function subscribe4(listener) {
    listeners.add(listener);
    return () => {
      listeners.delete(listener);
    };
  }
  function useTracker() {
    return (0, import_element248.useSyncExternalStore)(subscribe4, getState, getState);
  }

  // packages/editor/build-module/utils/media-upload/index.mjs
  var noop6 = () => {
  };
  function mediaUpload({
    additionalData = {},
    allowedTypes,
    filesList,
    maxUploadFileSize,
    onError = noop6,
    onFileChange,
    onSuccess,
    multiple = true,
    isTransportOnly = false
  }) {
    if (!multiple && filesList.length > 1) {
      onError((0, import_i18n157.__)("Only one file can be used here."));
      return;
    }
    const { receiveEntityRecords } = (0, import_data45.dispatch)(import_core_data35.store);
    const { getCurrentPost: getCurrentPost2, getEditorSettings: getEditorSettings2 } = (0, import_data45.select)(store);
    const {
      lockPostAutosaving: lockPostAutosaving2,
      unlockPostAutosaving: unlockPostAutosaving2,
      lockPostSaving: lockPostSaving2,
      unlockPostSaving: unlockPostSaving2
    } = (0, import_data45.dispatch)(store);
    const wpAllowedMimeTypes = getEditorSettings2().allowedMimeTypes;
    const lockKey = `image-upload-${v4_default()}`;
    maxUploadFileSize = maxUploadFileSize || getEditorSettings2().maxUploadFileSize;
    const currentPost = getCurrentPost2();
    const currentPostId = typeof currentPost?.id === "number" ? currentPost.id : currentPost?.wp_id;
    const clearSaveLock = () => {
      unlockPostSaving2(lockKey);
      unlockPostAutosaving2(lockKey);
    };
    if (!isTransportOnly) {
      lockPostSaving2(lockKey);
      lockPostAutosaving2(lockKey);
    }
    const postData = currentPostId ? { post: currentPostId } : {};
    if (!isTransportOnly) {
      const trackingFiles = Array.from(filesList).map(
        (f2) => f2?.name || ""
      );
      addFiles(trackingFiles);
    }
    let lastCompletedCount = 0;
    (0, import_media_utils2.uploadMedia)({
      allowedTypes,
      filesList,
      onFileChange: (files) => {
        onFileChange?.(files);
        const entityFiles = files.filter((_file) => _file?.id);
        if (entityFiles?.length) {
          const invalidateCache = true;
          receiveEntityRecords(
            "postType",
            "attachment",
            entityFiles,
            void 0,
            invalidateCache
          );
        }
        if (!isTransportOnly && entityFiles.length === files.length) {
          clearSaveLock();
        }
        if (!isTransportOnly) {
          const completedCount = entityFiles.length;
          if (completedCount > lastCompletedCount) {
            advance2(completedCount - lastCompletedCount);
            lastCompletedCount = completedCount;
          }
        }
      },
      onSuccess,
      additionalData: {
        ...postData,
        ...additionalData
      },
      maxUploadFileSize,
      onError: ({ message: message2 }) => {
        if (!isTransportOnly) {
          clearSaveLock();
          advanceFailed(1);
        }
        onError(message2);
      },
      wpAllowedMimeTypes,
      multiple
    });
  }

  // packages/editor/build-module/utils/url.mjs
  var import_url12 = __toESM(require_url(), 1);
  var import_deprecated3 = __toESM(require_deprecated(), 1);
  function cleanForSlug3(string) {
    (0, import_deprecated3.default)("wp.editor.cleanForSlug", {
      since: "12.7",
      plugin: "Gutenberg",
      alternative: "wp.url.cleanForSlug"
    });
    return (0, import_url12.cleanForSlug)(string);
  }

  // packages/editor/build-module/utils/media-upload/on-success.mjs
  var import_data47 = __toESM(require_data(), 1);
  var import_core_data37 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/utils/media-upload/finalized-attachments.mjs
  var import_data46 = __toESM(require_data(), 1);
  var import_core_data36 = __toESM(require_core_data(), 1);
  var ATTACHMENT_QUERIES = [{ context: "view" }, void 0];
  var finalized = /* @__PURE__ */ new Set();
  function receiveFinalizedAttachment(record) {
    if (!record?.id) {
      return;
    }
    const { receiveEntityRecords } = (0, import_data46.dispatch)(import_core_data36.store);
    for (const query of ATTACHMENT_QUERIES) {
      receiveEntityRecords("postType", "attachment", record, query);
    }
    finalized.add(record.id);
  }
  function consumeFinalizedAttachment(id) {
    return finalized.delete(id);
  }

  // packages/editor/build-module/utils/media-upload/on-success.mjs
  function mediaUploadOnSuccess(attachments) {
    const { invalidateResolution } = (0, import_data47.dispatch)(import_core_data37.store);
    for (const attachment of attachments) {
      if (!attachment.id || consumeFinalizedAttachment(attachment.id)) {
        continue;
      }
      invalidateResolution("getEntityRecord", [
        "postType",
        "attachment",
        attachment.id,
        { context: "view" }
      ]);
      invalidateResolution("getEntityRecord", [
        "postType",
        "attachment",
        attachment.id
      ]);
    }
  }

  // packages/editor/build-module/utils/media-sideload/index.mjs
  var import_media_utils3 = __toESM(require_media_utils(), 1);
  var { sideloadMedia: mediaSideload } = unlock(import_media_utils3.privateApis);
  var media_sideload_default = mediaSideload;

  // packages/editor/build-module/utils/media-sideload-from-url/index.mjs
  var import_api_fetch3 = __toESM(require_api_fetch(), 1);
  var import_data48 = __toESM(require_data(), 1);
  var import_media_utils4 = __toESM(require_media_utils(), 1);
  var noop7 = () => {
  };
  function mediaSideloadFromUrl({
    url,
    onSuccess,
    onError = noop7
  }) {
    const currentPost = (0, import_data48.select)(store).getCurrentPost();
    const currentPostId = typeof currentPost?.id === "number" ? currentPost.id : currentPost?.wp_id;
    const postData = currentPostId ? { post: currentPostId } : {};
    (0, import_api_fetch3.default)({
      path: "/wp/v2/media",
      method: "POST",
      data: {
        url,
        ...postData
      }
    }).then((attachment) => {
      onSuccess?.((0, import_media_utils4.transformAttachment)(attachment));
    }).catch((error2) => {
      onError(error2?.message || error2);
    });
  }

  // packages/editor/build-module/utils/media-finalize/index.mjs
  var import_api_fetch4 = __toESM(require_api_fetch(), 1);
  var import_media_utils5 = __toESM(require_media_utils(), 1);
  async function mediaFinalize(id, subSizes = []) {
    const response = await (0, import_api_fetch4.default)({
      path: `/wp/v2/media/${id}/finalize`,
      method: "POST",
      data: { sub_sizes: subSizes }
    });
    if (!response) {
      return void 0;
    }
    receiveFinalizedAttachment(response);
    return (0, import_media_utils5.transformAttachment)(response);
  }

  // packages/editor/build-module/utils/media-delete/index.mjs
  var import_api_fetch5 = __toESM(require_api_fetch(), 1);
  async function mediaDelete(id) {
    await (0, import_api_fetch5.default)({
      path: `/wp/v2/media/${id}?force=true`,
      method: "DELETE"
    });
  }

  // packages/editor/build-module/components/global-styles/index.mjs
  var import_core_data50 = __toESM(require_core_data(), 1);
  var import_data63 = __toESM(require_data(), 1);
  var import_element285 = __toESM(require_element(), 1);

  // packages/global-styles-ui/build-module/global-styles-ui.mjs
  var import_components140 = __toESM(require_components(), 1);
  var import_blocks11 = __toESM(require_blocks(), 1);
  var import_data60 = __toESM(require_data(), 1);
  var import_block_editor18 = __toESM(require_block_editor(), 1);
  var import_element282 = __toESM(require_element(), 1);
  var import_compose45 = __toESM(require_compose(), 1);

  // packages/global-styles-ui/build-module/provider.mjs
  var import_element250 = __toESM(require_element(), 1);

  // packages/global-styles-ui/build-module/context.mjs
  var import_element249 = __toESM(require_element(), 1);
  var GlobalStylesContext = (0, import_element249.createContext)({
    user: { styles: {}, settings: {} },
    base: { styles: {}, settings: {} },
    merged: { styles: {}, settings: {} },
    onChange: () => {
    },
    fontLibraryEnabled: false
  });

  // packages/global-styles-ui/build-module/provider.mjs
  var import_jsx_runtime393 = __toESM(require_jsx_runtime(), 1);
  function GlobalStylesProvider({
    children,
    value,
    baseValue,
    onChange,
    fontLibraryEnabled
  }) {
    const merged = (0, import_element250.useMemo)(() => {
      return mergeGlobalStyles(baseValue, value);
    }, [baseValue, value]);
    const contextValue = (0, import_element250.useMemo)(
      () => ({
        user: value,
        base: baseValue,
        merged,
        onChange,
        fontLibraryEnabled
      }),
      [value, baseValue, merged, onChange, fontLibraryEnabled]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime393.jsx)(GlobalStylesContext.Provider, { value: contextValue, children });
  }

  // packages/global-styles-ui/build-module/screen-root.mjs
  var import_components93 = __toESM(require_components(), 1);
  var import_i18n162 = __toESM(require_i18n(), 1);
  var import_data50 = __toESM(require_data(), 1);
  var import_core_data39 = __toESM(require_core_data(), 1);

  // packages/global-styles-ui/build-module/icon-with-current-color.mjs
  var import_jsx_runtime394 = __toESM(require_jsx_runtime(), 1);
  function IconWithCurrentColor({
    className,
    ...props
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime394.jsx)(
      icon_default,
      {
        className: clsx_default(
          className,
          "global-styles-ui-icon-with-current-color"
        ),
        ...props
      }
    );
  }

  // packages/global-styles-ui/build-module/navigation-button.mjs
  var import_components87 = __toESM(require_components(), 1);
  var import_jsx_runtime395 = __toESM(require_jsx_runtime(), 1);
  function GenericNavigationButton({
    icon,
    children,
    ...props
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime395.jsxs)(import_components87.__experimentalItem, { ...props, children: [
      icon && /* @__PURE__ */ (0, import_jsx_runtime395.jsxs)(import_components87.__experimentalHStack, { justify: "flex-start", children: [
        /* @__PURE__ */ (0, import_jsx_runtime395.jsx)(IconWithCurrentColor, { icon, size: 24 }),
        /* @__PURE__ */ (0, import_jsx_runtime395.jsx)(import_components87.FlexItem, { children })
      ] }),
      !icon && children
    ] });
  }
  function NavigationButtonAsItem(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime395.jsx)(import_components87.Navigator.Button, { as: GenericNavigationButton, ...props });
  }

  // packages/global-styles-ui/build-module/root-menu.mjs
  var import_components88 = __toESM(require_components(), 1);
  var import_i18n160 = __toESM(require_i18n(), 1);
  var import_block_editor5 = __toESM(require_block_editor(), 1);

  // packages/global-styles-ui/build-module/hooks.mjs
  var import_element251 = __toESM(require_element(), 1);
  var import_data49 = __toESM(require_data(), 1);
  var import_core_data38 = __toESM(require_core_data(), 1);
  var import_i18n159 = __toESM(require_i18n(), 1);

  // packages/global-styles-ui/build-module/utils.mjs
  var import_i18n158 = __toESM(require_i18n(), 1);

  // packages/global-styles-ui/build-module/lock-unlock.mjs
  var import_private_apis8 = __toESM(require_private_apis(), 1);
  var { lock: lock6, unlock: unlock6 } = (0, import_private_apis8.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
    "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
    "@wordpress/global-styles-ui"
  );

  // packages/global-styles-ui/build-module/utils.mjs
  var { getViewportBreakpoints: getViewportBreakpoints3 } = unlock6(privateApis);
  var VALID_ELEMENT_STATES = {
    link: [
      { value: ":link", label: (0, import_i18n158.__)("Link") },
      { value: ":any-link", label: (0, import_i18n158.__)("Any Link") },
      { value: ":visited", label: (0, import_i18n158.__)("Visited") },
      { value: ":hover", label: (0, import_i18n158.__)("Hover") },
      { value: ":focus", label: (0, import_i18n158.__)("Focus") },
      { value: ":focus-visible", label: (0, import_i18n158.__)("Focus-visible") },
      { value: ":active", label: (0, import_i18n158.__)("Active") }
    ],
    button: [
      { value: ":link", label: (0, import_i18n158.__)("Link") },
      { value: ":any-link", label: (0, import_i18n158.__)("Any Link") },
      { value: ":visited", label: (0, import_i18n158.__)("Visited") },
      { value: ":hover", label: (0, import_i18n158.__)("Hover") },
      { value: ":focus", label: (0, import_i18n158.__)("Focus") },
      { value: ":focus-visible", label: (0, import_i18n158.__)("Focus-visible") },
      { value: ":active", label: (0, import_i18n158.__)("Active") }
    ]
  };
  var VALID_BLOCK_STATES = {
    "core/button": [
      { value: ":hover", label: (0, import_i18n158.__)("Hover") },
      { value: ":focus", label: (0, import_i18n158.__)("Focus") },
      { value: ":focus-visible", label: (0, import_i18n158.__)("Focus-visible") },
      { value: ":active", label: (0, import_i18n158.__)("Active") }
    ]
  };
  var RESPONSIVE_STATES = [
    { value: "@tablet", label: (0, import_i18n158.__)("Tablet") },
    { value: "@mobile", label: (0, import_i18n158.__)("Mobile") }
  ];
  function getValidPseudoStates(name2) {
    if (VALID_BLOCK_STATES[name2]) {
      return VALID_BLOCK_STATES[name2] ?? [];
    }
    if (VALID_ELEMENT_STATES[name2]) {
      return VALID_ELEMENT_STATES[name2];
    }
    return [];
  }
  function getValidViewportStates(viewportSettings) {
    const breakpoints = getViewportBreakpoints3(viewportSettings);
    return RESPONSIVE_STATES.filter(
      (state2) => (state2.value !== "@tablet" || breakpoints.tablet !== void 0) && (state2.value !== "@mobile" || breakpoints.mobile !== void 0)
    );
  }
  function removePropertiesFromObject(object, properties) {
    if (!properties?.length) {
      return object;
    }
    if (typeof object !== "object" || !object || !Object.keys(object).length) {
      return object;
    }
    for (const key in object) {
      if (properties.includes(key)) {
        delete object[key];
      } else if (typeof object[key] === "object") {
        removePropertiesFromObject(object[key], properties);
      }
    }
    return object;
  }
  var filterObjectByProperties = (object, properties) => {
    if (!object || !properties?.length) {
      return {};
    }
    const newObject = {};
    Object.keys(object).forEach((key) => {
      if (properties.includes(key)) {
        newObject[key] = object[key];
      } else if (typeof object[key] === "object") {
        const newFilter = filterObjectByProperties(
          object[key],
          properties
        );
        if (Object.keys(newFilter).length) {
          newObject[key] = newFilter;
        }
      }
    });
    return newObject;
  };
  function isVariationWithProperties(variation, properties) {
    const variationWithProperties = filterObjectByProperties(
      structuredClone(variation),
      properties
    );
    return areGlobalStylesEqual(variationWithProperties, variation);
  }
  function getFontFamilyFromSetting(fontFamilies, setting) {
    if (!Array.isArray(fontFamilies) || !setting) {
      return null;
    }
    const fontFamilyVariable = setting.replace("var(", "").replace(")", "");
    const fontFamilySlug = fontFamilyVariable?.split("--").slice(-1)[0];
    return fontFamilies.find(
      (fontFamily) => fontFamily.slug === fontFamilySlug
    );
  }
  function getFontFamilies(themeJson) {
    const themeFontFamilies = themeJson?.settings?.typography?.fontFamilies?.theme;
    const customFontFamilies = themeJson?.settings?.typography?.fontFamilies?.custom;
    let fontFamilies = [];
    if (themeFontFamilies && customFontFamilies) {
      fontFamilies = [...themeFontFamilies, ...customFontFamilies];
    } else if (themeFontFamilies) {
      fontFamilies = themeFontFamilies;
    } else if (customFontFamilies) {
      fontFamilies = customFontFamilies;
    }
    const bodyFontFamilySetting = themeJson?.styles?.typography?.fontFamily;
    const bodyFontFamily = getFontFamilyFromSetting(
      fontFamilies,
      bodyFontFamilySetting
    );
    const headingFontFamilySetting = themeJson?.styles?.elements?.heading?.typography?.fontFamily;
    let headingFontFamily;
    if (!headingFontFamilySetting) {
      headingFontFamily = bodyFontFamily;
    } else {
      headingFontFamily = getFontFamilyFromSetting(
        fontFamilies,
        themeJson?.styles?.elements?.heading?.typography?.fontFamily
      );
    }
    return [bodyFontFamily, headingFontFamily];
  }
  function getVariationClassName(variation) {
    if (!variation) {
      return "";
    }
    return `is-style-${variation}`;
  }
  function getNewIndexFromPresets(presets, slugPrefix) {
    const nameRegex = new RegExp(`^${slugPrefix}([\\d]+)$`);
    const highestPresetValue = presets.reduce((currentHighest, preset) => {
      if (typeof preset?.slug === "string") {
        const matches = preset?.slug.match(nameRegex);
        if (matches) {
          const id = parseInt(matches[1], 10);
          if (id > currentHighest) {
            return id;
          }
        }
      }
      return currentHighest;
    }, 0);
    return highestPresetValue + 1;
  }

  // packages/global-styles-ui/build-module/hooks.mjs
  function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = true, state2) {
    const { user, base, merged, onChange } = (0, import_element251.useContext)(GlobalStylesContext);
    const statePathParts = state2?.split(".").filter(Boolean) ?? [];
    const pseudoSelectorState = statePathParts.find(
      (value) => value.startsWith(":")
    );
    const statePathWithoutPseudo = statePathParts.filter((value) => !value.startsWith(":")).join(".");
    const stylePath = [path, statePathWithoutPseudo].filter(Boolean).join(".");
    let sourceValue = merged;
    if (readFrom === "base") {
      sourceValue = base;
    } else if (readFrom === "user") {
      sourceValue = user;
    }
    const styleValue = (0, import_element251.useMemo)(() => {
      const rawValue = getStyle(
        sourceValue,
        stylePath,
        blockName,
        shouldDecodeEncode
      );
      if (pseudoSelectorState) {
        return rawValue?.[pseudoSelectorState] ?? {};
      }
      return rawValue;
    }, [
      sourceValue,
      stylePath,
      blockName,
      shouldDecodeEncode,
      pseudoSelectorState
    ]);
    const setStyleValue = (0, import_element251.useCallback)(
      (newValue) => {
        let valueToSet = newValue;
        if (pseudoSelectorState) {
          const fullCurrentValue = getStyle(
            user,
            stylePath,
            blockName,
            false
          );
          valueToSet = {
            ...fullCurrentValue,
            [pseudoSelectorState]: newValue
          };
        }
        const newGlobalStyles = setStyle(
          user,
          stylePath,
          valueToSet,
          blockName
        );
        onChange(newGlobalStyles);
      },
      [user, onChange, stylePath, blockName, pseudoSelectorState]
    );
    return [styleValue, setStyleValue];
  }
  function useSetting(path, blockName, readFrom = "merged") {
    const { user, base, merged, onChange } = (0, import_element251.useContext)(GlobalStylesContext);
    let sourceValue = merged;
    if (readFrom === "base") {
      sourceValue = base;
    } else if (readFrom === "user") {
      sourceValue = user;
    }
    const settingValue = (0, import_element251.useMemo)(
      () => getSetting(sourceValue, path, blockName),
      [sourceValue, path, blockName]
    );
    const setSettingValue = (0, import_element251.useCallback)(
      (newValue) => {
        const newGlobalStyles = setSetting(
          user,
          path,
          newValue,
          blockName
        );
        onChange(newGlobalStyles);
      },
      [user, onChange, path, blockName]
    );
    return [settingValue, setSettingValue];
  }
  var EMPTY_ARRAY11 = [];
  function hasThemeVariation({
    title,
    settings,
    styles
  }) {
    return title === (0, import_i18n159.__)("Default") || Object.keys(settings || {}).length > 0 || Object.keys(styles || {}).length > 0;
  }
  function useCurrentMergeThemeStyleVariationsWithUserConfig(properties = []) {
    const { variationsFromTheme } = (0, import_data49.useSelect)((select9) => {
      const _variationsFromTheme = select9(
        import_core_data38.store
      ).__experimentalGetCurrentThemeGlobalStylesVariations?.();
      return {
        variationsFromTheme: _variationsFromTheme || EMPTY_ARRAY11
      };
    }, []);
    const { user: userVariation } = (0, import_element251.useContext)(GlobalStylesContext);
    return (0, import_element251.useMemo)(() => {
      const clonedUserVariation = structuredClone(userVariation);
      const userVariationWithoutProperties = removePropertiesFromObject(
        clonedUserVariation,
        properties
      );
      userVariationWithoutProperties.title = (0, import_i18n159.__)("Default");
      const variationsWithPropertiesAndBase = variationsFromTheme.filter((variation) => {
        return isVariationWithProperties(variation, properties);
      }).map((variation) => {
        return mergeGlobalStyles(
          userVariationWithoutProperties,
          variation
        );
      });
      const variationsByProperties = [
        userVariationWithoutProperties,
        ...variationsWithPropertiesAndBase
      ];
      return variationsByProperties?.length ? variationsByProperties.filter(hasThemeVariation) : [];
    }, [properties, userVariation, variationsFromTheme]);
  }
  function useStyleWithResolvedBackground(style) {
    const { merged } = (0, import_element251.useContext)(GlobalStylesContext);
    return (0, import_element251.useMemo)(() => {
      if (!style?.background) {
        return style;
      }
      const tree = { styles: merged?.styles, _links: merged?._links };
      const background = {};
      for (const [key, value] of Object.entries(
        style.background
      )) {
        background[key] = getResolvedValue(
          value && typeof value === "object" ? { ...value } : value,
          tree
        );
      }
      return { ...style, background };
    }, [style, merged]);
  }

  // packages/global-styles-ui/build-module/root-menu.mjs
  var import_jsx_runtime396 = __toESM(require_jsx_runtime(), 1);
  var {
    useHasDimensionsPanel,
    useHasTypographyPanel,
    useHasColorPanel,
    useSettingsForBlockElement,
    useHasBackgroundPanel
  } = unlock6(import_block_editor5.privateApis);
  function RootMenu() {
    const [rawSettings] = useSetting("");
    const settings = useSettingsForBlockElement(rawSettings);
    const hasBackgroundPanel = useHasBackgroundPanel(rawSettings);
    const hasTypographyPanel = useHasTypographyPanel(settings);
    const hasColorPanel = useHasColorPanel(settings);
    const hasShadowPanel = true;
    const hasDimensionsPanel = useHasDimensionsPanel(settings);
    const hasLayoutPanel = hasDimensionsPanel;
    return /* @__PURE__ */ (0, import_jsx_runtime396.jsx)(import_jsx_runtime396.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime396.jsxs)(import_components88.__experimentalItemGroup, { children: [
      hasTypographyPanel && /* @__PURE__ */ (0, import_jsx_runtime396.jsx)(
        NavigationButtonAsItem,
        {
          icon: typography_default,
          path: "/typography",
          children: (0, import_i18n160.__)("Typography")
        }
      ),
      hasColorPanel && /* @__PURE__ */ (0, import_jsx_runtime396.jsx)(NavigationButtonAsItem, { icon: color_default, path: "/colors", children: (0, import_i18n160.__)("Colors") }),
      hasBackgroundPanel && /* @__PURE__ */ (0, import_jsx_runtime396.jsx)(
        NavigationButtonAsItem,
        {
          icon: background_default,
          path: "/background",
          "aria-label": (0, import_i18n160.__)("Background styles"),
          children: (0, import_i18n160.__)("Background")
        }
      ),
      hasShadowPanel && /* @__PURE__ */ (0, import_jsx_runtime396.jsx)(NavigationButtonAsItem, { icon: shadow_default, path: "/shadows", children: (0, import_i18n160.__)("Shadows") }),
      hasLayoutPanel && /* @__PURE__ */ (0, import_jsx_runtime396.jsx)(NavigationButtonAsItem, { icon: layout_default, path: "/layout", children: (0, import_i18n160.__)("Layout") })
    ] }) });
  }
  var root_menu_default = RootMenu;

  // packages/global-styles-ui/build-module/preview-styles.mjs
  var import_components92 = __toESM(require_components(), 1);

  // packages/global-styles-ui/build-module/preview-hooks.mjs
  function useStylesPreviewColors() {
    const [textColor = "black"] = useStyle("color.text");
    const [backgroundColor = "white"] = useStyle("color.background");
    const [headingColor = textColor] = useStyle(
      "elements.h1.color.text"
    );
    const [linkColor = headingColor] = useStyle(
      "elements.link.color.text"
    );
    const [buttonBackgroundColor = linkColor] = useStyle(
      "elements.button.color.background"
    );
    const [coreColors] = useSetting("color.palette.core") || [];
    const [themeColors] = useSetting("color.palette.theme") || [];
    const [customColors] = useSetting("color.palette.custom") || [];
    const paletteColors = (themeColors ?? []).concat(customColors ?? []).concat(coreColors ?? []);
    const textColorObject = paletteColors.filter(
      ({ color }) => color === textColor
    );
    const buttonBackgroundColorObject = paletteColors.filter(
      ({ color }) => color === buttonBackgroundColor
    );
    const highlightedColors = textColorObject.concat(buttonBackgroundColorObject).concat(paletteColors).filter(
      // we exclude these background color because it is already visible in the preview.
      ({ color }) => color !== backgroundColor
    ).slice(0, 2);
    return {
      paletteColors,
      highlightedColors
    };
  }

  // packages/global-styles-ui/build-module/typography-example.mjs
  var import_element252 = __toESM(require_element(), 1);
  var import_components89 = __toESM(require_components(), 1);
  var import_i18n161 = __toESM(require_i18n(), 1);

  // packages/global-styles-ui/build-module/font-library/utils/preview-styles.mjs
  function findNearest(input, numbers) {
    if (numbers.length === 0) {
      return null;
    }
    numbers.sort((a2, b2) => Math.abs(input - a2) - Math.abs(input - b2));
    return numbers[0];
  }
  var FONT_WEIGHT_KEYWORDS = {
    normal: 400,
    bold: 700
  };
  function isValidWeight(weight) {
    return weight !== void 0 && Number.isFinite(weight) && weight >= 1 && weight <= 1e3;
  }
  function resolveFontWeight(fontWeight) {
    const weights = String(fontWeight ?? "").trim().toLowerCase().split(/\s+/).filter(Boolean).map((value) => FONT_WEIGHT_KEYWORDS[value] ?? Number(value));
    const [start2, end] = weights;
    if (!isValidWeight(start2)) {
      return "400";
    }
    if (weights.length !== 2 || !isValidWeight(end)) {
      return String(start2);
    }
    return String(Math.min(Math.max(400, start2), end));
  }
  function formatFontFamily(input) {
    const regex = /^(?!generic\([ a-zA-Z\-]+\)$)(?!var\(\s*--[\w-]+\s*\)$)(?!^[a-zA-Z\-]+$).+/;
    const output = input.trim();
    const formatItem = (item) => {
      item = item.trim();
      if (item.match(regex)) {
        item = item.replace(/^["']|["']$/g, "");
        return `"${item}"`;
      }
      return item;
    };
    if (output.includes(",")) {
      return output.split(",").map(formatItem).filter((item) => item !== "").join(", ");
    }
    return formatItem(output);
  }
  function formatFontFaceName(input) {
    if (!input) {
      return "";
    }
    let output = input.trim();
    if (output.includes(",")) {
      output = (output.split(",").find((item) => item.trim() !== "") ?? "").trim();
    }
    output = output.replace(/^["']|["']$/g, "");
    if (window.navigator.userAgent.toLowerCase().includes("firefox")) {
      output = `"${output}"`;
    }
    return output;
  }
  function getFamilyPreviewStyle(family) {
    const style = {
      fontFamily: formatFontFamily(family.fontFamily)
    };
    if (!("fontFace" in family) || !Array.isArray(family.fontFace)) {
      style.fontWeight = "400";
      style.fontStyle = "normal";
      return style;
    }
    if (family.fontFace) {
      const normalFaces = family.fontFace.filter(
        (face) => face?.fontStyle && face.fontStyle.toLowerCase() === "normal"
      );
      if (normalFaces.length > 0) {
        style.fontStyle = "normal";
        const normalWeights = normalFaces.map(
          (face) => Number(resolveFontWeight(face.fontWeight))
        );
        style.fontWeight = String(
          findNearest(400, normalWeights) ?? 400
        );
      } else {
        style.fontStyle = family.fontFace.length && family.fontFace[0].fontStyle || "normal";
        style.fontWeight = family.fontFace.length && resolveFontWeight(family.fontFace[0].fontWeight) || "400";
      }
    }
    return style;
  }
  function getFacePreviewStyle(face) {
    return {
      fontFamily: formatFontFamily(face.fontFamily),
      fontStyle: face.fontStyle || "normal",
      fontWeight: resolveFontWeight(face.fontWeight)
    };
  }

  // packages/global-styles-ui/build-module/typography-example.mjs
  var import_jsx_runtime397 = __toESM(require_jsx_runtime(), 1);
  function PreviewTypography({
    fontSize,
    variation
  }) {
    const { base } = (0, import_element252.useContext)(GlobalStylesContext);
    let config2 = base;
    if (variation) {
      config2 = { ...base, ...variation };
    }
    const [textColor] = useStyle("color.text");
    const [bodyFontFamilies, headingFontFamilies] = getFontFamilies(config2);
    const bodyPreviewStyle = bodyFontFamilies ? getFamilyPreviewStyle(bodyFontFamilies) : {};
    const headingPreviewStyle = headingFontFamilies ? getFamilyPreviewStyle(headingFontFamilies) : {};
    if (textColor) {
      bodyPreviewStyle.color = textColor;
      headingPreviewStyle.color = textColor;
    }
    if (fontSize) {
      bodyPreviewStyle.fontSize = fontSize;
      headingPreviewStyle.fontSize = fontSize;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime397.jsxs)(
      import_components89.__unstableMotion.div,
      {
        animate: {
          scale: 1,
          opacity: 1
        },
        initial: {
          scale: 0.1,
          opacity: 0
        },
        transition: {
          delay: 0.3,
          type: "tween"
        },
        style: {
          textAlign: "center",
          lineHeight: 1
        },
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime397.jsx)("span", { style: headingPreviewStyle, children: (0, import_i18n161._x)("A", "Uppercase letter A") }),
          /* @__PURE__ */ (0, import_jsx_runtime397.jsx)("span", { style: bodyPreviewStyle, children: (0, import_i18n161._x)("a", "Lowercase letter A") })
        ]
      }
    );
  }

  // packages/global-styles-ui/build-module/highlighted-colors.mjs
  var import_components90 = __toESM(require_components(), 1);
  var import_jsx_runtime398 = __toESM(require_jsx_runtime(), 1);
  function HighlightedColors({
    normalizedColorSwatchSize,
    ratio
  }) {
    const { highlightedColors } = useStylesPreviewColors();
    const scaledSwatchSize = normalizedColorSwatchSize * ratio;
    return highlightedColors.map(({ slug, color }, index3) => /* @__PURE__ */ (0, import_jsx_runtime398.jsx)(
      import_components90.__unstableMotion.div,
      {
        style: {
          height: scaledSwatchSize,
          width: scaledSwatchSize,
          background: color,
          borderRadius: scaledSwatchSize / 2
        },
        animate: {
          scale: 1,
          opacity: 1
        },
        initial: {
          scale: 0.1,
          opacity: 0
        },
        transition: {
          delay: index3 === 1 ? 0.2 : 0.1
        }
      },
      `${slug}-${index3}`
    ));
  }

  // packages/global-styles-ui/build-module/preview-wrapper.mjs
  var import_components91 = __toESM(require_components(), 1);
  var import_compose39 = __toESM(require_compose(), 1);
  var import_element253 = __toESM(require_element(), 1);
  var import_jsx_runtime399 = __toESM(require_jsx_runtime(), 1);
  var normalizedWidth = 248;
  var normalizedHeight = 152;
  var THROTTLE_OPTIONS = {
    leading: true,
    trailing: true
  };
  function PreviewWrapper({
    children,
    label,
    isFocused,
    withHoverView
  }) {
    const [backgroundColor = "white"] = useStyle("color.background");
    const [gradientValue] = useStyle("color.gradient");
    const disableMotion = (0, import_compose39.useReducedMotion)();
    const [isHovered, setIsHovered] = (0, import_element253.useState)(false);
    const [containerResizeListener, { width }] = (0, import_compose39.useResizeObserver)();
    const [throttledWidth, setThrottledWidthState] = (0, import_element253.useState)(width);
    const [ratioState, setRatioState] = (0, import_element253.useState)();
    const setThrottledWidth = (0, import_compose39.useThrottle)(
      setThrottledWidthState,
      250,
      THROTTLE_OPTIONS
    );
    (0, import_element253.useLayoutEffect)(() => {
      if (width) {
        setThrottledWidth(width);
      }
    }, [width, setThrottledWidth]);
    (0, import_element253.useLayoutEffect)(() => {
      const newRatio = throttledWidth ? throttledWidth / normalizedWidth : 1;
      const ratioDiff = newRatio - (ratioState || 0);
      const isRatioDiffBigEnough = Math.abs(ratioDiff) > 0.1;
      if (isRatioDiffBigEnough || !ratioState) {
        setRatioState(newRatio);
      }
    }, [throttledWidth, ratioState]);
    const fallbackRatio = width ? width / normalizedWidth : 1;
    const ratio = ratioState ? ratioState : fallbackRatio;
    const isReady2 = !!width;
    return /* @__PURE__ */ (0, import_jsx_runtime399.jsxs)(import_jsx_runtime399.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime399.jsx)("div", { style: { position: "relative" }, children: containerResizeListener }),
      !isReady2 && // Match the preview aspect ratio so layout doesn't jump once width is measured.
      /* @__PURE__ */ (0, import_jsx_runtime399.jsx)(
        Skeleton,
        {
          className: "global-styles-ui-preview__wrapper",
          style: {
            aspectRatio: normalizedWidth / normalizedHeight
          }
        }
      ),
      isReady2 && /* @__PURE__ */ (0, import_jsx_runtime399.jsx)(
        "div",
        {
          className: clsx_default("global-styles-ui-preview__wrapper", {
            "is-hoverable": withHoverView
          }),
          style: {
            height: normalizedHeight * ratio
          },
          onMouseEnter: () => setIsHovered(true),
          onMouseLeave: () => setIsHovered(false),
          tabIndex: -1,
          children: /* @__PURE__ */ (0, import_jsx_runtime399.jsx)(
            import_components91.__unstableMotion.div,
            {
              style: {
                height: normalizedHeight * ratio,
                width: "100%",
                background: gradientValue ?? backgroundColor
              },
              initial: "start",
              animate: (isHovered || isFocused) && !disableMotion && label ? "hover" : "start",
              children: [].concat(children).map(
                (child, key) => child({ ratio, key })
              )
            }
          )
        }
      )
    ] });
  }
  var preview_wrapper_default = PreviewWrapper;

  // packages/global-styles-ui/build-module/preview-styles.mjs
  var import_jsx_runtime400 = __toESM(require_jsx_runtime(), 1);
  var firstFrameVariants = {
    start: {
      scale: 1,
      opacity: 1
    },
    hover: {
      scale: 0,
      opacity: 0
    }
  };
  var midFrameVariants = {
    hover: {
      opacity: 1
    },
    start: {
      opacity: 0.5
    }
  };
  var secondFrameVariants = {
    hover: {
      scale: 1,
      opacity: 1
    },
    start: {
      scale: 0,
      opacity: 0
    }
  };
  function PreviewStyles({
    label,
    isFocused,
    withHoverView,
    variation
  }) {
    const [fontWeight] = useStyle("typography.fontWeight");
    const [fontFamily = "serif"] = useStyle(
      "typography.fontFamily"
    );
    const [headingFontFamily = fontFamily] = useStyle(
      "elements.h1.typography.fontFamily"
    );
    const [headingFontWeight = fontWeight] = useStyle(
      "elements.h1.typography.fontWeight"
    );
    const [textColor = "black"] = useStyle("color.text");
    const [headingColor = textColor] = useStyle(
      "elements.h1.color.text"
    );
    const { paletteColors } = useStylesPreviewColors();
    return /* @__PURE__ */ (0, import_jsx_runtime400.jsxs)(
      preview_wrapper_default,
      {
        label,
        isFocused,
        withHoverView,
        children: [
          ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime400.jsx)(
            import_components92.__unstableMotion.div,
            {
              variants: firstFrameVariants,
              style: {
                height: "100%",
                overflow: "hidden"
              },
              children: /* @__PURE__ */ (0, import_jsx_runtime400.jsxs)(
                import_components92.__experimentalHStack,
                {
                  spacing: 10 * ratio,
                  justify: "center",
                  style: {
                    height: "100%",
                    overflow: "hidden"
                  },
                  children: [
                    /* @__PURE__ */ (0, import_jsx_runtime400.jsx)(
                      PreviewTypography,
                      {
                        fontSize: 65 * ratio,
                        variation
                      }
                    ),
                    /* @__PURE__ */ (0, import_jsx_runtime400.jsx)(import_components92.__experimentalVStack, { spacing: 4 * ratio, children: /* @__PURE__ */ (0, import_jsx_runtime400.jsx)(
                      HighlightedColors,
                      {
                        normalizedColorSwatchSize: 32,
                        ratio
                      }
                    ) })
                  ]
                }
              )
            },
            key
          ),
          ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime400.jsx)(
            import_components92.__unstableMotion.div,
            {
              variants: withHoverView ? midFrameVariants : void 0,
              style: {
                height: "100%",
                width: "100%",
                position: "absolute",
                top: 0,
                overflow: "hidden",
                filter: "blur(60px)",
                opacity: 0.1
              },
              children: /* @__PURE__ */ (0, import_jsx_runtime400.jsx)(
                import_components92.__experimentalHStack,
                {
                  spacing: 0,
                  justify: "flex-start",
                  style: {
                    height: "100%",
                    overflow: "hidden"
                  },
                  children: paletteColors.slice(0, 4).map(({ color }, index3) => /* @__PURE__ */ (0, import_jsx_runtime400.jsx)(
                    "div",
                    {
                      style: {
                        height: "100%",
                        background: color,
                        flexGrow: 1
                      }
                    },
                    index3
                  ))
                }
              )
            },
            key
          ),
          ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime400.jsx)(
            import_components92.__unstableMotion.div,
            {
              variants: secondFrameVariants,
              style: {
                height: "100%",
                width: "100%",
                overflow: "hidden",
                position: "absolute",
                top: 0
              },
              children: /* @__PURE__ */ (0, import_jsx_runtime400.jsx)(
                import_components92.__experimentalVStack,
                {
                  spacing: 3 * ratio,
                  justify: "center",
                  style: {
                    height: "100%",
                    overflow: "hidden",
                    padding: 10 * ratio,
                    boxSizing: "border-box"
                  },
                  children: label && /* @__PURE__ */ (0, import_jsx_runtime400.jsx)(
                    "div",
                    {
                      style: {
                        fontSize: 40 * ratio,
                        fontFamily: headingFontFamily,
                        color: headingColor,
                        fontWeight: headingFontWeight,
                        lineHeight: "1em",
                        textAlign: "center"
                      },
                      children: label
                    }
                  )
                }
              )
            },
            key
          )
        ]
      }
    );
  }
  var preview_styles_default = PreviewStyles;

  // packages/global-styles-ui/build-module/screen-root.mjs
  var import_jsx_runtime401 = __toESM(require_jsx_runtime(), 1);
  function ScreenRoot() {
    const hasVariations = (0, import_data50.useSelect)((select9) => {
      const { __experimentalGetCurrentThemeGlobalStylesVariations } = select9(import_core_data39.store);
      return !!__experimentalGetCurrentThemeGlobalStylesVariations()?.length;
    }, []);
    return /* @__PURE__ */ (0, import_jsx_runtime401.jsxs)(
      import_components93.Card,
      {
        size: "small",
        isBorderless: true,
        className: "global-styles-ui-screen-root",
        isRounded: false,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(import_components93.CardBody, { children: /* @__PURE__ */ (0, import_jsx_runtime401.jsxs)(import_components93.__experimentalVStack, { spacing: 4, children: [
            /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(import_components93.Card, { className: "global-styles-ui-screen-root__active-style-tile", children: /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(import_components93.CardMedia, { className: "global-styles-ui-screen-root__active-style-tile-preview", children: /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(preview_styles_default, {}) }) }),
            hasVariations && /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(import_components93.__experimentalItemGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(NavigationButtonAsItem, { path: "/variations", children: /* @__PURE__ */ (0, import_jsx_runtime401.jsxs)(import_components93.__experimentalHStack, { justify: "space-between", children: [
              /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(import_components93.FlexItem, { children: (0, import_i18n162.__)("Browse styles") }),
              /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(
                IconWithCurrentColor,
                {
                  icon: (0, import_i18n162.isRTL)() ? chevron_left_default : chevron_right_default
                }
              )
            ] }) }) }),
            /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(root_menu_default, {})
          ] }) }),
          /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(import_components93.CardDivider, {}),
          /* @__PURE__ */ (0, import_jsx_runtime401.jsxs)(import_components93.CardBody, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(
              import_components93.__experimentalSpacer,
              {
                as: "p",
                paddingTop: 2,
                paddingX: "13px",
                marginBottom: 4,
                children: (0, import_i18n162.__)(
                  "Customize the appearance of specific blocks for the whole site."
                )
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(import_components93.__experimentalItemGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(NavigationButtonAsItem, { path: "/blocks", children: /* @__PURE__ */ (0, import_jsx_runtime401.jsxs)(import_components93.__experimentalHStack, { justify: "space-between", children: [
              /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(import_components93.FlexItem, { children: (0, import_i18n162.__)("Blocks") }),
              /* @__PURE__ */ (0, import_jsx_runtime401.jsx)(
                IconWithCurrentColor,
                {
                  icon: (0, import_i18n162.isRTL)() ? chevron_left_default : chevron_right_default
                }
              )
            ] }) }) })
          ] })
        ]
      }
    );
  }
  var screen_root_default = ScreenRoot;

  // packages/global-styles-ui/build-module/screen-block-list.mjs
  var import_blocks8 = __toESM(require_blocks(), 1);
  var import_i18n164 = __toESM(require_i18n(), 1);
  var import_components96 = __toESM(require_components(), 1);
  var import_data52 = __toESM(require_data(), 1);
  var import_element254 = __toESM(require_element(), 1);
  var import_block_editor7 = __toESM(require_block_editor(), 1);
  var import_compose40 = __toESM(require_compose(), 1);
  var import_a11y9 = __toESM(require_a11y(), 1);

  // packages/global-styles-ui/build-module/variations/variations-panel.mjs
  var import_blocks7 = __toESM(require_blocks(), 1);
  var import_data51 = __toESM(require_data(), 1);
  var import_components94 = __toESM(require_components(), 1);
  var import_jsx_runtime402 = __toESM(require_jsx_runtime(), 1);
  function getFilteredBlockStyles(blockStyles, variations) {
    return blockStyles?.filter(
      (style) => style.source === "block" || variations.includes(style.name)
    ) || [];
  }
  function useBlockVariations(name2) {
    const blockStyles = (0, import_data51.useSelect)(
      (select9) => {
        const { getBlockStyles } = select9(import_blocks7.store);
        return getBlockStyles(name2);
      },
      [name2]
    );
    const [variations] = useStyle("variations", name2);
    const variationNames = Object.keys(variations ?? {});
    return getFilteredBlockStyles(blockStyles, variationNames);
  }
  function VariationsPanel({ name: name2 }) {
    const coreBlockStyles = useBlockVariations(name2);
    return /* @__PURE__ */ (0, import_jsx_runtime402.jsx)(import_components94.__experimentalItemGroup, { isBordered: true, isSeparated: true, children: coreBlockStyles.map((style, index3) => {
      if (style?.isDefault) {
        return null;
      }
      return /* @__PURE__ */ (0, import_jsx_runtime402.jsx)(
        NavigationButtonAsItem,
        {
          path: "/blocks/" + encodeURIComponent(name2) + "/variations/" + encodeURIComponent(style.name),
          children: style.label
        },
        index3
      );
    }) });
  }

  // packages/global-styles-ui/build-module/screen-header.mjs
  var import_components95 = __toESM(require_components(), 1);
  var import_i18n163 = __toESM(require_i18n(), 1);
  var import_block_editor6 = __toESM(require_block_editor(), 1);
  var import_jsx_runtime403 = __toESM(require_jsx_runtime(), 1);
  var { StateControl, StateControlBadges } = unlock6(import_block_editor6.privateApis);
  function ScreenHeader({
    title,
    description,
    onBack,
    viewportStates,
    pseudoStates,
    selectedViewport = "default",
    selectedPseudoState = "default",
    onChangeViewport,
    onChangePseudoState,
    showResponsiveStateControls = true
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime403.jsx)(import_components95.__experimentalVStack, { spacing: 0, children: /* @__PURE__ */ (0, import_jsx_runtime403.jsx)(import_components95.__experimentalView, { children: /* @__PURE__ */ (0, import_jsx_runtime403.jsx)(import_components95.__experimentalSpacer, { marginBottom: 0, paddingX: 4, paddingY: 3, children: /* @__PURE__ */ (0, import_jsx_runtime403.jsxs)(import_components95.__experimentalVStack, { spacing: 2, children: [
      /* @__PURE__ */ (0, import_jsx_runtime403.jsxs)(import_components95.__experimentalHStack, { spacing: 2, alignment: "top", children: [
        onBack ? /* @__PURE__ */ (0, import_jsx_runtime403.jsx)(
          import_components95.Button,
          {
            icon: (0, import_i18n163.isRTL)() ? chevron_right_default : chevron_left_default,
            size: "small",
            label: (0, import_i18n163.__)("Back"),
            onClick: onBack
          }
        ) : /* @__PURE__ */ (0, import_jsx_runtime403.jsx)(
          import_components95.Navigator.BackButton,
          {
            icon: (0, import_i18n163.isRTL)() ? chevron_right_default : chevron_left_default,
            size: "small",
            label: (0, import_i18n163.__)("Back")
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime403.jsx)(import_components95.__experimentalSpacer, { children: /* @__PURE__ */ (0, import_jsx_runtime403.jsxs)(import_components95.__experimentalHStack, { justify: "space-between", alignment: "top", children: [
          /* @__PURE__ */ (0, import_jsx_runtime403.jsx)(
            import_components95.__experimentalHeading,
            {
              className: "global-styles-ui-header",
              level: 2,
              size: 13,
              children: title
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime403.jsxs)(import_components95.__experimentalVStack, { spacing: 2, alignment: "right", children: [
            /* @__PURE__ */ (0, import_jsx_runtime403.jsx)(
              StateControl,
              {
                viewportStates: showResponsiveStateControls ? viewportStates : [],
                pseudoStates,
                viewportValue: selectedViewport,
                pseudoStateValue: selectedPseudoState,
                onChangeViewport,
                onChangePseudoState
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime403.jsx)(
              StateControlBadges,
              {
                viewportStates,
                pseudoStates,
                viewportValue: selectedViewport,
                pseudoStateValue: selectedPseudoState
              }
            )
          ] })
        ] }) })
      ] }),
      description && /* @__PURE__ */ (0, import_jsx_runtime403.jsx)(import_components95.__experimentalText, { className: "global-styles-ui-header__description", children: description })
    ] }) }) }) });
  }

  // packages/global-styles-ui/build-module/screen-block-list.mjs
  var import_jsx_runtime404 = __toESM(require_jsx_runtime(), 1);
  var {
    useHasDimensionsPanel: useHasDimensionsPanel2,
    useHasTypographyPanel: useHasTypographyPanel2,
    useHasBorderPanel,
    useSettingsForBlockElement: useSettingsForBlockElement2,
    useHasColorPanel: useHasColorPanel2,
    useHasBackgroundPanel: useHasBackgroundPanel2,
    searchItems
  } = unlock6(import_block_editor7.privateApis);
  function hasAnyValue(value) {
    if (value === void 0 || value === null) {
      return false;
    }
    if (Array.isArray(value)) {
      return value.length > 0;
    }
    if (typeof value === "object") {
      return Object.values(value).some(hasAnyValue);
    }
    return true;
  }
  function hasUserStylesForBlock(user, blockName) {
    return hasAnyValue(user?.styles?.blocks?.[blockName]) || hasAnyValue(user?.settings?.blocks?.[blockName]);
  }
  function useSortedBlockTypes() {
    const blockItems = (0, import_data52.useSelect)(
      (select9) => select9(import_blocks8.store).getBlockTypes(),
      []
    );
    const groupByType = (blocks, block) => {
      const { core, noncore } = blocks;
      const type = block.name.startsWith("core/") ? core : noncore;
      type.push(block);
      return blocks;
    };
    const { core: coreItems, noncore: nonCoreItems } = blockItems.reduce(
      groupByType,
      { core: [], noncore: [] }
    );
    return [...coreItems, ...nonCoreItems];
  }
  function useBlockHasGlobalStyles(blockName) {
    const [rawSettings] = useSetting("", blockName);
    const settings = useSettingsForBlockElement2(rawSettings, blockName);
    const hasTypographyPanel = useHasTypographyPanel2(settings);
    const hasColorPanel = useHasColorPanel2(settings);
    const hasBackgroundPanel = useHasBackgroundPanel2(settings);
    const hasBorderPanel = useHasBorderPanel(settings);
    const hasDimensionsPanel = useHasDimensionsPanel2(settings);
    const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;
    const hasVariationsPanel = !!useBlockVariations(blockName)?.length;
    const hasGlobalStyles = hasTypographyPanel || hasColorPanel || hasBackgroundPanel || hasLayoutPanel || hasVariationsPanel;
    return hasGlobalStyles;
  }
  function BlockMenuItem({ block, isCustomized }) {
    const hasBlockMenuItem = useBlockHasGlobalStyles(block.name);
    if (!hasBlockMenuItem) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(
      NavigationButtonAsItem,
      {
        path: "/blocks/" + encodeURIComponent(block.name),
        children: /* @__PURE__ */ (0, import_jsx_runtime404.jsxs)(import_components96.__experimentalHStack, { justify: "flex-start", spacing: 2, children: [
          /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(
            import_block_editor7.BlockIcon,
            {
              className: "global-styles-ui-block-types-item__icon",
              icon: block.icon
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(import_components96.FlexItem, { children: block.title }),
          isCustomized && /* @__PURE__ */ (0, import_jsx_runtime404.jsxs)(import_jsx_runtime404.Fragment, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(VisuallyHidden, { children: (0, import_i18n164.__)("Has custom styles") }),
            /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(
              "span",
              {
                "aria-hidden": "true",
                className: "global-styles-ui-block-types-item__indicator"
              }
            )
          ] })
        ] })
      }
    );
  }
  function EmptyBlockList({
    filterValue,
    styleFilter
  }) {
    const label = "customized" === styleFilter && !filterValue ? (0, import_i18n164.__)("You haven't customized any blocks yet.") : (0, import_i18n164.__)("No blocks found.");
    return /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(
      import_components96.__experimentalText,
      {
        align: "center",
        as: "p",
        className: "global-styles-ui-block-types-item-list__no-results",
        children: label
      }
    );
  }
  function BlockList({ filterValue, styleFilter }) {
    const sortedBlockTypes = useSortedBlockTypes();
    const debouncedSpeak = (0, import_compose40.useDebounce)(import_a11y9.speak, 500);
    const { user } = (0, import_element254.useContext)(GlobalStylesContext);
    const customizedBlockNames = (0, import_element254.useMemo)(() => {
      const names = /* @__PURE__ */ new Set();
      const blockNames = [
        ...Object.keys(user?.styles?.blocks ?? {}),
        ...Object.keys(user?.settings?.blocks ?? {})
      ];
      blockNames.forEach((blockName) => {
        if (hasUserStylesForBlock(user, blockName)) {
          names.add(blockName);
        }
      });
      return names;
    }, [user]);
    const searchedBlockTypes = searchItems(
      sortedBlockTypes,
      filterValue
    );
    const filteredBlockTypes = styleFilter === "customized" ? searchedBlockTypes.filter(
      (blockType) => customizedBlockNames.has(blockType.name)
    ) : searchedBlockTypes;
    const blockTypesListRef = (0, import_element254.useRef)(null);
    const hasResults = filteredBlockTypes.length > 0;
    (0, import_element254.useEffect)(() => {
      if (!filterValue && styleFilter === "all") {
        return;
      }
      const count = hasResults ? blockTypesListRef.current?.childElementCount || 0 : 0;
      const resultsFoundMessage = (0, import_i18n164.sprintf)(
        /* translators: %d: number of results. */
        (0, import_i18n164._n)("%d result found.", "%d results found.", count),
        count
      );
      debouncedSpeak(resultsFoundMessage, "polite");
    }, [filterValue, styleFilter, hasResults, debouncedSpeak]);
    return /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(
      "div",
      {
        ref: blockTypesListRef,
        className: "global-styles-ui-block-types-item-list",
        role: "list",
        children: filteredBlockTypes.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(
          EmptyBlockList,
          {
            filterValue,
            styleFilter
          }
        ) : filteredBlockTypes.map((block) => /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(
          BlockMenuItem,
          {
            block,
            isCustomized: customizedBlockNames.has(block.name)
          },
          "menu-itemblock-" + block.name
        ))
      }
    );
  }
  var MemoizedBlockList = (0, import_element254.memo)(BlockList);
  function ScreenBlockList() {
    const [filterValue, setFilterValue] = (0, import_element254.useState)("");
    const [styleFilter, setStyleFilter] = (0, import_element254.useState)("all");
    const deferredFilterValue = (0, import_element254.useDeferredValue)(filterValue);
    return /* @__PURE__ */ (0, import_jsx_runtime404.jsxs)(import_jsx_runtime404.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(
        ScreenHeader,
        {
          title: (0, import_i18n164.__)("Blocks"),
          description: (0, import_i18n164.__)(
            "Customize the appearance of specific blocks and for the whole site."
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime404.jsxs)(
        import_components96.__experimentalHStack,
        {
          className: "global-styles-ui-block-types-filter",
          alignment: "center",
          spacing: 2,
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(
              import_components96.SearchControl,
              {
                className: "global-styles-ui-block-types-search",
                onChange: setFilterValue,
                value: filterValue,
                label: (0, import_i18n164.__)("Search"),
                placeholder: (0, import_i18n164.__)("Search"),
                size: "compact"
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime404.jsxs)(menu_exports.Root, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(
                menu_exports.Trigger,
                {
                  render: /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(
                    import_components96.Button,
                    {
                      size: "compact",
                      icon: funnel_default,
                      label: (0, import_i18n164.__)("Filter blocks"),
                      isPressed: styleFilter !== "all"
                    }
                  )
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(menu_exports.Popup, { children: /* @__PURE__ */ (0, import_jsx_runtime404.jsxs)(
                menu_exports.RadioGroup,
                {
                  value: styleFilter,
                  onValueChange: (value) => setStyleFilter(value),
                  children: [
                    /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(menu_exports.RadioItem, { value: "all", closeOnClick: true, children: /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n164.__)("All blocks") }) }),
                    /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(menu_exports.RadioItem, { value: "customized", closeOnClick: true, children: /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n164.__)("Customized") }) })
                  ]
                }
              ) })
            ] })
          ]
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime404.jsx)(
        MemoizedBlockList,
        {
          filterValue: deferredFilterValue,
          styleFilter
        }
      )
    ] });
  }
  var screen_block_list_default = ScreenBlockList;

  // packages/global-styles-ui/build-module/screen-block.mjs
  var import_blocks10 = __toESM(require_blocks(), 1);
  var import_block_editor9 = __toESM(require_block_editor(), 1);
  var import_element256 = __toESM(require_element(), 1);
  var import_data53 = __toESM(require_data(), 1);
  var import_core_data40 = __toESM(require_core_data(), 1);
  var import_components99 = __toESM(require_components(), 1);
  var import_i18n165 = __toESM(require_i18n(), 1);

  // packages/global-styles-ui/build-module/block-preview-panel.mjs
  var import_block_editor8 = __toESM(require_block_editor(), 1);
  var import_blocks9 = __toESM(require_blocks(), 1);
  var import_components97 = __toESM(require_components(), 1);
  var import_element255 = __toESM(require_element(), 1);
  var import_jsx_runtime405 = __toESM(require_jsx_runtime(), 1);
  var { getViewportBreakpoints: getViewportBreakpoints4, getViewportBreakpointValueInPixels: getViewportBreakpointValueInPixels3 } = unlock6(
    privateApis
  );
  var DEFAULT_PREVIEW_WIDTH_BY_VIEWPORT = {
    default: 783,
    "@tablet": 600,
    "@mobile": 480
  };
  function getPreviewWidthByViewport(selectedViewport, viewportSettings) {
    const breakpoints = getViewportBreakpoints4(viewportSettings);
    const mobileWidth = getViewportBreakpointValueInPixels3(
      breakpoints.mobile
    );
    if (selectedViewport === "@mobile" && mobileWidth) {
      return mobileWidth;
    }
    const tabletWidth = getViewportBreakpointValueInPixels3(
      breakpoints.tablet
    );
    if (selectedViewport === "@tablet" && tabletWidth) {
      if (!mobileWidth) {
        return tabletWidth;
      }
      if (breakpoints.mobile === "480px" && breakpoints.tablet === "782px") {
        return DEFAULT_PREVIEW_WIDTH_BY_VIEWPORT["@tablet"];
      }
      return Math.round((mobileWidth + tabletWidth) / 2);
    }
    if (selectedViewport === "default") {
      const desktopBreakpoint = tabletWidth ?? mobileWidth;
      if (desktopBreakpoint) {
        return desktopBreakpoint + 1;
      }
    }
    return DEFAULT_PREVIEW_WIDTH_BY_VIEWPORT[selectedViewport];
  }
  var BlockPreviewPanel = ({
    name: name2,
    variation = "",
    selectedViewport = "default",
    selectedState = "default",
    stateStyles,
    viewportSettings
  }) => {
    const blockExample = (0, import_blocks9.getBlockType)(name2)?.example;
    const blocks = (0, import_element255.useMemo)(() => {
      if (!blockExample) {
        return null;
      }
      const example = {
        ...blockExample,
        attributes: {
          ...blockExample.attributes,
          style: void 0,
          className: variation ? getVariationClassName(variation) : blockExample.attributes?.className
        }
      };
      return (0, import_blocks9.getBlockFromExample)(name2, example);
    }, [name2, blockExample, variation]);
    const stateCSS = (0, import_element255.useMemo)(() => {
      if (selectedState === "default" || !stateStyles) {
        return "";
      }
      return generatePreviewStateStyles(stateStyles, name2);
    }, [selectedState, stateStyles, name2]);
    if (!blockExample) {
      return null;
    }
    const viewportWidth = getPreviewWidthByViewport(selectedViewport, viewportSettings) ?? blockExample.viewportWidth ?? 500;
    const normalizedViewportWidth = blockExample.viewportWidth ?? 500;
    const previewScale = Math.max(viewportWidth / normalizedViewportWidth, 1);
    const previewPadding = 24 * previewScale;
    const previewHeight = 144;
    const sidebarWidth = 235;
    const scale3 = sidebarWidth / viewportWidth;
    const minHeight = scale3 !== 0 && scale3 < 1 && previewHeight ? previewHeight / scale3 : previewHeight;
    return /* @__PURE__ */ (0, import_jsx_runtime405.jsx)(import_components97.__experimentalSpacer, { marginX: 4, marginBottom: 4, children: /* @__PURE__ */ (0, import_jsx_runtime405.jsx)(
      "div",
      {
        className: "global-styles-ui__block-preview-panel",
        style: { maxHeight: previewHeight, boxSizing: "initial" },
        children: /* @__PURE__ */ (0, import_jsx_runtime405.jsx)(
          import_block_editor8.BlockPreview,
          {
            blocks,
            viewportWidth,
            minHeight: previewHeight,
            additionalStyles: (
              //We want this CSS to be in sync with the one in InserterPreviewPanel.
              [
                {
                  css: `
								body{
									padding: ${previewPadding}px;
									min-height:${Math.round(minHeight)}px;
									display:flex;
								}
								.is-root-container {
									width: ${100 / previewScale}%;
									transform: scale(${previewScale});
									transform-origin: top left;
								}
								${stateCSS}
							`
                }
              ]
            )
          }
        )
      }
    ) });
  };
  var block_preview_panel_default = BlockPreviewPanel;

  // packages/global-styles-ui/build-module/subtitle.mjs
  var import_components98 = __toESM(require_components(), 1);
  var import_jsx_runtime406 = __toESM(require_jsx_runtime(), 1);
  function Subtitle({ children, level = 2 }) {
    return /* @__PURE__ */ (0, import_jsx_runtime406.jsx)(import_components98.__experimentalHeading, { className: "global-styles-ui-subtitle", level, children });
  }

  // packages/global-styles-ui/build-module/screen-block.mjs
  var import_jsx_runtime407 = __toESM(require_jsx_runtime(), 1);
  var BACKGROUND_BLOCK_DEFAULT_VALUES2 = {
    backgroundSize: "cover",
    backgroundPosition: "50% 50%"
    // used only when backgroundSize is 'contain'.
  };
  function applyFallbackStyle(border) {
    if (!border) {
      return border;
    }
    const hasColorOrWidth = border.color || border.width;
    if (!border.style && hasColorOrWidth) {
      return { ...border, style: "solid" };
    }
    if (border.style && !hasColorOrWidth) {
      return void 0;
    }
    return border;
  }
  function applyAllFallbackStyles(border) {
    if (!border) {
      return border;
    }
    if ((0, import_components99.__experimentalHasSplitBorders)(border)) {
      return {
        top: applyFallbackStyle(border.top),
        right: applyFallbackStyle(border.right),
        bottom: applyFallbackStyle(border.bottom),
        left: applyFallbackStyle(border.left)
      };
    }
    return applyFallbackStyle(border);
  }
  var {
    useHasDimensionsPanel: useHasDimensionsPanel3,
    useHasTypographyPanel: useHasTypographyPanel3,
    useHasBorderPanel: useHasBorderPanel2,
    useSettingsForBlockElement: useSettingsForBlockElement3,
    useHasColorPanel: useHasColorPanel3,
    useHasFiltersPanel,
    useHasImageSettingsPanel,
    useHasBackgroundPanel: useHasBackgroundPanel3,
    BackgroundPanel: StylesBackgroundPanel,
    BorderPanel: StylesBorderPanel,
    ColorPanel: StylesColorPanel,
    TypographyPanel: StylesTypographyPanel,
    DimensionsPanel: StylesDimensionsPanel,
    FiltersPanel: StylesFiltersPanel,
    ImageSettingsPanel,
    AdvancedPanel: StylesAdvancedPanel
  } = unlock6(import_block_editor9.privateApis);
  function ScreenBlock({
    name: name2,
    variation,
    selectedViewport: controlledSelectedViewport,
    showResponsiveStateControls = true,
    showBlockStateControls = true
  }) {
    const {
      user: userConfig,
      merged: mergedConfig,
      onChange: onChangeGlobalStyles
    } = (0, import_element256.useContext)(GlobalStylesContext);
    let prefixParts = [];
    if (variation) {
      prefixParts = ["variations", variation].concat(prefixParts);
    }
    const prefix2 = prefixParts.join(".");
    const [localSelectedViewport, setSelectedViewport] = (0, import_element256.useState)("default");
    const [selectedPseudoState, setSelectedPseudoState] = (0, import_element256.useState)("default");
    const selectedViewport = controlledSelectedViewport ?? localSelectedViewport;
    const viewportSettings = mergedConfig.settings?.viewport;
    const validViewportStates = (0, import_element256.useMemo)(
      () => getValidViewportStates(viewportSettings),
      [viewportSettings]
    );
    const effectiveSelectedViewport = selectedViewport === "default" || validViewportStates.some(
      (state2) => state2.value === selectedViewport
    ) ? selectedViewport : "default";
    const validPseudoStates = (0, import_element256.useMemo)(
      () => getValidPseudoStates(name2),
      [name2]
    );
    const stateParam = [effectiveSelectedViewport, selectedPseudoState].filter((value) => value !== "default").join(".");
    const hasSelectedState = stateParam.length > 0;
    const [style, setStyle2] = useStyle(
      prefix2,
      name2,
      "user",
      false,
      hasSelectedState ? stateParam : void 0
    );
    const [inheritedStyle] = useStyle(
      prefix2,
      name2,
      "merged",
      false,
      hasSelectedState ? stateParam : void 0
    );
    const inheritedStyleWithResolvedBackground = useStyleWithResolvedBackground(inheritedStyle);
    const [userSettings] = useSetting("", name2, "user");
    const [rawSettings, setSettings] = useSetting("", name2);
    const settingsForBlockElement = useSettingsForBlockElement3(
      rawSettings,
      name2
    );
    const blockType = (0, import_blocks10.getBlockType)(name2);
    let disableBlockGap = false;
    if (settingsForBlockElement?.spacing?.blockGap && blockType?.supports?.spacing?.blockGap && (blockType?.supports?.spacing?.__experimentalSkipSerialization === true || blockType?.supports?.spacing?.__experimentalSkipSerialization?.some?.(
      (spacingType) => spacingType === "blockGap"
    ))) {
      disableBlockGap = true;
    }
    let disableAspectRatio = false;
    if (settingsForBlockElement?.dimensions?.aspectRatio && name2 === "core/group") {
      disableAspectRatio = true;
    }
    const settings = (0, import_element256.useMemo)(() => {
      const updatedSettings = structuredClone(settingsForBlockElement);
      if (disableBlockGap) {
        updatedSettings.spacing.blockGap = false;
      }
      if (disableAspectRatio) {
        updatedSettings.dimensions.aspectRatio = false;
      }
      return updatedSettings;
    }, [settingsForBlockElement, disableBlockGap, disableAspectRatio]);
    const blockVariations = useBlockVariations(name2);
    const hasBackgroundPanel = useHasBackgroundPanel3(settings);
    const hasTypographyPanel = useHasTypographyPanel3(settings);
    const hasColorPanel = useHasColorPanel3(settings);
    const hasBorderPanel = useHasBorderPanel2(settings);
    const hasDimensionsPanel = useHasDimensionsPanel3(settings);
    const hasFiltersPanel = useHasFiltersPanel(settings);
    const shouldShowFiltersPanel = hasFiltersPanel && effectiveSelectedViewport === "default";
    const hasImageSettingsPanel = useHasImageSettingsPanel(
      name2,
      userSettings,
      settings
    );
    const hasVariationsPanel = !!blockVariations?.length && !variation && !hasSelectedState;
    const { canEditCSS } = (0, import_data53.useSelect)((select9) => {
      const { getEntityRecord, __experimentalGetCurrentGlobalStylesId } = select9(import_core_data40.store);
      const globalStylesId = __experimentalGetCurrentGlobalStylesId();
      const globalStyles = globalStylesId ? getEntityRecord("root", "globalStyles", globalStylesId) : void 0;
      return {
        canEditCSS: !!globalStyles?._links?.["wp:action-edit-css"]
      };
    }, []);
    const currentBlockStyle = variation ? blockVariations.find((s2) => s2.name === variation) : null;
    const inheritedStyleWithLayout = (0, import_element256.useMemo)(() => {
      return {
        ...inheritedStyle,
        layout: settings.layout
      };
    }, [inheritedStyle, settings.layout]);
    const styleWithLayout = (0, import_element256.useMemo)(() => {
      return {
        ...style,
        layout: userSettings.layout
      };
    }, [style, userSettings.layout]);
    const onChangeDimensions = (newStyle) => {
      const updatedStyle = { ...newStyle };
      delete updatedStyle.layout;
      setStyle2(updatedStyle);
      if (newStyle.layout !== userSettings.layout) {
        setSettings({
          ...userSettings,
          layout: newStyle.layout
        });
      }
    };
    const onChangeLightbox = (newSetting) => {
      if (newSetting === void 0) {
        setSettings({
          ...rawSettings,
          lightbox: void 0
        });
      } else {
        setSettings({
          ...rawSettings,
          lightbox: {
            ...rawSettings.lightbox,
            ...newSetting
          }
        });
      }
    };
    const onChangeTypography = (newStyle) => {
      const { settings: newSettings, ...styleWithoutSettings } = newStyle;
      if (newSettings?.typography) {
        const stylePathForState = [prefix2, stateParam].filter(Boolean).join(".");
        let updatedConfig = setStyle(
          userConfig,
          stylePathForState,
          styleWithoutSettings,
          name2
        );
        updatedConfig = setSetting(
          updatedConfig,
          "typography",
          {
            ...userSettings.typography,
            ...newSettings.typography
          },
          name2
        );
        onChangeGlobalStyles(updatedConfig);
      } else {
        setStyle2(styleWithoutSettings);
      }
    };
    const onChangeBorders = (newStyle) => {
      if (!newStyle?.border) {
        setStyle2(newStyle);
        return;
      }
      const { radius, ...newBorder } = newStyle.border;
      const border = applyAllFallbackStyles(newBorder);
      const updatedBorder = !(0, import_components99.__experimentalHasSplitBorders)(border) ? {
        top: border,
        right: border,
        bottom: border,
        left: border
      } : {
        color: null,
        style: null,
        width: null,
        ...border
      };
      setStyle2({ ...newStyle, border: { ...updatedBorder, radius } });
    };
    return /* @__PURE__ */ (0, import_jsx_runtime407.jsxs)(import_jsx_runtime407.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime407.jsx)(
        ScreenHeader,
        {
          title: variation ? currentBlockStyle?.label : blockType?.title,
          viewportStates: validViewportStates,
          pseudoStates: showBlockStateControls ? validPseudoStates : [],
          selectedViewport: effectiveSelectedViewport,
          selectedPseudoState,
          onChangeViewport: showResponsiveStateControls ? setSelectedViewport : void 0,
          onChangePseudoState: setSelectedPseudoState,
          showResponsiveStateControls
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime407.jsx)(
        block_preview_panel_default,
        {
          name: name2,
          variation,
          selectedViewport: effectiveSelectedViewport,
          selectedState: hasSelectedState ? stateParam : "default",
          stateStyles: hasSelectedState ? inheritedStyle : void 0,
          viewportSettings
        }
      ),
      hasVariationsPanel && /* @__PURE__ */ (0, import_jsx_runtime407.jsx)("div", { className: "global-styles-ui-screen-variations", children: /* @__PURE__ */ (0, import_jsx_runtime407.jsxs)(import_components99.__experimentalVStack, { spacing: 3, children: [
        /* @__PURE__ */ (0, import_jsx_runtime407.jsx)(Subtitle, { children: (0, import_i18n165.__)("Style Variations") }),
        /* @__PURE__ */ (0, import_jsx_runtime407.jsx)(VariationsPanel, { name: name2 })
      ] }) }),
      hasTypographyPanel && /* @__PURE__ */ (0, import_jsx_runtime407.jsx)(
        StylesTypographyPanel,
        {
          inheritedValue: inheritedStyle,
          value: style,
          onChange: onChangeTypography,
          settings,
          isGlobalStyles: !hasSelectedState,
          showInheritanceLabelIndicators: false
        }
      ),
      hasBackgroundPanel && /* @__PURE__ */ (0, import_jsx_runtime407.jsx)(
        StylesBackgroundPanel,
        {
          inheritedValue: inheritedStyleWithResolvedBackground,
          value: style,
          onChange: setStyle2,
          settings,
          defaultValues: BACKGROUND_BLOCK_DEFAULT_VALUES2,
          showInheritanceLabelIndicators: false
        }
      ),
      shouldShowFiltersPanel && /* @__PURE__ */ (0, import_jsx_runtime407.jsx)(
        StylesFiltersPanel,
        {
          inheritedValue: inheritedStyleWithLayout,
          value: styleWithLayout,
          onChange: setStyle2,
          settings,
          includeLayoutControls: true,
          showInheritanceLabelIndicators: false
        }
      ),
      hasDimensionsPanel && /* @__PURE__ */ (0, import_jsx_runtime407.jsx)(
        StylesDimensionsPanel,
        {
          inheritedValue: inheritedStyleWithLayout,
          value: styleWithLayout,
          onChange: onChangeDimensions,
          settings,
          includeLayoutControls: true,
          showInheritanceLabelIndicators: false
        }
      ),
      hasBorderPanel && /* @__PURE__ */ (0, import_jsx_runtime407.jsx)(
        StylesBorderPanel,
        {
          inheritedValue: inheritedStyle,
          value: style,
          onChange: onChangeBorders,
          settings,
          showInheritanceLabelIndicators: false
        }
      ),
      hasColorPanel && /* @__PURE__ */ (0, import_jsx_runtime407.jsx)(
        StylesColorPanel,
        {
          inheritedValue: inheritedStyle,
          value: style,
          onChange: setStyle2,
          settings,
          showInheritanceLabelIndicators: false
        }
      ),
      hasImageSettingsPanel && !hasSelectedState && /* @__PURE__ */ (0, import_jsx_runtime407.jsx)(
        ImageSettingsPanel,
        {
          onChange: onChangeLightbox,
          value: userSettings,
          inheritedValue: settings
        }
      ),
      canEditCSS && /* @__PURE__ */ (0, import_jsx_runtime407.jsx)(import_components99.PanelBody, { title: (0, import_i18n165.__)("Advanced"), initialOpen: false, children: /* @__PURE__ */ (0, import_jsx_runtime407.jsx)(
        StylesAdvancedPanel,
        {
          value: style,
          onChange: setStyle2,
          inheritedValue: inheritedStyle,
          help: (0, import_i18n165.sprintf)(
            // translators: %s: is the name of a block e.g., 'Image' or 'Table'.
            (0, import_i18n165.__)(
              "Add your own CSS to customize the appearance of the %s block. You do not need to include a CSS selector, just add the property and value."
            ),
            blockType?.title
          )
        }
      ) })
    ] });
  }
  var screen_block_default = ScreenBlock;

  // packages/global-styles-ui/build-module/screen-typography.mjs
  var import_i18n180 = __toESM(require_i18n(), 1);
  var import_element268 = __toESM(require_element(), 1);

  // packages/global-styles-ui/build-module/screen-body.mjs
  var import_components100 = __toESM(require_components(), 1);
  var import_jsx_runtime408 = __toESM(require_jsx_runtime(), 1);
  function ScreenBody({ children, className }) {
    return /* @__PURE__ */ (0, import_jsx_runtime408.jsx)(
      import_components100.__experimentalSpacer,
      {
        className: clsx_default("global-styles-ui-screen-body", className),
        padding: 4,
        children
      }
    );
  }

  // packages/global-styles-ui/build-module/typography-elements.mjs
  var import_i18n166 = __toESM(require_i18n(), 1);
  var import_components101 = __toESM(require_components(), 1);
  var import_jsx_runtime409 = __toESM(require_jsx_runtime(), 1);
  function ElementItem({ parentMenu, element, label }) {
    const prefix2 = element === "text" || !element ? "" : `elements.${element}.`;
    const extraStyles = element === "link" ? {
      textDecoration: "underline"
    } : {};
    const [fontFamily] = useStyle(
      prefix2 + "typography.fontFamily"
    );
    const [fontStyle] = useStyle(prefix2 + "typography.fontStyle");
    const [fontWeight] = useStyle(
      prefix2 + "typography.fontWeight"
    );
    const [backgroundColor] = useStyle(
      prefix2 + "color.background"
    );
    const [fallbackBackgroundColor] = useStyle("color.background");
    const [gradientValue] = useStyle(prefix2 + "color.gradient");
    const [color] = useStyle(prefix2 + "color.text");
    return /* @__PURE__ */ (0, import_jsx_runtime409.jsx)(NavigationButtonAsItem, { path: parentMenu + "/typography/" + element, children: /* @__PURE__ */ (0, import_jsx_runtime409.jsxs)(import_components101.__experimentalHStack, { justify: "flex-start", children: [
      /* @__PURE__ */ (0, import_jsx_runtime409.jsx)(
        import_components101.FlexItem,
        {
          className: "global-styles-ui-screen-typography__indicator",
          "aria-hidden": "true",
          style: {
            fontFamily: fontFamily ?? "serif",
            background: gradientValue ?? backgroundColor ?? fallbackBackgroundColor,
            color,
            fontStyle,
            fontWeight,
            ...extraStyles
          },
          children: (0, import_i18n166.__)("Aa")
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime409.jsx)(import_components101.FlexItem, { children: label })
    ] }) });
  }
  function TypographyElements() {
    const parentMenu = "";
    return /* @__PURE__ */ (0, import_jsx_runtime409.jsxs)(import_components101.__experimentalVStack, { spacing: 3, children: [
      /* @__PURE__ */ (0, import_jsx_runtime409.jsx)(Subtitle, { level: 3, children: (0, import_i18n166.__)("Elements") }),
      /* @__PURE__ */ (0, import_jsx_runtime409.jsxs)(import_components101.__experimentalItemGroup, { isBordered: true, isSeparated: true, children: [
        /* @__PURE__ */ (0, import_jsx_runtime409.jsx)(
          ElementItem,
          {
            parentMenu,
            element: "text",
            label: (0, import_i18n166.__)("Text")
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime409.jsx)(
          ElementItem,
          {
            parentMenu,
            element: "link",
            label: (0, import_i18n166.__)("Links")
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime409.jsx)(
          ElementItem,
          {
            parentMenu,
            element: "heading",
            label: (0, import_i18n166.__)("Headings")
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime409.jsx)(
          ElementItem,
          {
            parentMenu,
            element: "caption",
            label: (0, import_i18n166.__)("Captions")
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime409.jsx)(
          ElementItem,
          {
            parentMenu,
            element: "cite",
            label: (0, import_i18n166.__)("Citations")
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime409.jsx)(
          ElementItem,
          {
            parentMenu,
            element: "button",
            label: (0, import_i18n166.__)("Buttons")
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime409.jsx)(
          ElementItem,
          {
            parentMenu,
            element: "textInput",
            label: (0, import_i18n166.__)("Inputs")
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime409.jsx)(
          ElementItem,
          {
            parentMenu,
            element: "select",
            label: (0, import_i18n166.__)("Selects")
          }
        )
      ] })
    ] });
  }
  var typography_elements_default = TypographyElements;

  // packages/global-styles-ui/build-module/variations/variations-typography.mjs
  var import_components103 = __toESM(require_components(), 1);

  // packages/global-styles-ui/build-module/preview-typography.mjs
  var import_components102 = __toESM(require_components(), 1);
  var import_jsx_runtime410 = __toESM(require_jsx_runtime(), 1);
  var StylesPreviewTypography = ({
    variation,
    isFocused,
    withHoverView
  }) => {
    return /* @__PURE__ */ (0, import_jsx_runtime410.jsx)(
      preview_wrapper_default,
      {
        label: variation.title,
        isFocused,
        withHoverView,
        children: ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime410.jsx)(
          import_components102.__experimentalHStack,
          {
            spacing: 10 * ratio,
            justify: "center",
            style: {
              height: "100%",
              overflow: "hidden"
            },
            children: /* @__PURE__ */ (0, import_jsx_runtime410.jsx)(
              PreviewTypography,
              {
                variation,
                fontSize: 85 * ratio
              }
            )
          },
          key
        )
      }
    );
  };
  var preview_typography_default = StylesPreviewTypography;

  // packages/global-styles-ui/build-module/variations/variation.mjs
  var import_element257 = __toESM(require_element(), 1);
  var import_keycodes5 = __toESM(require_keycodes(), 1);
  var import_i18n167 = __toESM(require_i18n(), 1);
  var import_jsx_runtime411 = __toESM(require_jsx_runtime(), 1);
  function Variation({
    variation,
    children,
    isPill = false,
    properties,
    showTooltip = false
  }) {
    const [isFocused, setIsFocused] = (0, import_element257.useState)(false);
    const {
      base,
      user,
      onChange: setUserConfig
    } = (0, import_element257.useContext)(GlobalStylesContext);
    const context = (0, import_element257.useMemo)(() => {
      let merged = mergeGlobalStyles(base, variation);
      if (properties) {
        merged = filterObjectByProperties(merged, properties);
      }
      return {
        user: variation,
        base,
        merged,
        onChange: () => {
        }
      };
    }, [variation, base, properties]);
    const selectVariation = () => setUserConfig(variation);
    const selectOnEnter = (event) => {
      if (event.keyCode === import_keycodes5.ENTER) {
        event.preventDefault();
        selectVariation();
      }
    };
    const isActive = (0, import_element257.useMemo)(
      () => areGlobalStylesEqual(user, variation),
      [user, variation]
    );
    let label = variation?.title;
    if (variation?.description) {
      label = (0, import_i18n167.sprintf)(
        /* translators: 1: variation title. 2: variation description. */
        (0, import_i18n167._x)("%1$s (%2$s)", "variation label"),
        variation?.title,
        variation?.description
      );
    }
    const content = /* @__PURE__ */ (0, import_jsx_runtime411.jsx)(
      "div",
      {
        className: clsx_default("global-styles-ui-variations_item", {
          "is-active": isActive
        }),
        role: "button",
        onClick: selectVariation,
        onKeyDown: selectOnEnter,
        tabIndex: 0,
        "aria-label": label,
        "aria-current": isActive,
        onFocus: () => setIsFocused(true),
        onBlur: () => setIsFocused(false),
        children: /* @__PURE__ */ (0, import_jsx_runtime411.jsx)(
          "div",
          {
            className: clsx_default("global-styles-ui-variations_item-preview", {
              "is-pill": isPill
            }),
            children: children(isFocused)
          }
        )
      }
    );
    return /* @__PURE__ */ (0, import_jsx_runtime411.jsx)(GlobalStylesContext.Provider, { value: context, children: showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime411.jsxs)(tooltip_exports.Root, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime411.jsx)(tooltip_exports.Trigger, { render: content }),
      /* @__PURE__ */ (0, import_jsx_runtime411.jsx)(tooltip_exports.Popup, { children: variation?.title })
    ] }) : content });
  }

  // packages/global-styles-ui/build-module/variations/variations-typography.mjs
  var import_jsx_runtime412 = __toESM(require_jsx_runtime(), 1);
  var propertiesToFilter = ["typography"];
  function TypographyVariations({
    title,
    gap = 2
  }) {
    const typographyVariations = useCurrentMergeThemeStyleVariationsWithUserConfig(propertiesToFilter);
    if (typographyVariations?.length <= 1) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime412.jsxs)(import_components103.__experimentalVStack, { spacing: 3, children: [
      title && /* @__PURE__ */ (0, import_jsx_runtime412.jsx)(Subtitle, { level: 3, children: title }),
      /* @__PURE__ */ (0, import_jsx_runtime412.jsx)(
        import_components103.__experimentalGrid,
        {
          columns: 3,
          gap,
          className: "global-styles-ui-style-variations-container",
          children: typographyVariations.map(
            (variation, index3) => {
              return /* @__PURE__ */ (0, import_jsx_runtime412.jsx)(
                Variation,
                {
                  variation,
                  properties: propertiesToFilter,
                  showTooltip: true,
                  children: () => /* @__PURE__ */ (0, import_jsx_runtime412.jsx)(
                    preview_typography_default,
                    {
                      variation
                    }
                  )
                },
                index3
              );
            }
          )
        }
      )
    ] });
  }

  // packages/global-styles-ui/build-module/font-families.mjs
  var import_i18n177 = __toESM(require_i18n(), 1);
  var import_components113 = __toESM(require_components(), 1);
  var import_element267 = __toESM(require_element(), 1);

  // packages/global-styles-ui/build-module/font-library/context.mjs
  var import_element258 = __toESM(require_element(), 1);
  var import_data54 = __toESM(require_data(), 1);
  var import_core_data42 = __toESM(require_core_data(), 1);
  var import_i18n169 = __toESM(require_i18n(), 1);

  // packages/global-styles-ui/build-module/font-library/api.mjs
  var import_api_fetch6 = __toESM(require_api_fetch(), 1);
  var import_core_data41 = __toESM(require_core_data(), 1);
  var FONT_FAMILIES_URL = "/wp/v2/font-families";
  function invalidateFontFamilyCache(registry) {
    const { receiveEntityRecords } = registry.dispatch(import_core_data41.store);
    receiveEntityRecords(
      "postType",
      "wp_font_family",
      [],
      void 0,
      true
      // invalidateCache
    );
  }
  async function fetchInstallFontFamily(data, registry) {
    const config2 = {
      path: FONT_FAMILIES_URL,
      method: "POST",
      body: data
    };
    const response = await (0, import_api_fetch6.default)(config2);
    invalidateFontFamilyCache(registry);
    return {
      id: response.id,
      ...response.font_family_settings,
      fontFace: []
    };
  }
  async function fetchInstallFontFace(fontFamilyId, data, registry) {
    const config2 = {
      path: `${FONT_FAMILIES_URL}/${fontFamilyId}/font-faces`,
      method: "POST",
      body: data
    };
    const response = await (0, import_api_fetch6.default)(config2);
    invalidateFontFamilyCache(registry);
    return {
      id: response.id,
      ...response.font_face_settings
    };
  }

  // packages/global-styles-ui/build-module/font-library/utils/constants.mjs
  var import_i18n168 = __toESM(require_i18n(), 1);
  var ALLOWED_FILE_EXTENSIONS = ["otf", "ttf", "woff", "woff2"];
  var FONT_WEIGHTS = {
    100: (0, import_i18n168._x)("Thin", "font weight"),
    200: (0, import_i18n168._x)("Extra-light", "font weight"),
    300: (0, import_i18n168._x)("Light", "font weight"),
    400: (0, import_i18n168._x)("Normal", "font weight"),
    500: (0, import_i18n168._x)("Medium", "font weight"),
    600: (0, import_i18n168._x)("Semi-bold", "font weight"),
    700: (0, import_i18n168._x)("Bold", "font weight"),
    800: (0, import_i18n168._x)("Extra-bold", "font weight"),
    900: (0, import_i18n168._x)("Black", "font weight")
  };
  var FONT_STYLES = {
    normal: (0, import_i18n168._x)("Normal", "font style"),
    italic: (0, import_i18n168._x)("Italic", "font style")
  };

  // packages/global-styles-ui/build-module/font-library/utils/index.mjs
  var { File: File2 } = window;
  function setUIValuesNeeded(font2, extraValues = {}) {
    if (!font2.name && (font2.fontFamily || font2.slug)) {
      font2.name = font2.fontFamily || font2.slug;
    }
    return {
      ...font2,
      ...extraValues
    };
  }
  function isUrlEncoded(url) {
    if (typeof url !== "string") {
      return false;
    }
    return url !== decodeURIComponent(url);
  }
  function getFontFaceVariantName(face) {
    const weightName = FONT_WEIGHTS[face.fontWeight ?? ""] || face.fontWeight;
    const styleName = face.fontStyle === "normal" ? "" : FONT_STYLES[face.fontStyle ?? ""] || face.fontStyle;
    return `${weightName} ${styleName}`;
  }
  function mergeFontFaces(existing = [], incoming = []) {
    const map = /* @__PURE__ */ new Map();
    for (const face of existing) {
      map.set(`${face.fontWeight}${face.fontStyle}`, face);
    }
    for (const face of incoming) {
      map.set(`${face.fontWeight}${face.fontStyle}`, face);
    }
    return Array.from(map.values());
  }
  function mergeFontFamilies(existing = [], incoming = []) {
    const map = /* @__PURE__ */ new Map();
    for (const font2 of existing) {
      map.set(font2.slug, { ...font2 });
    }
    for (const font2 of incoming) {
      if (map.has(font2.slug)) {
        const { fontFace: incomingFontFaces, ...restIncoming } = font2;
        const existingFont = map.get(font2.slug);
        const mergedFontFaces = mergeFontFaces(
          existingFont.fontFace,
          incomingFontFaces
        );
        map.set(font2.slug, {
          ...restIncoming,
          fontFace: mergedFontFaces
        });
      } else {
        map.set(font2.slug, { ...font2 });
      }
    }
    return Array.from(map.values());
  }
  async function loadFontFaceInBrowser(fontFace, source, addTo = "all") {
    let dataSource;
    if (typeof source === "string") {
      dataSource = `url(${source})`;
    } else if (source instanceof File2) {
      dataSource = await source.arrayBuffer();
    } else {
      return;
    }
    const newFont = new window.FontFace(
      formatFontFaceName(fontFace.fontFamily),
      dataSource,
      {
        style: fontFace.fontStyle,
        weight: String(fontFace.fontWeight)
      }
    );
    const loadedFace = await newFont.load();
    if (addTo === "document" || addTo === "all") {
      document.fonts.add(loadedFace);
    }
    if (addTo === "iframe" || addTo === "all") {
      const iframe = document.querySelector(
        'iframe[name="editor-canvas"]'
      );
      if (iframe?.contentDocument) {
        iframe.contentDocument.fonts.add(loadedFace);
      }
    }
  }
  function unloadFontFaceInBrowser(fontFace, removeFrom = "all") {
    const unloadFontFace = (fonts) => {
      fonts.forEach((f2) => {
        if (f2.family === formatFontFaceName(fontFace?.fontFamily) && f2.weight === fontFace?.fontWeight && f2.style === fontFace?.fontStyle) {
          fonts.delete(f2);
        }
      });
    };
    if (removeFrom === "document" || removeFrom === "all") {
      unloadFontFace(document.fonts);
    }
    if (removeFrom === "iframe" || removeFrom === "all") {
      const iframe = document.querySelector(
        'iframe[name="editor-canvas"]'
      );
      if (iframe?.contentDocument) {
        unloadFontFace(iframe.contentDocument.fonts);
      }
    }
  }
  function getDisplaySrcFromFontFace(input) {
    if (!input) {
      return;
    }
    let src;
    if (Array.isArray(input)) {
      src = input[0];
    } else {
      src = input;
    }
    if (src.startsWith("file:.")) {
      return;
    }
    if (!isUrlEncoded(src)) {
      src = encodeURI(src);
    }
    return src;
  }
  function makeFontFamilyFormData(fontFamily) {
    const formData = new FormData();
    const { fontFace, category, ...familyWithValidParameters } = fontFamily;
    const fontFamilySettings = {
      ...familyWithValidParameters,
      slug: kebabCase2(fontFamily.slug)
    };
    formData.append(
      "font_family_settings",
      JSON.stringify(fontFamilySettings)
    );
    return formData;
  }
  function makeFontFacesFormData(font2) {
    const fontFacesFormData = (font2?.fontFace ?? []).map(
      (item, faceIndex) => {
        const face = { ...item };
        const formData = new FormData();
        if (face.file) {
          const files = Array.isArray(face.file) ? face.file : [face.file];
          const src = [];
          files.forEach((file, key) => {
            const fileId = `file-${faceIndex}-${key}`;
            formData.append(fileId, file, file.name);
            src.push(fileId);
          });
          face.src = src.length === 1 ? src[0] : src;
          delete face.file;
          formData.append("font_face_settings", JSON.stringify(face));
        } else {
          formData.append("font_face_settings", JSON.stringify(face));
        }
        return formData;
      }
    );
    return fontFacesFormData;
  }
  async function batchInstallFontFaces(fontFamilyId, fontFacesData, registry) {
    const responses = [];
    for (const faceData of fontFacesData) {
      try {
        const response = await fetchInstallFontFace(
          fontFamilyId,
          faceData,
          registry
        );
        responses.push({ status: "fulfilled", value: response });
      } catch (error2) {
        responses.push({ status: "rejected", reason: error2 });
      }
    }
    const results = {
      errors: [],
      successes: []
    };
    responses.forEach((result, index3) => {
      if (result.status === "fulfilled" && result.value) {
        const response = result.value;
        results.successes.push(response);
      } else if (result.reason) {
        results.errors.push({
          data: fontFacesData[index3],
          message: result.reason.message
        });
      }
    });
    return results;
  }
  async function downloadFontFaceAssets(src) {
    src = Array.isArray(src) ? src : [src];
    const files = await Promise.all(
      src.map(async (url) => {
        return fetch(new Request(url)).then((response) => {
          if (!response.ok) {
            throw new Error(
              `Error downloading font face asset from ${url}. Server responded with status: ${response.status}`
            );
          }
          return response.blob();
        }).then((blob) => {
          const filename = url.split("/").pop();
          const file = new File2([blob], filename, {
            type: blob.type
          });
          return file;
        });
      })
    );
    return files.length === 1 ? files[0] : files;
  }
  function checkFontFaceInstalled(fontFace, collection) {
    return -1 !== collection.findIndex((collectionFontFace) => {
      return collectionFontFace.fontWeight === fontFace.fontWeight && collectionFontFace.fontStyle === fontFace.fontStyle;
    });
  }

  // packages/global-styles-ui/build-module/font-library/utils/set-immutably.mjs
  function setImmutably2(object, path, value) {
    path = Array.isArray(path) ? [...path] : [path];
    object = Array.isArray(object) ? [...object] : { ...object };
    const leaf = path.pop();
    let prev = object;
    for (const key of path) {
      const lvl = prev[key];
      prev = prev[key] = Array.isArray(lvl) ? [...lvl] : { ...lvl };
    }
    prev[leaf] = value;
    return object;
  }

  // packages/global-styles-ui/build-module/font-library/utils/toggleFont.mjs
  function toggleFont(font2, face, initialfonts = []) {
    const isFontActivated = (f2) => f2.slug === font2.slug;
    const getActivatedFont = (fonts) => fonts.find(isFontActivated);
    const toggleEntireFontFamily = (activatedFont2) => {
      if (!activatedFont2) {
        return [...initialfonts, font2];
      }
      return initialfonts.filter(
        (f2) => !isFontActivated(f2)
      );
    };
    const toggleFontVariant = (activatedFont2) => {
      const isFaceActivated = (f2) => f2.fontWeight === face.fontWeight && f2.fontStyle === face.fontStyle;
      if (!activatedFont2) {
        return [...initialfonts, { ...font2, fontFace: [face] }];
      }
      let newFontFaces = activatedFont2.fontFace || [];
      if (newFontFaces.find(isFaceActivated)) {
        newFontFaces = newFontFaces.filter(
          (f2) => !isFaceActivated(f2)
        );
      } else {
        newFontFaces = [...newFontFaces, face];
      }
      if (newFontFaces.length === 0) {
        return initialfonts.filter(
          (f2) => !isFontActivated(f2)
        );
      }
      return initialfonts.map(
        (f2) => isFontActivated(f2) ? { ...f2, fontFace: newFontFaces } : f2
      );
    };
    const activatedFont = getActivatedFont(initialfonts);
    if (!face) {
      return toggleEntireFontFamily(activatedFont);
    }
    return toggleFontVariant(activatedFont);
  }

  // packages/global-styles-ui/build-module/font-library/context.mjs
  var import_jsx_runtime413 = __toESM(require_jsx_runtime(), 1);
  var FontLibraryContext = (0, import_element258.createContext)(
    {}
  );
  FontLibraryContext.displayName = "FontLibraryContext";
  function FontLibraryProvider({ children }) {
    const registry = (0, import_data54.useRegistry)();
    const { saveEntityRecord, deleteEntityRecord } = (0, import_data54.useDispatch)(import_core_data42.store);
    const { globalStylesId } = (0, import_data54.useSelect)((select9) => {
      const { __experimentalGetCurrentGlobalStylesId } = select9(import_core_data42.store);
      return { globalStylesId: __experimentalGetCurrentGlobalStylesId() };
    }, []);
    const globalStyles = (0, import_core_data42.useEntityRecord)(
      "root",
      "globalStyles",
      globalStylesId ?? 0,
      { enabled: globalStylesId !== void 0 }
    );
    const [isInstalling, setIsInstalling] = (0, import_element258.useState)(false);
    const { records: libraryPosts = [], isResolving: isResolvingLibrary } = (0, import_core_data42.useEntityRecords)(
      "postType",
      "wp_font_family",
      {
        _embed: true
      }
    );
    const libraryFonts = (libraryPosts || []).map((fontFamilyPost) => {
      return {
        id: fontFamilyPost.id,
        ...fontFamilyPost.font_family_settings || {},
        fontFace: fontFamilyPost?._embedded?.font_faces?.map(
          (face) => face.font_face_settings
        ) || []
      };
    }) || [];
    const [fontFamilies, setFontFamilies] = useSetting("typography.fontFamilies");
    const saveFontFamilies = async (fonts) => {
      if (!globalStyles.record) {
        return;
      }
      const updatedGlobalStyles = globalStyles.record;
      const finalGlobalStyles = setImmutably2(
        updatedGlobalStyles ?? {},
        ["settings", "typography", "fontFamilies"],
        fonts
      );
      await saveEntityRecord("root", "globalStyles", finalGlobalStyles);
    };
    const [modalTabOpen, setModalTabOpen] = (0, import_element258.useState)("");
    const [libraryFontSelected, setLibraryFontSelected] = (0, import_element258.useState)(void 0);
    const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map((f2) => setUIValuesNeeded(f2, { source: "theme" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : [];
    const customFonts = fontFamilies?.custom ? fontFamilies.custom.map((f2) => setUIValuesNeeded(f2, { source: "custom" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : [];
    const baseCustomFonts = libraryFonts ? libraryFonts.map((f2) => setUIValuesNeeded(f2, { source: "custom" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : [];
    (0, import_element258.useEffect)(() => {
      if (!modalTabOpen) {
        setLibraryFontSelected(void 0);
      }
    }, [modalTabOpen]);
    const handleSetLibraryFontSelected = (font2) => {
      if (!font2) {
        setLibraryFontSelected(void 0);
        return;
      }
      const fonts = font2.source === "theme" ? themeFonts : baseCustomFonts;
      const fontSelected = fonts.find((f2) => f2.slug === font2.slug);
      setLibraryFontSelected({
        ...fontSelected || font2,
        source: font2.source
      });
    };
    const [loadedFontUrls] = (0, import_element258.useState)(/* @__PURE__ */ new Set());
    const getAvailableFontsOutline = (availableFontFamilies) => {
      const outline = availableFontFamilies.reduce(
        (acc, font2) => {
          const availableFontFaces = font2?.fontFace && font2.fontFace?.length > 0 ? font2?.fontFace.map(
            (face) => `${face.fontStyle ?? ""}${face.fontWeight ?? ""}`
          ) : ["normal400"];
          acc[font2.slug] = availableFontFaces;
          return acc;
        },
        {}
      );
      return outline;
    };
    const getActivatedFontsOutline = (source) => {
      switch (source) {
        case "theme":
          return getAvailableFontsOutline(themeFonts);
        case "custom":
        default:
          return getAvailableFontsOutline(customFonts);
      }
    };
    const isFontActivated = (slug, style, weight, source) => {
      if (!style && !weight) {
        return !!getActivatedFontsOutline(source)[slug];
      }
      return !!getActivatedFontsOutline(source)[slug]?.includes(
        (style ?? "") + (weight ?? "")
      );
    };
    const getFontFacesActivated = (slug, source) => {
      return getActivatedFontsOutline(source)[slug] || [];
    };
    async function installFonts(fontFamiliesToInstall) {
      setIsInstalling(true);
      try {
        const fontFamiliesToActivate = [];
        let installationErrors = [];
        for (const fontFamilyToInstall of fontFamiliesToInstall) {
          let isANewFontFamily = false;
          const fontFamilyRecords = await (0, import_data54.resolveSelect)(
            import_core_data42.store
          ).getEntityRecords(
            "postType",
            "wp_font_family",
            {
              slug: fontFamilyToInstall.slug,
              per_page: 1,
              _embed: true
            }
          );
          const fontFamilyPost = fontFamilyRecords && fontFamilyRecords.length > 0 ? fontFamilyRecords[0] : null;
          let installedFontFamily = fontFamilyPost ? {
            id: fontFamilyPost.id,
            ...fontFamilyPost.font_family_settings,
            fontFace: (fontFamilyPost?._embedded?.font_faces ?? []).map(
              (face) => face.font_face_settings
            ) || []
          } : null;
          if (!installedFontFamily) {
            isANewFontFamily = true;
            installedFontFamily = await fetchInstallFontFamily(
              makeFontFamilyFormData(fontFamilyToInstall),
              registry
            );
          }
          const alreadyInstalledFontFaces = installedFontFamily.fontFace && fontFamilyToInstall.fontFace ? installedFontFamily.fontFace.filter(
            (fontFaceToInstall) => fontFaceToInstall && fontFamilyToInstall.fontFace && checkFontFaceInstalled(
              fontFaceToInstall,
              fontFamilyToInstall.fontFace
            )
          ) : [];
          if (installedFontFamily.fontFace && fontFamilyToInstall.fontFace) {
            fontFamilyToInstall.fontFace = fontFamilyToInstall.fontFace.filter(
              (fontFaceToInstall) => !checkFontFaceInstalled(
                fontFaceToInstall,
                installedFontFamily.fontFace
              )
            );
          }
          let successfullyInstalledFontFaces = [];
          let unsuccessfullyInstalledFontFaces = [];
          if (fontFamilyToInstall?.fontFace?.length ?? 0 > 0) {
            const response = await batchInstallFontFaces(
              // @ts-expect-error - Type mismatch: WpFontFamily.id can be number | string, but batchInstallFontFaces expects only string.
              installedFontFamily.id,
              makeFontFacesFormData(
                fontFamilyToInstall
              ),
              registry
            );
            successfullyInstalledFontFaces = response?.successes;
            unsuccessfullyInstalledFontFaces = response?.errors;
          }
          if (successfullyInstalledFontFaces?.length > 0 || alreadyInstalledFontFaces?.length > 0) {
            installedFontFamily.fontFace = [
              ...successfullyInstalledFontFaces
            ];
            fontFamiliesToActivate.push(installedFontFamily);
          }
          if (installedFontFamily && !fontFamilyToInstall?.fontFace?.length) {
            fontFamiliesToActivate.push(installedFontFamily);
          }
          if (isANewFontFamily && (fontFamilyToInstall?.fontFace?.length ?? 0) > 0 && successfullyInstalledFontFaces?.length === 0) {
            await deleteEntityRecord(
              "postType",
              "wp_font_family",
              installedFontFamily.id,
              { force: true }
            );
          }
          installationErrors = installationErrors.concat(
            unsuccessfullyInstalledFontFaces
          );
        }
        const installationErrorMessages = installationErrors.reduce(
          (unique, item) => unique.includes(item.message) ? unique : [...unique, item.message],
          []
        );
        if (fontFamiliesToActivate.length > 0) {
          const activeFonts = activateCustomFontFamilies(
            // @ts-expect-error - Type mismatch: items may have id as number | string, but FontFamily.id should be string | undefined.
            fontFamiliesToActivate
          );
          await saveFontFamilies(activeFonts);
        }
        if (installationErrorMessages.length > 0) {
          const installError = new Error((0, import_i18n169.__)("There was an error installing fonts."));
          installError.installationErrors = installationErrorMessages;
          throw installError;
        }
      } finally {
        setIsInstalling(false);
      }
    }
    async function uninstallFontFamily(fontFamilyToUninstall) {
      if (!fontFamilyToUninstall?.id) {
        throw new Error((0, import_i18n169.__)("Font family to uninstall is not defined."));
      }
      try {
        await deleteEntityRecord(
          "postType",
          "wp_font_family",
          fontFamilyToUninstall.id,
          { force: true }
        );
        const activeFonts = deactivateFontFamily(fontFamilyToUninstall);
        await saveFontFamilies(activeFonts);
        return { deleted: true };
      } catch (error2) {
        console.error(
          `There was an error uninstalling the font family:`,
          error2
        );
        throw error2;
      }
    }
    const deactivateFontFamily = (font2) => {
      const initialCustomFonts = fontFamilies?.[font2.source ?? ""] ?? [];
      const newCustomFonts = initialCustomFonts.filter(
        (f2) => f2.slug !== font2.slug
      );
      const activeFonts = {
        ...fontFamilies,
        [font2.source ?? ""]: newCustomFonts
      };
      setFontFamilies(activeFonts);
      if (font2.fontFace) {
        font2.fontFace.forEach((face) => {
          unloadFontFaceInBrowser(face, "all");
        });
      }
      return activeFonts;
    };
    const activateCustomFontFamilies = (fontsToAdd) => {
      const fontsToActivate = cleanFontsForSave(fontsToAdd);
      const activeFonts = {
        ...fontFamilies,
        // Merge the existing custom fonts with the new fonts.
        custom: mergeFontFamilies(fontFamilies?.custom, fontsToActivate)
      };
      setFontFamilies(activeFonts);
      loadFontsInBrowser(fontsToActivate);
      return activeFonts;
    };
    const cleanFontsForSave = (fonts) => {
      return fonts.map(({ id: _familyDbId, fontFace, ...font2 }) => ({
        ...font2,
        ...fontFace && fontFace.length > 0 ? {
          fontFace: fontFace.map(
            ({ id: _faceDbId, ...face }) => face
          )
        } : {}
      }));
    };
    const loadFontsInBrowser = (fonts) => {
      fonts.forEach((font2) => {
        if (font2.fontFace) {
          font2.fontFace.forEach((face) => {
            const displaySrc = getDisplaySrcFromFontFace(
              face?.src ?? ""
            );
            if (displaySrc) {
              loadFontFaceInBrowser(face, displaySrc, "all");
            }
          });
        }
      });
    };
    const toggleActivateFont = (font2, face) => {
      const initialFonts = fontFamilies?.[font2.source ?? ""] ?? [];
      const newFonts = toggleFont(font2, face, initialFonts);
      setFontFamilies({
        ...fontFamilies,
        [font2.source ?? ""]: newFonts
      });
      const isFaceActivated = isFontActivated(
        font2.slug,
        face?.fontStyle ?? "",
        face?.fontWeight ?? "",
        font2.source ?? "custom"
      );
      if (face && isFaceActivated) {
        unloadFontFaceInBrowser(face, "all");
      } else {
        const displaySrc = getDisplaySrcFromFontFace(face?.src ?? "");
        if (face && displaySrc) {
          loadFontFaceInBrowser(face, displaySrc, "all");
        }
      }
    };
    const loadFontFaceAsset = async (fontFace) => {
      if (!fontFace.src) {
        return;
      }
      const src = getDisplaySrcFromFontFace(fontFace.src);
      if (!src || loadedFontUrls.has(src)) {
        return;
      }
      loadFontFaceInBrowser(fontFace, src, "document");
      loadedFontUrls.add(src);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime413.jsx)(
      FontLibraryContext.Provider,
      {
        value: {
          libraryFontSelected,
          handleSetLibraryFontSelected,
          fontFamilies: fontFamilies ?? {},
          baseCustomFonts,
          isFontActivated,
          getFontFacesActivated,
          loadFontFaceAsset,
          installFonts,
          uninstallFontFamily,
          toggleActivateFont,
          getAvailableFontsOutline,
          modalTabOpen,
          setModalTabOpen,
          saveFontFamilies,
          isResolvingLibrary,
          isInstalling
        },
        children
      }
    );
  }
  var context_default = FontLibraryProvider;

  // packages/global-styles-ui/build-module/font-library/modal.mjs
  var import_i18n175 = __toESM(require_i18n(), 1);
  var import_components111 = __toESM(require_components(), 1);
  var import_core_data45 = __toESM(require_core_data(), 1);
  var import_data56 = __toESM(require_data(), 1);

  // packages/global-styles-ui/build-module/font-library/installed-fonts.mjs
  var import_components106 = __toESM(require_components(), 1);
  var import_core_data43 = __toESM(require_core_data(), 1);
  var import_data55 = __toESM(require_data(), 1);
  var import_element262 = __toESM(require_element(), 1);
  var import_i18n171 = __toESM(require_i18n(), 1);

  // packages/global-styles-ui/build-module/font-library/font-card.mjs
  var import_i18n170 = __toESM(require_i18n(), 1);
  var import_element260 = __toESM(require_element(), 1);
  var import_components104 = __toESM(require_components(), 1);

  // packages/global-styles-ui/build-module/font-library/font-demo.mjs
  var import_element259 = __toESM(require_element(), 1);
  var import_jsx_runtime414 = __toESM(require_jsx_runtime(), 1);
  var loadedPreviews = /* @__PURE__ */ new Set();
  function getPreviewUrl(fontFace) {
    if (fontFace.preview) {
      return fontFace.preview;
    }
    if (fontFace.src) {
      return Array.isArray(fontFace.src) ? fontFace.src[0] : fontFace.src;
    }
    return void 0;
  }
  function getDisplayFontFace(font2) {
    if ("fontStyle" in font2 && font2.fontStyle || "fontWeight" in font2 && font2.fontWeight) {
      return font2;
    }
    if ("fontFace" in font2 && font2.fontFace && font2.fontFace.length) {
      return font2.fontFace.find(
        (face) => face.fontStyle === "normal" && face.fontWeight === "400"
      ) || font2.fontFace[0];
    }
    return {
      fontStyle: "normal",
      fontWeight: "400",
      fontFamily: font2.fontFamily
    };
  }
  function FontDemo({ font: font2, text }) {
    const ref = (0, import_element259.useRef)(null);
    const fontFace = getDisplayFontFace(font2);
    const style = getFamilyPreviewStyle(font2);
    text = text || ("name" in font2 ? font2.name : "");
    const customPreviewUrl = font2.preview;
    const previewUrl = customPreviewUrl ?? getPreviewUrl(fontFace);
    const isPreviewImage = Boolean(
      previewUrl && /\.(png|jpg|jpeg|gif|svg)$/i.test(previewUrl)
    );
    const [isIntersecting, setIsIntersecting] = (0, import_element259.useState)(false);
    const [isFontLoaded, setIsFontLoaded] = (0, import_element259.useState)(false);
    const [resolvedUrl, setResolvedUrl] = (0, import_element259.useState)();
    const { loadFontFaceAsset } = (0, import_element259.useContext)(FontLibraryContext);
    const isAssetLoaded = isPreviewImage ? !!previewUrl && (loadedPreviews.has(previewUrl) || resolvedUrl === previewUrl) : isFontLoaded;
    const estimatedImageWidth = Math.min(
      Math.max(text.length * 12, 48),
      300
    );
    const faceStyles = getFacePreviewStyle(fontFace);
    const textDemoStyle = {
      fontSize: "18px",
      lineHeight: 1,
      opacity: isAssetLoaded ? "1" : "0",
      ...style,
      ...faceStyles
    };
    (0, import_element259.useEffect)(() => {
      if (isPreviewImage) {
        return;
      }
      const observer = new window.IntersectionObserver(([entry]) => {
        setIsIntersecting(entry.isIntersecting);
      }, {});
      if (ref.current) {
        observer.observe(ref.current);
      }
      return () => observer.disconnect();
    }, [isPreviewImage]);
    (0, import_element259.useEffect)(() => {
      const loadAsset = async () => {
        if (isIntersecting && !isPreviewImage) {
          if (fontFace.src) {
            await loadFontFaceAsset(fontFace);
          }
          setIsFontLoaded(true);
        }
      };
      loadAsset();
    }, [fontFace, isIntersecting, loadFontFaceAsset, isPreviewImage]);
    return /* @__PURE__ */ (0, import_jsx_runtime414.jsx)("div", { ref, className: "font-library__font-demo", children: isPreviewImage ? /* @__PURE__ */ (0, import_jsx_runtime414.jsxs)(import_jsx_runtime414.Fragment, { children: [
      !isAssetLoaded && /* @__PURE__ */ (0, import_jsx_runtime414.jsx)(
        Skeleton,
        {
          className: "font-library__font-variant-demo-skeleton",
          style: { width: estimatedImageWidth }
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime414.jsx)(
        "img",
        {
          src: previewUrl,
          loading: "lazy",
          alt: text,
          onLoad: () => {
            if (previewUrl) {
              loadedPreviews.add(previewUrl);
            }
            setResolvedUrl(previewUrl);
          },
          onError: () => setResolvedUrl(previewUrl),
          className: clsx_default(
            "font-library__font-variant_demo-image",
            { "is-loading": !isAssetLoaded }
          )
        }
      )
    ] }) : /* @__PURE__ */ (0, import_jsx_runtime414.jsx)(
      "span",
      {
        style: textDemoStyle,
        className: "font-library__font-variant_demo-text",
        children: text
      }
    ) });
  }
  var font_demo_default = FontDemo;

  // packages/global-styles-ui/build-module/font-library/font-card.mjs
  var import_jsx_runtime415 = __toESM(require_jsx_runtime(), 1);
  function FontCard({
    font: font2,
    onClick,
    variantsText,
    navigatorPath,
    shouldFocus
  }) {
    const variantsCount = font2.fontFace?.length || 1;
    const style = {
      cursor: !!onClick ? "pointer" : "default"
    };
    const navigator2 = (0, import_components104.useNavigator)();
    const ref = (0, import_element260.useRef)(null);
    (0, import_element260.useEffect)(() => {
      if (shouldFocus) {
        ref.current?.focus();
      }
    }, [shouldFocus]);
    return /* @__PURE__ */ (0, import_jsx_runtime415.jsx)(
      import_components104.Button,
      {
        ref,
        __next40pxDefaultSize: true,
        onClick: () => {
          onClick();
          if (navigatorPath) {
            navigator2.goTo(navigatorPath);
          }
        },
        style,
        className: "font-library__font-card",
        children: /* @__PURE__ */ (0, import_jsx_runtime415.jsxs)(import_components104.Flex, { justify: "space-between", wrap: false, children: [
          /* @__PURE__ */ (0, import_jsx_runtime415.jsx)(font_demo_default, { font: font2 }),
          /* @__PURE__ */ (0, import_jsx_runtime415.jsxs)(import_components104.Flex, { justify: "flex-end", children: [
            /* @__PURE__ */ (0, import_jsx_runtime415.jsx)(import_components104.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime415.jsx)(import_components104.__experimentalText, { className: "font-library__font-card__count", children: variantsText || (0, import_i18n170.sprintf)(
              /* translators: %d: Number of font variants. */
              (0, import_i18n170._n)(
                "%d variant",
                "%d variants",
                variantsCount
              ),
              variantsCount
            ) }) }),
            /* @__PURE__ */ (0, import_jsx_runtime415.jsx)(import_components104.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime415.jsx)(icon_default, { icon: (0, import_i18n170.isRTL)() ? chevron_left_default : chevron_right_default }) })
          ] })
        ] })
      }
    );
  }
  var font_card_default = FontCard;

  // packages/global-styles-ui/build-module/font-library/library-font-variant.mjs
  var import_element261 = __toESM(require_element(), 1);
  var import_components105 = __toESM(require_components(), 1);
  var import_jsx_runtime416 = __toESM(require_jsx_runtime(), 1);
  function LibraryFontVariant({
    face,
    font: font2
  }) {
    const { isFontActivated, toggleActivateFont } = (0, import_element261.useContext)(FontLibraryContext);
    const isInstalled = (font2?.fontFace?.length ?? 0) > 0 ? isFontActivated(
      font2.slug,
      face.fontStyle,
      face.fontWeight,
      font2.source
    ) : isFontActivated(font2.slug, void 0, void 0, font2.source);
    const handleToggleActivation = () => {
      if ((font2?.fontFace?.length ?? 0) > 0) {
        toggleActivateFont(font2, face);
        return;
      }
      toggleActivateFont(font2);
    };
    const displayName = font2.name + " " + getFontFaceVariantName(face);
    const checkboxId = (0, import_element261.useId)();
    return /* @__PURE__ */ (0, import_jsx_runtime416.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime416.jsxs)(import_components105.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [
      /* @__PURE__ */ (0, import_jsx_runtime416.jsx)(
        import_components105.CheckboxControl,
        {
          checked: isInstalled,
          onChange: handleToggleActivation,
          id: checkboxId
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime416.jsx)("label", { htmlFor: checkboxId, children: /* @__PURE__ */ (0, import_jsx_runtime416.jsx)(
        font_demo_default,
        {
          font: face,
          text: displayName,
          onClick: handleToggleActivation
        }
      ) })
    ] }) });
  }
  var library_font_variant_default = LibraryFontVariant;

  // packages/global-styles-ui/build-module/font-library/utils/sort-font-faces.mjs
  function getNumericFontWeight(value) {
    switch (value) {
      case "normal":
        return 400;
      case "bold":
        return 700;
      case "bolder":
        return 500;
      case "lighter":
        return 300;
      default:
        return parseInt(value, 10);
    }
  }
  function sortFontFaces(faces) {
    return faces.sort((a2, b2) => {
      if (a2.fontStyle === "normal" && b2.fontStyle !== "normal") {
        return -1;
      }
      if (b2.fontStyle === "normal" && a2.fontStyle !== "normal") {
        return 1;
      }
      if (a2.fontStyle === b2.fontStyle) {
        return getNumericFontWeight(a2.fontWeight?.toString() ?? "normal") - getNumericFontWeight(b2.fontWeight?.toString() ?? "normal");
      }
      if (!a2.fontStyle || !b2.fontStyle) {
        return !a2.fontStyle ? 1 : -1;
      }
      return a2.fontStyle.localeCompare(b2.fontStyle);
    });
  }

  // packages/global-styles-ui/build-module/font-library/installed-fonts.mjs
  var import_jsx_runtime417 = __toESM(require_jsx_runtime(), 1);
  function getFontFamiliesKey(fontFamilies) {
    if (!fontFamilies) {
      return "";
    }
    const normalized = {};
    for (const source of Object.keys(fontFamilies).sort()) {
      normalized[source] = (fontFamilies[source] ?? []).map((family) => ({
        slug: family.slug,
        fontFace: (family.fontFace ?? []).map(
          (face) => `${face.fontStyle}-${face.fontWeight}`
        ).sort()
      })).sort((a2, b2) => a2.slug.localeCompare(b2.slug));
    }
    return JSON.stringify(normalized);
  }
  function InstalledFonts() {
    const {
      baseCustomFonts,
      libraryFontSelected,
      handleSetLibraryFontSelected,
      uninstallFontFamily,
      isResolvingLibrary,
      isInstalling,
      saveFontFamilies,
      getFontFacesActivated
    } = (0, import_element262.useContext)(FontLibraryContext);
    const [fontFamilies, setFontFamilies] = useSetting("typography.fontFamilies");
    const [lastSelectedFontSlug, setLastSelectedFontSlug] = (0, import_element262.useState)(void 0);
    const [isConfirmDeleteOpen, setIsConfirmDeleteOpen] = (0, import_element262.useState)(false);
    const [notice, setNotice] = (0, import_element262.useState)(null);
    const [baseFontFamilies] = useSetting("typography.fontFamilies", void 0, "base");
    const globalStylesId = (0, import_data55.useSelect)((select9) => {
      const { __experimentalGetCurrentGlobalStylesId } = select9(import_core_data43.store);
      return __experimentalGetCurrentGlobalStylesId();
    }, []);
    const globalStyles = (0, import_core_data43.useEntityRecord)(
      "root",
      "globalStyles",
      globalStylesId ?? 0,
      { enabled: globalStylesId !== void 0 }
    );
    const editedFontFamilies = globalStyles?.edits?.settings?.typography?.fontFamilies;
    const savedFontFamilies = globalStyles?.record?.settings?.typography?.fontFamilies;
    const fontFamiliesHasChanges = (0, import_element262.useMemo)(() => {
      if (editedFontFamilies === void 0) {
        return false;
      }
      return getFontFamiliesKey(editedFontFamilies) !== getFontFamiliesKey(savedFontFamilies);
    }, [editedFontFamilies, savedFontFamilies]);
    const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map((f2) => setUIValuesNeeded(f2, { source: "theme" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : [];
    const themeFontsSlugs = new Set(themeFonts.map((f2) => f2.slug));
    const baseThemeFonts = baseFontFamilies?.theme ? themeFonts.concat(
      baseFontFamilies.theme.filter((f2) => !themeFontsSlugs.has(f2.slug)).map((f2) => setUIValuesNeeded(f2, { source: "theme" })).sort((a2, b2) => a2.name.localeCompare(b2.name))
    ) : [];
    const customFontFamilyId = libraryFontSelected?.source === "custom" && libraryFontSelected?.id;
    const canUserDelete = (0, import_data55.useSelect)(
      (select9) => {
        const { canUser } = select9(import_core_data43.store);
        return customFontFamilyId && canUser("delete", {
          kind: "postType",
          name: "wp_font_family",
          id: customFontFamilyId
        });
      },
      [customFontFamilyId]
    );
    const shouldDisplayDeleteButton = !!libraryFontSelected && libraryFontSelected?.source !== "theme" && canUserDelete;
    const handleUninstallClick = () => {
      setIsConfirmDeleteOpen(true);
    };
    const handleUpdate = async () => {
      setNotice(null);
      try {
        await saveFontFamilies(fontFamilies);
        setNotice({
          type: "success",
          message: (0, import_i18n171.__)("Font family updated successfully.")
        });
      } catch (error2) {
        setNotice({
          type: "error",
          message: (0, import_i18n171.sprintf)(
            /* translators: %s: error message */
            (0, import_i18n171.__)("There was an error updating the font family. %s"),
            error2.message
          )
        });
      }
    };
    const getFontFacesToDisplay = (font2) => {
      if (!font2) {
        return [];
      }
      if (!font2.fontFace || !font2.fontFace.length) {
        return [
          {
            fontFamily: font2.fontFamily,
            fontStyle: "normal",
            fontWeight: "400"
          }
        ];
      }
      return sortFontFaces(font2.fontFace);
    };
    const getFontCardVariantsText = (font2) => {
      const variantsInstalled = font2?.fontFace && (font2?.fontFace?.length ?? 0) > 0 ? font2.fontFace.length : 1;
      const variantsActive = getFontFacesActivated(
        font2.slug,
        font2.source
      ).length;
      return (0, import_i18n171.sprintf)(
        /* translators: 1: Active font variants, 2: Total font variants. */
        (0, import_i18n171.__)("%1$d of %2$d active"),
        variantsActive,
        variantsInstalled
      );
    };
    (0, import_element262.useEffect)(() => {
      handleSetLibraryFontSelected(libraryFontSelected);
    }, []);
    const activeFontsCount = libraryFontSelected ? getFontFacesActivated(
      libraryFontSelected.slug,
      libraryFontSelected.source
    ).length : 0;
    const selectedFontsCount = libraryFontSelected?.fontFace?.length ?? (libraryFontSelected?.fontFamily ? 1 : 0);
    const isIndeterminate = activeFontsCount > 0 && activeFontsCount !== selectedFontsCount;
    const isSelectAllChecked = activeFontsCount === selectedFontsCount;
    const toggleSelectAll = () => {
      if (!libraryFontSelected || !libraryFontSelected?.source) {
        return;
      }
      const initialFonts = fontFamilies?.[libraryFontSelected.source]?.filter(
        (f2) => f2.slug !== libraryFontSelected.slug
      ) ?? [];
      const newFonts = isSelectAllChecked ? initialFonts : [...initialFonts, libraryFontSelected];
      setFontFamilies({
        ...fontFamilies,
        [libraryFontSelected.source]: newFonts
      });
      if (libraryFontSelected.fontFace) {
        libraryFontSelected.fontFace.forEach((face) => {
          if (isSelectAllChecked) {
            unloadFontFaceInBrowser(face, "all");
          } else {
            const displaySrc = getDisplaySrcFromFontFace(
              face?.src ?? ""
            );
            if (displaySrc) {
              loadFontFaceInBrowser(face, displaySrc, "all");
            }
          }
        });
      }
    };
    const hasFonts = baseThemeFonts.length > 0 || baseCustomFonts.length > 0;
    return /* @__PURE__ */ (0, import_jsx_runtime417.jsxs)("div", { className: "font-library__tabpanel-layout", children: [
      isResolvingLibrary && /* @__PURE__ */ (0, import_jsx_runtime417.jsx)("div", { className: "font-library__loading", children: /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(import_components106.ProgressBar, {}) }),
      !isResolvingLibrary && /* @__PURE__ */ (0, import_jsx_runtime417.jsxs)(import_jsx_runtime417.Fragment, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime417.jsxs)(
          import_components106.Navigator,
          {
            initialPath: libraryFontSelected ? "/fontFamily" : "/",
            children: [
              /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(import_components106.Navigator.Screen, { path: "/", children: /* @__PURE__ */ (0, import_jsx_runtime417.jsxs)(import_components106.__experimentalVStack, { spacing: "8", children: [
                notice && /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                  import_components106.Notice,
                  {
                    status: notice.type,
                    onRemove: () => setNotice(null),
                    children: notice.message
                  }
                ),
                !hasFonts && /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(import_components106.__experimentalText, { as: "p", children: (0, import_i18n171.__)("No fonts installed.") }),
                baseThemeFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime417.jsxs)(import_components106.__experimentalVStack, { children: [
                  /* @__PURE__ */ (0, import_jsx_runtime417.jsx)("h2", {
                    className: "font-library__fonts-title",
                    /* translators: Heading for a list of fonts provided by the theme. */
                    children: (0, import_i18n171._x)("Theme", "font source")
                  }),
                  /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                    "ul",
                    {
                      role: "list",
                      className: "font-library__fonts-list",
                      children: baseThemeFonts.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                        "li",
                        {
                          className: "font-library__fonts-list-item",
                          children: /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                            font_card_default,
                            {
                              font: font2,
                              navigatorPath: "/fontFamily",
                              variantsText: getFontCardVariantsText(
                                font2
                              ),
                              shouldFocus: font2.slug === lastSelectedFontSlug,
                              onClick: () => {
                                setNotice(null);
                                handleSetLibraryFontSelected(
                                  font2
                                );
                              }
                            }
                          )
                        },
                        font2.slug
                      ))
                    }
                  )
                ] }),
                baseCustomFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime417.jsxs)(import_components106.__experimentalVStack, { children: [
                  /* @__PURE__ */ (0, import_jsx_runtime417.jsx)("h2", {
                    className: "font-library__fonts-title",
                    /* translators: Heading for a list of fonts installed by the user. */
                    children: (0, import_i18n171._x)("Custom", "font source")
                  }),
                  /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                    "ul",
                    {
                      role: "list",
                      className: "font-library__fonts-list",
                      children: baseCustomFonts.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                        "li",
                        {
                          className: "font-library__fonts-list-item",
                          children: /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                            font_card_default,
                            {
                              font: font2,
                              navigatorPath: "/fontFamily",
                              variantsText: getFontCardVariantsText(
                                font2
                              ),
                              shouldFocus: font2.slug === lastSelectedFontSlug,
                              onClick: () => {
                                setNotice(null);
                                handleSetLibraryFontSelected(
                                  font2
                                );
                              }
                            }
                          )
                        },
                        font2.slug
                      ))
                    }
                  )
                ] })
              ] }) }),
              /* @__PURE__ */ (0, import_jsx_runtime417.jsxs)(import_components106.Navigator.Screen, { path: "/fontFamily", children: [
                libraryFontSelected && /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                  ConfirmDeleteDialog,
                  {
                    font: libraryFontSelected,
                    isOpen: isConfirmDeleteOpen,
                    setIsOpen: setIsConfirmDeleteOpen,
                    setNotice,
                    uninstallFontFamily,
                    handleSetLibraryFontSelected
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime417.jsxs)(import_components106.Flex, { justify: "flex-start", children: [
                  /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                    import_components106.Navigator.BackButton,
                    {
                      icon: (0, import_i18n171.isRTL)() ? chevron_right_default : chevron_left_default,
                      size: "small",
                      onClick: () => {
                        setLastSelectedFontSlug(
                          libraryFontSelected?.slug
                        );
                        handleSetLibraryFontSelected(
                          void 0
                        );
                        setNotice(null);
                      },
                      label: (0, import_i18n171.__)("Back")
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                    import_components106.__experimentalHeading,
                    {
                      level: 2,
                      size: 13,
                      className: "global-styles-ui-header",
                      children: libraryFontSelected?.name
                    }
                  )
                ] }),
                notice && /* @__PURE__ */ (0, import_jsx_runtime417.jsxs)(import_jsx_runtime417.Fragment, { children: [
                  /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(import_components106.__experimentalSpacer, { margin: 1 }),
                  /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                    import_components106.Notice,
                    {
                      status: notice.type,
                      onRemove: () => setNotice(null),
                      children: notice.message
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(import_components106.__experimentalSpacer, { margin: 1 })
                ] }),
                /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(import_components106.__experimentalSpacer, { margin: 4 }),
                /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(import_components106.__experimentalText, { children: (0, import_i18n171.__)(
                  "Choose font variants. Keep in mind that too many variants could make your site slower."
                ) }),
                /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(import_components106.__experimentalSpacer, { margin: 4 }),
                /* @__PURE__ */ (0, import_jsx_runtime417.jsxs)(import_components106.__experimentalVStack, { spacing: 0, children: [
                  /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                    import_components106.CheckboxControl,
                    {
                      className: "font-library__select-all",
                      label: (0, import_i18n171.__)("Select all"),
                      checked: isSelectAllChecked,
                      onChange: toggleSelectAll,
                      indeterminate: isIndeterminate
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(import_components106.__experimentalSpacer, { margin: 8 }),
                  /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                    "ul",
                    {
                      role: "list",
                      className: "font-library__fonts-list",
                      children: libraryFontSelected && getFontFacesToDisplay(
                        libraryFontSelected
                      ).map((face, i2) => /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                        "li",
                        {
                          className: "font-library__fonts-list-item",
                          children: /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
                            library_font_variant_default,
                            {
                              font: libraryFontSelected,
                              face
                            },
                            `face${i2}`
                          )
                        },
                        `face${i2}`
                      ))
                    }
                  )
                ] })
              ] })
            ]
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime417.jsxs)(import_components106.__experimentalHStack, { justify: "flex-end", className: "font-library__footer", children: [
          isInstalling && /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(import_components106.ProgressBar, {}),
          shouldDisplayDeleteButton && /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
            import_components106.Button,
            {
              __next40pxDefaultSize: true,
              isDestructive: true,
              variant: "tertiary",
              onClick: handleUninstallClick,
              children: (0, import_i18n171.__)("Delete")
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
            import_components106.Button,
            {
              __next40pxDefaultSize: true,
              variant: "primary",
              onClick: handleUpdate,
              disabled: !fontFamiliesHasChanges,
              accessibleWhenDisabled: true,
              children: (0, import_i18n171.__)("Update")
            }
          )
        ] })
      ] })
    ] });
  }
  function ConfirmDeleteDialog({
    font: font2,
    isOpen: isOpen2,
    setIsOpen,
    setNotice,
    uninstallFontFamily,
    handleSetLibraryFontSelected
  }) {
    const navigator2 = (0, import_components106.useNavigator)();
    const handleConfirmUninstall = async () => {
      setNotice(null);
      setIsOpen(false);
      try {
        await uninstallFontFamily(font2);
        navigator2.goBack();
        handleSetLibraryFontSelected(void 0);
        setNotice({
          type: "success",
          message: (0, import_i18n171.__)("Font family uninstalled successfully.")
        });
      } catch (error2) {
        setNotice({
          type: "error",
          message: (0, import_i18n171.__)("There was an error uninstalling the font family.") + error2.message
        });
      }
    };
    const handleCancelUninstall = () => {
      setIsOpen(false);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime417.jsx)(
      import_components106.__experimentalConfirmDialog,
      {
        isOpen: isOpen2,
        cancelButtonText: (0, import_i18n171.__)("Cancel"),
        confirmButtonText: (0, import_i18n171.__)("Delete"),
        onCancel: handleCancelUninstall,
        onConfirm: handleConfirmUninstall,
        size: "medium",
        children: font2 && (0, import_i18n171.sprintf)(
          /* translators: %s: Name of the font. */
          (0, import_i18n171.__)(
            'Are you sure you want to delete "%s" font and all its variants and assets?'
          ),
          font2.name
        )
      }
    );
  }
  var installed_fonts_default = InstalledFonts;

  // packages/global-styles-ui/build-module/font-library/font-collection.mjs
  var import_element264 = __toESM(require_element(), 1);
  var import_components109 = __toESM(require_components(), 1);
  var import_compose41 = __toESM(require_compose(), 1);
  var import_i18n173 = __toESM(require_i18n(), 1);
  var import_core_data44 = __toESM(require_core_data(), 1);

  // packages/global-styles-ui/build-module/font-library/utils/filter-fonts.mjs
  function filterFonts(fonts, filters) {
    const { category, search } = filters;
    let filteredFonts = fonts || [];
    if (category && category !== "all") {
      filteredFonts = filteredFonts.filter(
        (font2) => font2.categories && font2.categories.indexOf(category) !== -1
      );
    }
    if (search) {
      filteredFonts = filteredFonts.filter(
        (font2) => font2.font_family_settings && font2.font_family_settings.name.toLowerCase().includes(search.toLowerCase())
      );
    }
    return filteredFonts;
  }

  // packages/global-styles-ui/build-module/font-library/utils/fonts-outline.mjs
  function getFontsOutline(fonts) {
    return fonts.reduce(
      (acc, font2) => ({
        ...acc,
        [font2.slug]: (font2?.fontFace || []).reduce(
          (faces, face) => ({
            ...faces,
            [`${face.fontStyle}-${face.fontWeight}`]: true
          }),
          {}
        )
      }),
      {}
    );
  }
  function isFontFontFaceInOutline(slug, face, outline) {
    if (!face) {
      return !!outline[slug];
    }
    return !!outline[slug]?.[`${face.fontStyle}-${face.fontWeight}`];
  }

  // packages/global-styles-ui/build-module/font-library/google-fonts-confirm-dialog.mjs
  var import_i18n172 = __toESM(require_i18n(), 1);
  var import_components107 = __toESM(require_components(), 1);
  var import_jsx_runtime418 = __toESM(require_jsx_runtime(), 1);
  function GoogleFontsConfirmDialog() {
    const handleConfirm = () => {
      window.localStorage.setItem(
        "wp-font-library-google-fonts-permission",
        "true"
      );
      window.dispatchEvent(new Event("storage"));
    };
    return /* @__PURE__ */ (0, import_jsx_runtime418.jsx)("div", { className: "font-library__google-fonts-confirm", children: /* @__PURE__ */ (0, import_jsx_runtime418.jsx)(import_components107.Card, { children: /* @__PURE__ */ (0, import_jsx_runtime418.jsxs)(import_components107.CardBody, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime418.jsx)(import_components107.__experimentalHeading, { level: 2, children: (0, import_i18n172.__)("Connect to Google Fonts") }),
      /* @__PURE__ */ (0, import_jsx_runtime418.jsx)(import_components107.__experimentalSpacer, { margin: 6 }),
      /* @__PURE__ */ (0, import_jsx_runtime418.jsx)(import_components107.__experimentalText, { as: "p", children: (0, import_i18n172.__)(
        "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."
      ) }),
      /* @__PURE__ */ (0, import_jsx_runtime418.jsx)(import_components107.__experimentalSpacer, { margin: 3 }),
      /* @__PURE__ */ (0, import_jsx_runtime418.jsx)(import_components107.__experimentalText, { as: "p", children: (0, import_i18n172.__)(
        "You can alternatively upload files directly on the Upload tab."
      ) }),
      /* @__PURE__ */ (0, import_jsx_runtime418.jsx)(import_components107.__experimentalSpacer, { margin: 6 }),
      /* @__PURE__ */ (0, import_jsx_runtime418.jsx)(
        import_components107.Button,
        {
          __next40pxDefaultSize: true,
          variant: "primary",
          onClick: handleConfirm,
          children: (0, import_i18n172.__)("Allow access to Google Fonts")
        }
      )
    ] }) }) });
  }
  var google_fonts_confirm_dialog_default = GoogleFontsConfirmDialog;

  // packages/global-styles-ui/build-module/font-library/collection-font-variant.mjs
  var import_element263 = __toESM(require_element(), 1);
  var import_components108 = __toESM(require_components(), 1);
  var import_jsx_runtime419 = __toESM(require_jsx_runtime(), 1);
  function CollectionFontVariant({
    face,
    font: font2,
    handleToggleVariant,
    selected
  }) {
    const handleToggleActivation = () => {
      if (font2?.fontFace) {
        handleToggleVariant(font2, face);
        return;
      }
      handleToggleVariant(font2);
    };
    const displayName = font2.name + " " + getFontFaceVariantName(face);
    const checkboxId = (0, import_element263.useId)();
    return /* @__PURE__ */ (0, import_jsx_runtime419.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime419.jsxs)(import_components108.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [
      /* @__PURE__ */ (0, import_jsx_runtime419.jsx)(
        import_components108.CheckboxControl,
        {
          checked: selected,
          onChange: handleToggleActivation,
          id: checkboxId
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime419.jsx)("label", { htmlFor: checkboxId, children: /* @__PURE__ */ (0, import_jsx_runtime419.jsx)(
        font_demo_default,
        {
          font: face,
          text: displayName,
          onClick: handleToggleActivation
        }
      ) })
    ] }) });
  }
  var collection_font_variant_default = CollectionFontVariant;

  // packages/global-styles-ui/build-module/font-library/font-collection.mjs
  var import_jsx_runtime420 = __toESM(require_jsx_runtime(), 1);
  var DEFAULT_CATEGORY = {
    slug: "all",
    name: (0, import_i18n173._x)("All", "font categories")
  };
  var LOCAL_STORAGE_ITEM = "wp-font-library-google-fonts-permission";
  var MIN_WINDOW_HEIGHT = 500;
  function FontCollection({ slug }) {
    const requiresPermission = slug === "google-fonts";
    const getGoogleFontsPermissionFromStorage = () => {
      return window.localStorage.getItem(LOCAL_STORAGE_ITEM) === "true";
    };
    const [selectedFont, setSelectedFont] = (0, import_element264.useState)(
      null
    );
    const [lastSelectedFontSlug, setLastSelectedFontSlug] = (0, import_element264.useState)(void 0);
    const [notice, setNotice] = (0, import_element264.useState)(null);
    const [fontsToInstall, setFontsToInstall] = (0, import_element264.useState)(
      []
    );
    const [page, setPage] = (0, import_element264.useState)(1);
    const [filters, setFilters] = (0, import_element264.useState)({});
    const [renderConfirmDialog, setRenderConfirmDialog] = (0, import_element264.useState)(
      requiresPermission && !getGoogleFontsPermissionFromStorage()
    );
    const { installFonts, isInstalling } = (0, import_element264.useContext)(FontLibraryContext);
    const { record: selectedCollection, isResolving: isLoading } = (0, import_core_data44.useEntityRecord)("root", "fontCollection", slug);
    (0, import_element264.useEffect)(() => {
      const handleStorage = () => {
        setRenderConfirmDialog(
          requiresPermission && !getGoogleFontsPermissionFromStorage()
        );
      };
      handleStorage();
      window.addEventListener("storage", handleStorage);
      return () => window.removeEventListener("storage", handleStorage);
    }, [slug, requiresPermission]);
    const revokeAccess = () => {
      window.localStorage.setItem(LOCAL_STORAGE_ITEM, "false");
      window.dispatchEvent(new Event("storage"));
    };
    (0, import_element264.useEffect)(() => {
      setSelectedFont(null);
    }, [slug]);
    (0, import_element264.useEffect)(() => {
      setFontsToInstall([]);
    }, [selectedFont]);
    const collectionFonts = (0, import_element264.useMemo)(
      () => selectedCollection?.font_families ?? [],
      [selectedCollection]
    );
    const collectionCategories = selectedCollection?.categories ?? [];
    const categories = [DEFAULT_CATEGORY, ...collectionCategories];
    const fonts = (0, import_element264.useMemo)(
      () => filterFonts(collectionFonts, filters),
      [collectionFonts, filters]
    );
    const windowHeight = Math.max(window.innerHeight, MIN_WINDOW_HEIGHT);
    const pageSize = Math.floor((windowHeight - 417) / 61);
    const totalPages = Math.ceil(fonts.length / pageSize);
    const itemsStart = (page - 1) * pageSize;
    const itemsLimit = page * pageSize;
    const items = fonts.slice(itemsStart, itemsLimit);
    const handleCategoryFilter = (category) => {
      setFilters({ ...filters, category });
      setPage(1);
    };
    const handleUpdateSearchInput = (value) => {
      setFilters({ ...filters, search: value });
      setPage(1);
    };
    const debouncedUpdateSearchInput = (0, import_compose41.debounce)(
      // @ts-expect-error `debounce` expects a `(...args: unknown[]) => unknown` callback.
      handleUpdateSearchInput,
      300
    );
    const handleToggleVariant = (font2, face) => {
      const newFontsToInstall = toggleFont(font2, face, fontsToInstall);
      setFontsToInstall(newFontsToInstall);
    };
    const fontToInstallOutline = getFontsOutline(fontsToInstall);
    const resetFontsToInstall = () => {
      setFontsToInstall([]);
    };
    const selectFontCount = fontsToInstall.length > 0 ? fontsToInstall[0]?.fontFace?.length ?? 0 : 0;
    const isIndeterminate = selectFontCount > 0 && selectFontCount !== selectedFont?.fontFace?.length;
    const isSelectAllChecked = selectFontCount === selectedFont?.fontFace?.length;
    const toggleSelectAll = () => {
      const newFonts = [];
      if (!isSelectAllChecked && selectedFont) {
        newFonts.push(selectedFont);
      }
      setFontsToInstall(newFonts);
    };
    const handleInstall = async () => {
      setNotice(null);
      const fontFamily = fontsToInstall[0];
      try {
        if (fontFamily?.fontFace) {
          await Promise.all(
            fontFamily.fontFace.map(async (fontFace) => {
              if (fontFace.src) {
                fontFace.file = await downloadFontFaceAssets(
                  fontFace.src
                );
              }
            })
          );
        }
      } catch {
        setNotice({
          type: "error",
          message: (0, import_i18n173.__)(
            "Error installing the fonts, could not be downloaded."
          )
        });
        return;
      }
      try {
        await installFonts([fontFamily]);
        setNotice({
          type: "success",
          message: (0, import_i18n173.__)("Fonts were installed successfully.")
        });
      } catch (error2) {
        setNotice({
          type: "error",
          message: error2.message
        });
      }
      resetFontsToInstall();
    };
    const getSortedFontFaces = (fontFamily) => {
      if (!fontFamily) {
        return [];
      }
      if (!fontFamily.fontFace || !fontFamily.fontFace.length) {
        return [
          {
            fontFamily: fontFamily.fontFamily,
            fontStyle: "normal",
            fontWeight: "400"
          }
        ];
      }
      return sortFontFaces(fontFamily.fontFace);
    };
    if (renderConfirmDialog) {
      return /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(google_fonts_confirm_dialog_default, {});
    }
    const showActions = slug === "google-fonts" && !renderConfirmDialog && !selectedFont;
    return /* @__PURE__ */ (0, import_jsx_runtime420.jsxs)("div", { className: "font-library__tabpanel-layout", children: [
      isLoading && /* @__PURE__ */ (0, import_jsx_runtime420.jsx)("div", { className: "font-library__loading", children: /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(import_components109.ProgressBar, {}) }),
      !isLoading && selectedCollection && /* @__PURE__ */ (0, import_jsx_runtime420.jsxs)(import_jsx_runtime420.Fragment, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime420.jsxs)(
          import_components109.Navigator,
          {
            initialPath: "/",
            className: "font-library__tabpanel-layout",
            children: [
              /* @__PURE__ */ (0, import_jsx_runtime420.jsxs)(import_components109.Navigator.Screen, { path: "/", children: [
                /* @__PURE__ */ (0, import_jsx_runtime420.jsxs)(import_components109.__experimentalHStack, { justify: "space-between", children: [
                  /* @__PURE__ */ (0, import_jsx_runtime420.jsxs)(import_components109.__experimentalVStack, { children: [
                    /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(import_components109.__experimentalHeading, { level: 2, size: 13, children: selectedCollection.name }),
                    /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(import_components109.__experimentalText, { children: selectedCollection.description })
                  ] }),
                  showActions && /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                    import_components109.DropdownMenu,
                    {
                      icon: more_vertical_default,
                      label: (0, import_i18n173.__)("Actions"),
                      popoverProps: {
                        position: "bottom left"
                      },
                      controls: [
                        {
                          title: (0, import_i18n173.__)(
                            "Revoke access to Google Fonts"
                          ),
                          onClick: revokeAccess
                        }
                      ]
                    }
                  )
                ] }),
                /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(import_components109.__experimentalSpacer, { margin: 4 }),
                /* @__PURE__ */ (0, import_jsx_runtime420.jsxs)(import_components109.__experimentalHStack, { spacing: 4, justify: "space-between", children: [
                  /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                    import_components109.SearchControl,
                    {
                      className: "font-library__search",
                      value: filters.search,
                      placeholder: (0, import_i18n173.__)("Font name\u2026"),
                      label: (0, import_i18n173.__)("Search"),
                      onChange: debouncedUpdateSearchInput,
                      hideLabelFromVision: false
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                    import_components109.SelectControl,
                    {
                      label: (0, import_i18n173.__)("Category"),
                      value: filters.category,
                      onChange: handleCategoryFilter,
                      children: categories && categories.map((category) => /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                        "option",
                        {
                          value: category.slug,
                          children: category.name
                        },
                        category.slug
                      ))
                    }
                  )
                ] }),
                /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(import_components109.__experimentalSpacer, { margin: 4 }),
                !!selectedCollection?.font_families?.length && !fonts.length && /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(import_components109.__experimentalText, { children: (0, import_i18n173.__)(
                  "No fonts found. Try with a different search term."
                ) }),
                /* @__PURE__ */ (0, import_jsx_runtime420.jsx)("div", { className: "font-library__fonts-grid__main", children: /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                  "ul",
                  {
                    role: "list",
                    className: "font-library__fonts-list",
                    children: items.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                      "li",
                      {
                        className: "font-library__fonts-list-item",
                        children: /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                          font_card_default,
                          {
                            font: font2.font_family_settings,
                            navigatorPath: "/fontFamily",
                            shouldFocus: font2.font_family_settings.slug === lastSelectedFontSlug,
                            onClick: () => {
                              setSelectedFont(
                                font2.font_family_settings
                              );
                            }
                          }
                        )
                      },
                      font2.font_family_settings.slug
                    ))
                  }
                ) })
              ] }),
              /* @__PURE__ */ (0, import_jsx_runtime420.jsxs)(import_components109.Navigator.Screen, { path: "/fontFamily", children: [
                /* @__PURE__ */ (0, import_jsx_runtime420.jsxs)(import_components109.Flex, { justify: "flex-start", children: [
                  /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                    import_components109.Navigator.BackButton,
                    {
                      icon: (0, import_i18n173.isRTL)() ? chevron_right_default : chevron_left_default,
                      size: "small",
                      onClick: () => {
                        setLastSelectedFontSlug(
                          selectedFont?.slug
                        );
                        setSelectedFont(null);
                        setNotice(null);
                      },
                      label: (0, import_i18n173.__)("Back")
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                    import_components109.__experimentalHeading,
                    {
                      level: 2,
                      size: 13,
                      className: "global-styles-ui-header",
                      children: selectedFont?.name
                    }
                  )
                ] }),
                notice && /* @__PURE__ */ (0, import_jsx_runtime420.jsxs)(import_jsx_runtime420.Fragment, { children: [
                  /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(import_components109.__experimentalSpacer, { margin: 1 }),
                  /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                    import_components109.Notice,
                    {
                      status: notice.type,
                      onRemove: () => setNotice(null),
                      children: notice.message
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(import_components109.__experimentalSpacer, { margin: 1 })
                ] }),
                /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(import_components109.__experimentalSpacer, { margin: 4 }),
                /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(import_components109.__experimentalText, { children: (0, import_i18n173.__)("Select font variants to install.") }),
                /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(import_components109.__experimentalSpacer, { margin: 4 }),
                /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                  import_components109.CheckboxControl,
                  {
                    className: "font-library__select-all",
                    label: (0, import_i18n173.__)("Select all"),
                    checked: isSelectAllChecked,
                    onChange: toggleSelectAll,
                    indeterminate: isIndeterminate
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(import_components109.__experimentalVStack, { spacing: 0, children: /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                  "ul",
                  {
                    role: "list",
                    className: "font-library__fonts-list",
                    children: selectedFont && getSortedFontFaces(selectedFont).map(
                      (face, i2) => /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                        "li",
                        {
                          className: "font-library__fonts-list-item",
                          children: /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                            collection_font_variant_default,
                            {
                              font: selectedFont,
                              face,
                              handleToggleVariant,
                              selected: isFontFontFaceInOutline(
                                selectedFont.slug,
                                selectedFont.fontFace ? face : null,
                                // If the font has no fontFace, we want to check if the font is in the outline
                                fontToInstallOutline
                              )
                            }
                          )
                        },
                        `face${i2}`
                      )
                    )
                  }
                ) }),
                /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(import_components109.__experimentalSpacer, { margin: 16 })
              ] })
            ]
          }
        ),
        selectedFont && /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
          import_components109.Flex,
          {
            justify: "flex-end",
            className: "font-library__footer",
            children: /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
              import_components109.Button,
              {
                __next40pxDefaultSize: true,
                variant: "primary",
                onClick: handleInstall,
                isBusy: isInstalling,
                disabled: fontsToInstall.length === 0 || isInstalling,
                accessibleWhenDisabled: true,
                children: (0, import_i18n173.__)("Install")
              }
            )
          }
        ),
        !selectedFont && /* @__PURE__ */ (0, import_jsx_runtime420.jsxs)(
          import_components109.__experimentalHStack,
          {
            expanded: false,
            className: "font-library__footer",
            justify: "end",
            spacing: 6,
            children: [
              /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                import_components109.__experimentalHStack,
                {
                  justify: "flex-start",
                  expanded: false,
                  spacing: 1,
                  className: "font-library__page-selection",
                  children: (0, import_element264.createInterpolateElement)(
                    (0, import_i18n173.sprintf)(
                      // translators: 1: Current page number, 2: Total number of pages.
                      (0, import_i18n173._x)(
                        "<div>Page</div>%1$s<div>of %2$d</div>",
                        "paging"
                      ),
                      "<CurrentPage />",
                      totalPages
                    ),
                    {
                      div: /* @__PURE__ */ (0, import_jsx_runtime420.jsx)("div", { "aria-hidden": true }),
                      // @ts-expect-error — Tag injected via sprintf argument, not visible in format string.
                      CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                        import_components109.SelectControl,
                        {
                          "aria-label": (0, import_i18n173.__)(
                            "Current page"
                          ),
                          value: page.toString(),
                          options: [
                            ...Array(totalPages)
                          ].map((e2, i2) => {
                            return {
                              label: (i2 + 1).toString(),
                              value: (i2 + 1).toString()
                            };
                          }),
                          onChange: (newPage) => setPage(
                            parseInt(newPage)
                          ),
                          size: "small",
                          variant: "minimal"
                        }
                      )
                    }
                  )
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime420.jsxs)(import_components109.__experimentalHStack, { expanded: false, spacing: 1, children: [
                /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                  import_components109.Button,
                  {
                    onClick: () => setPage(page - 1),
                    disabled: page === 1,
                    accessibleWhenDisabled: true,
                    label: (0, import_i18n173.__)("Previous page"),
                    icon: (0, import_i18n173.isRTL)() ? next_default : previous_default,
                    showTooltip: true,
                    size: "compact",
                    tooltipPosition: "top"
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime420.jsx)(
                  import_components109.Button,
                  {
                    onClick: () => setPage(page + 1),
                    disabled: page === totalPages,
                    accessibleWhenDisabled: true,
                    label: (0, import_i18n173.__)("Next page"),
                    icon: (0, import_i18n173.isRTL)() ? previous_default : next_default,
                    showTooltip: true,
                    size: "compact",
                    tooltipPosition: "top"
                  }
                )
              ] })
            ]
          }
        )
      ] })
    ] });
  }
  var font_collection_default = FontCollection;

  // packages/global-styles-ui/build-module/font-library/upload-fonts.mjs
  var import_i18n174 = __toESM(require_i18n(), 1);
  var import_components110 = __toESM(require_components(), 1);
  var import_element265 = __toESM(require_element(), 1);

  // packages/global-styles-ui/build-module/font-library/lib/unbrotli.mjs
  var __require2 = /* @__PURE__ */ ((x2) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x2, {
    get: (a2, b2) => (typeof __require !== "undefined" ? __require : a2)[b2]
  }) : x2)(function(x2) {
    if (typeof __require !== "undefined") return __require.apply(this, arguments);
    throw Error('Dynamic require of "' + x2 + '" is not supported');
  });
  var unbrotli_default = (function() {
    var define, module, exports;
    return (/* @__PURE__ */ (function() {
      function r4(e2, n2, t3) {
        function o3(i22, f2) {
          if (!n2[i22]) {
            if (!e2[i22]) {
              var c6 = "function" == typeof __require2 && __require2;
              if (!f2 && c6) return c6(i22, true);
              if (u2) return u2(i22, true);
              var a2 = new Error("Cannot find module '" + i22 + "'");
              throw a2.code = "MODULE_NOT_FOUND", a2;
            }
            var p4 = n2[i22] = { exports: {} };
            e2[i22][0].call(
              p4.exports,
              function(r22) {
                var n22 = e2[i22][1][r22];
                return o3(n22 || r22);
              },
              p4,
              p4.exports,
              r4,
              e2,
              n2,
              t3
            );
          }
          return n2[i22].exports;
        }
        for (var u2 = "function" == typeof __require2 && __require2, i2 = 0; i2 < t3.length; i2++)
          o3(t3[i2]);
        return o3;
      }
      return r4;
    })())(
      {
        1: [
          function(require2, module2, exports2) {
            var BROTLI_READ_SIZE = 4096;
            var BROTLI_IBUF_SIZE = 2 * BROTLI_READ_SIZE + 32;
            var BROTLI_IBUF_MASK = 2 * BROTLI_READ_SIZE - 1;
            var kBitMask = new Uint32Array([
              0,
              1,
              3,
              7,
              15,
              31,
              63,
              127,
              255,
              511,
              1023,
              2047,
              4095,
              8191,
              16383,
              32767,
              65535,
              131071,
              262143,
              524287,
              1048575,
              2097151,
              4194303,
              8388607,
              16777215
            ]);
            function BrotliBitReader(input) {
              this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE);
              this.input_ = input;
              this.reset();
            }
            BrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;
            BrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;
            BrotliBitReader.prototype.reset = function() {
              this.buf_ptr_ = 0;
              this.val_ = 0;
              this.pos_ = 0;
              this.bit_pos_ = 0;
              this.bit_end_pos_ = 0;
              this.eos_ = 0;
              this.readMoreInput();
              for (var i2 = 0; i2 < 4; i2++) {
                this.val_ |= this.buf_[this.pos_] << 8 * i2;
                ++this.pos_;
              }
              return this.bit_end_pos_ > 0;
            };
            BrotliBitReader.prototype.readMoreInput = function() {
              if (this.bit_end_pos_ > 256) {
                return;
              } else if (this.eos_) {
                if (this.bit_pos_ > this.bit_end_pos_)
                  throw new Error(
                    "Unexpected end of input " + this.bit_pos_ + " " + this.bit_end_pos_
                  );
              } else {
                var dst = this.buf_ptr_;
                var bytes_read = this.input_.read(
                  this.buf_,
                  dst,
                  BROTLI_READ_SIZE
                );
                if (bytes_read < 0) {
                  throw new Error("Unexpected end of input");
                }
                if (bytes_read < BROTLI_READ_SIZE) {
                  this.eos_ = 1;
                  for (var p4 = 0; p4 < 32; p4++)
                    this.buf_[dst + bytes_read + p4] = 0;
                }
                if (dst === 0) {
                  for (var p4 = 0; p4 < 32; p4++)
                    this.buf_[(BROTLI_READ_SIZE << 1) + p4] = this.buf_[p4];
                  this.buf_ptr_ = BROTLI_READ_SIZE;
                } else {
                  this.buf_ptr_ = 0;
                }
                this.bit_end_pos_ += bytes_read << 3;
              }
            };
            BrotliBitReader.prototype.fillBitWindow = function() {
              while (this.bit_pos_ >= 8) {
                this.val_ >>>= 8;
                this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24;
                ++this.pos_;
                this.bit_pos_ = this.bit_pos_ - 8 >>> 0;
                this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0;
              }
            };
            BrotliBitReader.prototype.readBits = function(n_bits) {
              if (32 - this.bit_pos_ < n_bits) {
                this.fillBitWindow();
              }
              var val = this.val_ >>> this.bit_pos_ & kBitMask[n_bits];
              this.bit_pos_ += n_bits;
              return val;
            };
            module2.exports = BrotliBitReader;
          },
          {}
        ],
        2: [
          function(require2, module2, exports2) {
            var CONTEXT_LSB6 = 0;
            var CONTEXT_MSB6 = 1;
            var CONTEXT_UTF8 = 2;
            var CONTEXT_SIGNED = 3;
            exports2.lookup = new Uint8Array([
              /* CONTEXT_UTF8, last byte. */
              /* ASCII range. */
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              4,
              4,
              0,
              0,
              4,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              8,
              12,
              16,
              12,
              12,
              20,
              12,
              16,
              24,
              28,
              12,
              12,
              32,
              12,
              36,
              12,
              44,
              44,
              44,
              44,
              44,
              44,
              44,
              44,
              44,
              44,
              32,
              32,
              24,
              40,
              28,
              12,
              12,
              48,
              52,
              52,
              52,
              48,
              52,
              52,
              52,
              48,
              52,
              52,
              52,
              52,
              52,
              48,
              52,
              52,
              52,
              52,
              52,
              48,
              52,
              52,
              52,
              52,
              52,
              24,
              12,
              28,
              12,
              12,
              12,
              56,
              60,
              60,
              60,
              56,
              60,
              60,
              60,
              56,
              60,
              60,
              60,
              60,
              60,
              56,
              60,
              60,
              60,
              60,
              60,
              56,
              60,
              60,
              60,
              60,
              60,
              24,
              12,
              28,
              12,
              0,
              /* UTF8 continuation byte range. */
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              0,
              1,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              2,
              3,
              /* ASCII range. */
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              1,
              1,
              1,
              1,
              1,
              1,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              1,
              1,
              1,
              1,
              0,
              /* UTF8 continuation byte range. */
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              0,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              1,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              2,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              3,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              4,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              5,
              6,
              6,
              6,
              6,
              6,
              6,
              6,
              6,
              6,
              6,
              6,
              6,
              6,
              6,
              6,
              7,
              /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */
              0,
              8,
              8,
              8,
              8,
              8,
              8,
              8,
              8,
              8,
              8,
              8,
              8,
              8,
              8,
              8,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              24,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              32,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              40,
              48,
              48,
              48,
              48,
              48,
              48,
              48,
              48,
              48,
              48,
              48,
              48,
              48,
              48,
              48,
              56,
              /* CONTEXT_LSB6, last byte. */
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              24,
              25,
              26,
              27,
              28,
              29,
              30,
              31,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39,
              40,
              41,
              42,
              43,
              44,
              45,
              46,
              47,
              48,
              49,
              50,
              51,
              52,
              53,
              54,
              55,
              56,
              57,
              58,
              59,
              60,
              61,
              62,
              63,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              24,
              25,
              26,
              27,
              28,
              29,
              30,
              31,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39,
              40,
              41,
              42,
              43,
              44,
              45,
              46,
              47,
              48,
              49,
              50,
              51,
              52,
              53,
              54,
              55,
              56,
              57,
              58,
              59,
              60,
              61,
              62,
              63,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              24,
              25,
              26,
              27,
              28,
              29,
              30,
              31,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39,
              40,
              41,
              42,
              43,
              44,
              45,
              46,
              47,
              48,
              49,
              50,
              51,
              52,
              53,
              54,
              55,
              56,
              57,
              58,
              59,
              60,
              61,
              62,
              63,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              24,
              25,
              26,
              27,
              28,
              29,
              30,
              31,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39,
              40,
              41,
              42,
              43,
              44,
              45,
              46,
              47,
              48,
              49,
              50,
              51,
              52,
              53,
              54,
              55,
              56,
              57,
              58,
              59,
              60,
              61,
              62,
              63,
              /* CONTEXT_MSB6, last byte. */
              0,
              0,
              0,
              0,
              1,
              1,
              1,
              1,
              2,
              2,
              2,
              2,
              3,
              3,
              3,
              3,
              4,
              4,
              4,
              4,
              5,
              5,
              5,
              5,
              6,
              6,
              6,
              6,
              7,
              7,
              7,
              7,
              8,
              8,
              8,
              8,
              9,
              9,
              9,
              9,
              10,
              10,
              10,
              10,
              11,
              11,
              11,
              11,
              12,
              12,
              12,
              12,
              13,
              13,
              13,
              13,
              14,
              14,
              14,
              14,
              15,
              15,
              15,
              15,
              16,
              16,
              16,
              16,
              17,
              17,
              17,
              17,
              18,
              18,
              18,
              18,
              19,
              19,
              19,
              19,
              20,
              20,
              20,
              20,
              21,
              21,
              21,
              21,
              22,
              22,
              22,
              22,
              23,
              23,
              23,
              23,
              24,
              24,
              24,
              24,
              25,
              25,
              25,
              25,
              26,
              26,
              26,
              26,
              27,
              27,
              27,
              27,
              28,
              28,
              28,
              28,
              29,
              29,
              29,
              29,
              30,
              30,
              30,
              30,
              31,
              31,
              31,
              31,
              32,
              32,
              32,
              32,
              33,
              33,
              33,
              33,
              34,
              34,
              34,
              34,
              35,
              35,
              35,
              35,
              36,
              36,
              36,
              36,
              37,
              37,
              37,
              37,
              38,
              38,
              38,
              38,
              39,
              39,
              39,
              39,
              40,
              40,
              40,
              40,
              41,
              41,
              41,
              41,
              42,
              42,
              42,
              42,
              43,
              43,
              43,
              43,
              44,
              44,
              44,
              44,
              45,
              45,
              45,
              45,
              46,
              46,
              46,
              46,
              47,
              47,
              47,
              47,
              48,
              48,
              48,
              48,
              49,
              49,
              49,
              49,
              50,
              50,
              50,
              50,
              51,
              51,
              51,
              51,
              52,
              52,
              52,
              52,
              53,
              53,
              53,
              53,
              54,
              54,
              54,
              54,
              55,
              55,
              55,
              55,
              56,
              56,
              56,
              56,
              57,
              57,
              57,
              57,
              58,
              58,
              58,
              58,
              59,
              59,
              59,
              59,
              60,
              60,
              60,
              60,
              61,
              61,
              61,
              61,
              62,
              62,
              62,
              62,
              63,
              63,
              63,
              63,
              /* CONTEXT_{M,L}SB6, second last byte, */
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ]);
            exports2.lookupOffsets = new Uint16Array([
              /* CONTEXT_LSB6 */
              1024,
              1536,
              1280,
              1536,
              0,
              256,
              768,
              512
            ]);
          },
          {}
        ],
        3: [
          function(require2, module2, exports2) {
            var BrotliInput = require2("./streams").BrotliInput;
            var BrotliOutput = require2("./streams").BrotliOutput;
            var BrotliBitReader = require2("./bit_reader");
            var BrotliDictionary = require2("./dictionary");
            var HuffmanCode = require2("./huffman").HuffmanCode;
            var BrotliBuildHuffmanTable = require2("./huffman").BrotliBuildHuffmanTable;
            var Context = require2("./context");
            var Prefix = require2("./prefix");
            var Transform = require2("./transform");
            var kDefaultCodeLength = 8;
            var kCodeLengthRepeatCode = 16;
            var kNumLiteralCodes = 256;
            var kNumInsertAndCopyCodes = 704;
            var kNumBlockLengthCodes = 26;
            var kLiteralContextBits = 6;
            var kDistanceContextBits = 2;
            var HUFFMAN_TABLE_BITS = 8;
            var HUFFMAN_TABLE_MASK = 255;
            var HUFFMAN_MAX_TABLE_SIZE = 1080;
            var CODE_LENGTH_CODES = 18;
            var kCodeLengthCodeOrder = new Uint8Array([
              1,
              2,
              3,
              4,
              0,
              5,
              17,
              6,
              16,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15
            ]);
            var NUM_DISTANCE_SHORT_CODES = 16;
            var kDistanceShortCodeIndexOffset = new Uint8Array([
              3,
              2,
              1,
              0,
              3,
              3,
              3,
              3,
              3,
              3,
              2,
              2,
              2,
              2,
              2,
              2
            ]);
            var kDistanceShortCodeValueOffset = new Int8Array([
              0,
              0,
              0,
              0,
              -1,
              1,
              -2,
              2,
              -3,
              3,
              -1,
              1,
              -2,
              2,
              -3,
              3
            ]);
            var kMaxHuffmanTableSize = new Uint16Array([
              256,
              402,
              436,
              468,
              500,
              534,
              566,
              598,
              630,
              662,
              694,
              726,
              758,
              790,
              822,
              854,
              886,
              920,
              952,
              984,
              1016,
              1048,
              1080
            ]);
            function DecodeWindowBits(br) {
              var n2;
              if (br.readBits(1) === 0) {
                return 16;
              }
              n2 = br.readBits(3);
              if (n2 > 0) {
                return 17 + n2;
              }
              n2 = br.readBits(3);
              if (n2 > 0) {
                return 8 + n2;
              }
              return 17;
            }
            function DecodeVarLenUint8(br) {
              if (br.readBits(1)) {
                var nbits = br.readBits(3);
                if (nbits === 0) {
                  return 1;
                } else {
                  return br.readBits(nbits) + (1 << nbits);
                }
              }
              return 0;
            }
            function MetaBlockLength() {
              this.meta_block_length = 0;
              this.input_end = 0;
              this.is_uncompressed = 0;
              this.is_metadata = false;
            }
            function DecodeMetaBlockLength(br) {
              var out = new MetaBlockLength();
              var size_nibbles;
              var size_bytes;
              var i2;
              out.input_end = br.readBits(1);
              if (out.input_end && br.readBits(1)) {
                return out;
              }
              size_nibbles = br.readBits(2) + 4;
              if (size_nibbles === 7) {
                out.is_metadata = true;
                if (br.readBits(1) !== 0)
                  throw new Error("Invalid reserved bit");
                size_bytes = br.readBits(2);
                if (size_bytes === 0) return out;
                for (i2 = 0; i2 < size_bytes; i2++) {
                  var next_byte = br.readBits(8);
                  if (i2 + 1 === size_bytes && size_bytes > 1 && next_byte === 0)
                    throw new Error("Invalid size byte");
                  out.meta_block_length |= next_byte << i2 * 8;
                }
              } else {
                for (i2 = 0; i2 < size_nibbles; ++i2) {
                  var next_nibble = br.readBits(4);
                  if (i2 + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)
                    throw new Error("Invalid size nibble");
                  out.meta_block_length |= next_nibble << i2 * 4;
                }
              }
              ++out.meta_block_length;
              if (!out.input_end && !out.is_metadata) {
                out.is_uncompressed = br.readBits(1);
              }
              return out;
            }
            function ReadSymbol(table, index3, br) {
              var start_index = index3;
              var nbits;
              br.fillBitWindow();
              index3 += br.val_ >>> br.bit_pos_ & HUFFMAN_TABLE_MASK;
              nbits = table[index3].bits - HUFFMAN_TABLE_BITS;
              if (nbits > 0) {
                br.bit_pos_ += HUFFMAN_TABLE_BITS;
                index3 += table[index3].value;
                index3 += br.val_ >>> br.bit_pos_ & (1 << nbits) - 1;
              }
              br.bit_pos_ += table[index3].bits;
              return table[index3].value;
            }
            function ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {
              var symbol3 = 0;
              var prev_code_len = kDefaultCodeLength;
              var repeat = 0;
              var repeat_code_len = 0;
              var space = 32768;
              var table = [];
              for (var i2 = 0; i2 < 32; i2++)
                table.push(new HuffmanCode(0, 0));
              BrotliBuildHuffmanTable(
                table,
                0,
                5,
                code_length_code_lengths,
                CODE_LENGTH_CODES
              );
              while (symbol3 < num_symbols && space > 0) {
                var p4 = 0;
                var code_len;
                br.readMoreInput();
                br.fillBitWindow();
                p4 += br.val_ >>> br.bit_pos_ & 31;
                br.bit_pos_ += table[p4].bits;
                code_len = table[p4].value & 255;
                if (code_len < kCodeLengthRepeatCode) {
                  repeat = 0;
                  code_lengths[symbol3++] = code_len;
                  if (code_len !== 0) {
                    prev_code_len = code_len;
                    space -= 32768 >> code_len;
                  }
                } else {
                  var extra_bits = code_len - 14;
                  var old_repeat;
                  var repeat_delta;
                  var new_len = 0;
                  if (code_len === kCodeLengthRepeatCode) {
                    new_len = prev_code_len;
                  }
                  if (repeat_code_len !== new_len) {
                    repeat = 0;
                    repeat_code_len = new_len;
                  }
                  old_repeat = repeat;
                  if (repeat > 0) {
                    repeat -= 2;
                    repeat <<= extra_bits;
                  }
                  repeat += br.readBits(extra_bits) + 3;
                  repeat_delta = repeat - old_repeat;
                  if (symbol3 + repeat_delta > num_symbols) {
                    throw new Error(
                      "[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols"
                    );
                  }
                  for (var x2 = 0; x2 < repeat_delta; x2++)
                    code_lengths[symbol3 + x2] = repeat_code_len;
                  symbol3 += repeat_delta;
                  if (repeat_code_len !== 0) {
                    space -= repeat_delta << 15 - repeat_code_len;
                  }
                }
              }
              if (space !== 0) {
                throw new Error(
                  "[ReadHuffmanCodeLengths] space = " + space
                );
              }
              for (; symbol3 < num_symbols; symbol3++)
                code_lengths[symbol3] = 0;
            }
            function ReadHuffmanCode(alphabet_size, tables, table, br) {
              var table_size = 0;
              var simple_code_or_skip;
              var code_lengths = new Uint8Array(alphabet_size);
              br.readMoreInput();
              simple_code_or_skip = br.readBits(2);
              if (simple_code_or_skip === 1) {
                var i2;
                var max_bits_counter = alphabet_size - 1;
                var max_bits = 0;
                var symbols = new Int32Array(4);
                var num_symbols = br.readBits(2) + 1;
                while (max_bits_counter) {
                  max_bits_counter >>= 1;
                  ++max_bits;
                }
                for (i2 = 0; i2 < num_symbols; ++i2) {
                  symbols[i2] = br.readBits(max_bits) % alphabet_size;
                  code_lengths[symbols[i2]] = 2;
                }
                code_lengths[symbols[0]] = 1;
                switch (num_symbols) {
                  case 1:
                    break;
                  case 3:
                    if (symbols[0] === symbols[1] || symbols[0] === symbols[2] || symbols[1] === symbols[2]) {
                      throw new Error(
                        "[ReadHuffmanCode] invalid symbols"
                      );
                    }
                    break;
                  case 2:
                    if (symbols[0] === symbols[1]) {
                      throw new Error(
                        "[ReadHuffmanCode] invalid symbols"
                      );
                    }
                    code_lengths[symbols[1]] = 1;
                    break;
                  case 4:
                    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]) {
                      throw new Error(
                        "[ReadHuffmanCode] invalid symbols"
                      );
                    }
                    if (br.readBits(1)) {
                      code_lengths[symbols[2]] = 3;
                      code_lengths[symbols[3]] = 3;
                    } else {
                      code_lengths[symbols[0]] = 2;
                    }
                    break;
                }
              } else {
                var i2;
                var code_length_code_lengths = new Uint8Array(
                  CODE_LENGTH_CODES
                );
                var space = 32;
                var num_codes = 0;
                var huff = [
                  new HuffmanCode(2, 0),
                  new HuffmanCode(2, 4),
                  new HuffmanCode(2, 3),
                  new HuffmanCode(3, 2),
                  new HuffmanCode(2, 0),
                  new HuffmanCode(2, 4),
                  new HuffmanCode(2, 3),
                  new HuffmanCode(4, 1),
                  new HuffmanCode(2, 0),
                  new HuffmanCode(2, 4),
                  new HuffmanCode(2, 3),
                  new HuffmanCode(3, 2),
                  new HuffmanCode(2, 0),
                  new HuffmanCode(2, 4),
                  new HuffmanCode(2, 3),
                  new HuffmanCode(4, 5)
                ];
                for (i2 = simple_code_or_skip; i2 < CODE_LENGTH_CODES && space > 0; ++i2) {
                  var code_len_idx = kCodeLengthCodeOrder[i2];
                  var p4 = 0;
                  var v3;
                  br.fillBitWindow();
                  p4 += br.val_ >>> br.bit_pos_ & 15;
                  br.bit_pos_ += huff[p4].bits;
                  v3 = huff[p4].value;
                  code_length_code_lengths[code_len_idx] = v3;
                  if (v3 !== 0) {
                    space -= 32 >> v3;
                    ++num_codes;
                  }
                }
                if (!(num_codes === 1 || space === 0))
                  throw new Error(
                    "[ReadHuffmanCode] invalid num_codes or space"
                  );
                ReadHuffmanCodeLengths(
                  code_length_code_lengths,
                  alphabet_size,
                  code_lengths,
                  br
                );
              }
              table_size = BrotliBuildHuffmanTable(
                tables,
                table,
                HUFFMAN_TABLE_BITS,
                code_lengths,
                alphabet_size
              );
              if (table_size === 0) {
                throw new Error(
                  "[ReadHuffmanCode] BuildHuffmanTable failed: "
                );
              }
              return table_size;
            }
            function ReadBlockLength(table, index3, br) {
              var code;
              var nbits;
              code = ReadSymbol(table, index3, br);
              nbits = Prefix.kBlockLengthPrefixCode[code].nbits;
              return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits);
            }
            function TranslateShortCodes(code, ringbuffer, index3) {
              var val;
              if (code < NUM_DISTANCE_SHORT_CODES) {
                index3 += kDistanceShortCodeIndexOffset[code];
                index3 &= 3;
                val = ringbuffer[index3] + kDistanceShortCodeValueOffset[code];
              } else {
                val = code - NUM_DISTANCE_SHORT_CODES + 1;
              }
              return val;
            }
            function MoveToFront(v3, index3) {
              var value = v3[index3];
              var i2 = index3;
              for (; i2; --i2) v3[i2] = v3[i2 - 1];
              v3[0] = value;
            }
            function InverseMoveToFrontTransform(v3, v_len) {
              var mtf = new Uint8Array(256);
              var i2;
              for (i2 = 0; i2 < 256; ++i2) {
                mtf[i2] = i2;
              }
              for (i2 = 0; i2 < v_len; ++i2) {
                var index3 = v3[i2];
                v3[i2] = mtf[index3];
                if (index3) MoveToFront(mtf, index3);
              }
            }
            function HuffmanTreeGroup(alphabet_size, num_htrees) {
              this.alphabet_size = alphabet_size;
              this.num_htrees = num_htrees;
              this.codes = new Array(
                num_htrees + num_htrees * kMaxHuffmanTableSize[alphabet_size + 31 >>> 5]
              );
              this.htrees = new Uint32Array(num_htrees);
            }
            HuffmanTreeGroup.prototype.decode = function(br) {
              var i2;
              var table_size;
              var next = 0;
              for (i2 = 0; i2 < this.num_htrees; ++i2) {
                this.htrees[i2] = next;
                table_size = ReadHuffmanCode(
                  this.alphabet_size,
                  this.codes,
                  next,
                  br
                );
                next += table_size;
              }
            };
            function DecodeContextMap(context_map_size, br) {
              var out = { num_htrees: null, context_map: null };
              var use_rle_for_zeros;
              var max_run_length_prefix = 0;
              var table;
              var i2;
              br.readMoreInput();
              var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1;
              var context_map = out.context_map = new Uint8Array(
                context_map_size
              );
              if (num_htrees <= 1) {
                return out;
              }
              use_rle_for_zeros = br.readBits(1);
              if (use_rle_for_zeros) {
                max_run_length_prefix = br.readBits(4) + 1;
              }
              table = [];
              for (i2 = 0; i2 < HUFFMAN_MAX_TABLE_SIZE; i2++) {
                table[i2] = new HuffmanCode(0, 0);
              }
              ReadHuffmanCode(
                num_htrees + max_run_length_prefix,
                table,
                0,
                br
              );
              for (i2 = 0; i2 < context_map_size; ) {
                var code;
                br.readMoreInput();
                code = ReadSymbol(table, 0, br);
                if (code === 0) {
                  context_map[i2] = 0;
                  ++i2;
                } else if (code <= max_run_length_prefix) {
                  var reps = 1 + (1 << code) + br.readBits(code);
                  while (--reps) {
                    if (i2 >= context_map_size) {
                      throw new Error(
                        "[DecodeContextMap] i >= context_map_size"
                      );
                    }
                    context_map[i2] = 0;
                    ++i2;
                  }
                } else {
                  context_map[i2] = code - max_run_length_prefix;
                  ++i2;
                }
              }
              if (br.readBits(1)) {
                InverseMoveToFrontTransform(
                  context_map,
                  context_map_size
                );
              }
              return out;
            }
            function DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {
              var ringbuffer = tree_type * 2;
              var index3 = tree_type;
              var type_code = ReadSymbol(
                trees,
                tree_type * HUFFMAN_MAX_TABLE_SIZE,
                br
              );
              var block_type;
              if (type_code === 0) {
                block_type = ringbuffers[ringbuffer + (indexes[index3] & 1)];
              } else if (type_code === 1) {
                block_type = ringbuffers[ringbuffer + (indexes[index3] - 1 & 1)] + 1;
              } else {
                block_type = type_code - 2;
              }
              if (block_type >= max_block_type) {
                block_type -= max_block_type;
              }
              block_types[tree_type] = block_type;
              ringbuffers[ringbuffer + (indexes[index3] & 1)] = block_type;
              ++indexes[index3];
            }
            function CopyUncompressedBlockToOutput(output, len2, pos, ringbuffer, ringbuffer_mask, br) {
              var rb_size = ringbuffer_mask + 1;
              var rb_pos = pos & ringbuffer_mask;
              var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;
              var nbytes;
              if (len2 < 8 || br.bit_pos_ + (len2 << 3) < br.bit_end_pos_) {
                while (len2-- > 0) {
                  br.readMoreInput();
                  ringbuffer[rb_pos++] = br.readBits(8);
                  if (rb_pos === rb_size) {
                    output.write(ringbuffer, rb_size);
                    rb_pos = 0;
                  }
                }
                return;
              }
              if (br.bit_end_pos_ < 32) {
                throw new Error(
                  "[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32"
                );
              }
              while (br.bit_pos_ < 32) {
                ringbuffer[rb_pos] = br.val_ >>> br.bit_pos_;
                br.bit_pos_ += 8;
                ++rb_pos;
                --len2;
              }
              nbytes = br.bit_end_pos_ - br.bit_pos_ >> 3;
              if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {
                var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;
                for (var x2 = 0; x2 < tail; x2++)
                  ringbuffer[rb_pos + x2] = br.buf_[br_pos + x2];
                nbytes -= tail;
                rb_pos += tail;
                len2 -= tail;
                br_pos = 0;
              }
              for (var x2 = 0; x2 < nbytes; x2++)
                ringbuffer[rb_pos + x2] = br.buf_[br_pos + x2];
              rb_pos += nbytes;
              len2 -= nbytes;
              if (rb_pos >= rb_size) {
                output.write(ringbuffer, rb_size);
                rb_pos -= rb_size;
                for (var x2 = 0; x2 < rb_pos; x2++)
                  ringbuffer[x2] = ringbuffer[rb_size + x2];
              }
              while (rb_pos + len2 >= rb_size) {
                nbytes = rb_size - rb_pos;
                if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {
                  throw new Error(
                    "[CopyUncompressedBlockToOutput] not enough bytes"
                  );
                }
                output.write(ringbuffer, rb_size);
                len2 -= nbytes;
                rb_pos = 0;
              }
              if (br.input_.read(ringbuffer, rb_pos, len2) < len2) {
                throw new Error(
                  "[CopyUncompressedBlockToOutput] not enough bytes"
                );
              }
              br.reset();
            }
            function JumpToByteBoundary(br) {
              var new_bit_pos = br.bit_pos_ + 7 & ~7;
              var pad_bits = br.readBits(new_bit_pos - br.bit_pos_);
              return pad_bits == 0;
            }
            function BrotliDecompressedSize(buffer) {
              var input = new BrotliInput(buffer);
              var br = new BrotliBitReader(input);
              DecodeWindowBits(br);
              var out = DecodeMetaBlockLength(br);
              return out.meta_block_length;
            }
            exports2.BrotliDecompressedSize = BrotliDecompressedSize;
            function BrotliDecompressBuffer(buffer, output_size) {
              var input = new BrotliInput(buffer);
              if (output_size == null) {
                output_size = BrotliDecompressedSize(buffer);
              }
              var output_buffer = new Uint8Array(output_size);
              var output = new BrotliOutput(output_buffer);
              BrotliDecompress(input, output);
              if (output.pos < output.buffer.length) {
                output.buffer = output.buffer.subarray(
                  0,
                  output.pos
                );
              }
              return output.buffer;
            }
            exports2.BrotliDecompressBuffer = BrotliDecompressBuffer;
            function BrotliDecompress(input, output) {
              var i2;
              var pos = 0;
              var input_end = 0;
              var window_bits = 0;
              var max_backward_distance;
              var max_distance = 0;
              var ringbuffer_size;
              var ringbuffer_mask;
              var ringbuffer;
              var ringbuffer_end;
              var dist_rb = [16, 15, 11, 4];
              var dist_rb_idx = 0;
              var prev_byte1 = 0;
              var prev_byte2 = 0;
              var hgroup = [
                new HuffmanTreeGroup(0, 0),
                new HuffmanTreeGroup(0, 0),
                new HuffmanTreeGroup(0, 0)
              ];
              var block_type_trees;
              var block_len_trees;
              var br;
              var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE;
              br = new BrotliBitReader(input);
              window_bits = DecodeWindowBits(br);
              max_backward_distance = (1 << window_bits) - 16;
              ringbuffer_size = 1 << window_bits;
              ringbuffer_mask = ringbuffer_size - 1;
              ringbuffer = new Uint8Array(
                ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength
              );
              ringbuffer_end = ringbuffer_size;
              block_type_trees = [];
              block_len_trees = [];
              for (var x2 = 0; x2 < 3 * HUFFMAN_MAX_TABLE_SIZE; x2++) {
                block_type_trees[x2] = new HuffmanCode(0, 0);
                block_len_trees[x2] = new HuffmanCode(0, 0);
              }
              while (!input_end) {
                var meta_block_remaining_len = 0;
                var is_uncompressed;
                var block_length = [1 << 28, 1 << 28, 1 << 28];
                var block_type = [0];
                var num_block_types = [1, 1, 1];
                var block_type_rb = [0, 1, 0, 1, 0, 1];
                var block_type_rb_index = [0];
                var distance_postfix_bits;
                var num_direct_distance_codes;
                var distance_postfix_mask;
                var num_distance_codes;
                var context_map = null;
                var context_modes = null;
                var num_literal_htrees;
                var dist_context_map = null;
                var num_dist_htrees;
                var context_offset = 0;
                var context_map_slice = null;
                var literal_htree_index = 0;
                var dist_context_offset = 0;
                var dist_context_map_slice = null;
                var dist_htree_index = 0;
                var context_lookup_offset1 = 0;
                var context_lookup_offset2 = 0;
                var context_mode;
                var htree_command;
                for (i2 = 0; i2 < 3; ++i2) {
                  hgroup[i2].codes = null;
                  hgroup[i2].htrees = null;
                }
                br.readMoreInput();
                var _out = DecodeMetaBlockLength(br);
                meta_block_remaining_len = _out.meta_block_length;
                if (pos + meta_block_remaining_len > output.buffer.length) {
                  var tmp = new Uint8Array(
                    pos + meta_block_remaining_len
                  );
                  tmp.set(output.buffer);
                  output.buffer = tmp;
                }
                input_end = _out.input_end;
                is_uncompressed = _out.is_uncompressed;
                if (_out.is_metadata) {
                  JumpToByteBoundary(br);
                  for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {
                    br.readMoreInput();
                    br.readBits(8);
                  }
                  continue;
                }
                if (meta_block_remaining_len === 0) {
                  continue;
                }
                if (is_uncompressed) {
                  br.bit_pos_ = br.bit_pos_ + 7 & ~7;
                  CopyUncompressedBlockToOutput(
                    output,
                    meta_block_remaining_len,
                    pos,
                    ringbuffer,
                    ringbuffer_mask,
                    br
                  );
                  pos += meta_block_remaining_len;
                  continue;
                }
                for (i2 = 0; i2 < 3; ++i2) {
                  num_block_types[i2] = DecodeVarLenUint8(br) + 1;
                  if (num_block_types[i2] >= 2) {
                    ReadHuffmanCode(
                      num_block_types[i2] + 2,
                      block_type_trees,
                      i2 * HUFFMAN_MAX_TABLE_SIZE,
                      br
                    );
                    ReadHuffmanCode(
                      kNumBlockLengthCodes,
                      block_len_trees,
                      i2 * HUFFMAN_MAX_TABLE_SIZE,
                      br
                    );
                    block_length[i2] = ReadBlockLength(
                      block_len_trees,
                      i2 * HUFFMAN_MAX_TABLE_SIZE,
                      br
                    );
                    block_type_rb_index[i2] = 1;
                  }
                }
                br.readMoreInput();
                distance_postfix_bits = br.readBits(2);
                num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits);
                distance_postfix_mask = (1 << distance_postfix_bits) - 1;
                num_distance_codes = num_direct_distance_codes + (48 << distance_postfix_bits);
                context_modes = new Uint8Array(
                  num_block_types[0]
                );
                for (i2 = 0; i2 < num_block_types[0]; ++i2) {
                  br.readMoreInput();
                  context_modes[i2] = br.readBits(2) << 1;
                }
                var _o1 = DecodeContextMap(
                  num_block_types[0] << kLiteralContextBits,
                  br
                );
                num_literal_htrees = _o1.num_htrees;
                context_map = _o1.context_map;
                var _o2 = DecodeContextMap(
                  num_block_types[2] << kDistanceContextBits,
                  br
                );
                num_dist_htrees = _o2.num_htrees;
                dist_context_map = _o2.context_map;
                hgroup[0] = new HuffmanTreeGroup(
                  kNumLiteralCodes,
                  num_literal_htrees
                );
                hgroup[1] = new HuffmanTreeGroup(
                  kNumInsertAndCopyCodes,
                  num_block_types[1]
                );
                hgroup[2] = new HuffmanTreeGroup(
                  num_distance_codes,
                  num_dist_htrees
                );
                for (i2 = 0; i2 < 3; ++i2) {
                  hgroup[i2].decode(br);
                }
                context_map_slice = 0;
                dist_context_map_slice = 0;
                context_mode = context_modes[block_type[0]];
                context_lookup_offset1 = Context.lookupOffsets[context_mode];
                context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
                htree_command = hgroup[1].htrees[0];
                while (meta_block_remaining_len > 0) {
                  var cmd_code;
                  var range_idx;
                  var insert_code;
                  var copy_code;
                  var insert_length;
                  var copy_length;
                  var distance_code;
                  var distance2;
                  var context;
                  var j2;
                  var copy_dst;
                  br.readMoreInput();
                  if (block_length[1] === 0) {
                    DecodeBlockType(
                      num_block_types[1],
                      block_type_trees,
                      1,
                      block_type,
                      block_type_rb,
                      block_type_rb_index,
                      br
                    );
                    block_length[1] = ReadBlockLength(
                      block_len_trees,
                      HUFFMAN_MAX_TABLE_SIZE,
                      br
                    );
                    htree_command = hgroup[1].htrees[block_type[1]];
                  }
                  --block_length[1];
                  cmd_code = ReadSymbol(
                    hgroup[1].codes,
                    htree_command,
                    br
                  );
                  range_idx = cmd_code >> 6;
                  if (range_idx >= 2) {
                    range_idx -= 2;
                    distance_code = -1;
                  } else {
                    distance_code = 0;
                  }
                  insert_code = Prefix.kInsertRangeLut[range_idx] + (cmd_code >> 3 & 7);
                  copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7);
                  insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset + br.readBits(
                    Prefix.kInsertLengthPrefixCode[insert_code].nbits
                  );
                  copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset + br.readBits(
                    Prefix.kCopyLengthPrefixCode[copy_code].nbits
                  );
                  prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask];
                  prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask];
                  for (j2 = 0; j2 < insert_length; ++j2) {
                    br.readMoreInput();
                    if (block_length[0] === 0) {
                      DecodeBlockType(
                        num_block_types[0],
                        block_type_trees,
                        0,
                        block_type,
                        block_type_rb,
                        block_type_rb_index,
                        br
                      );
                      block_length[0] = ReadBlockLength(
                        block_len_trees,
                        0,
                        br
                      );
                      context_offset = block_type[0] << kLiteralContextBits;
                      context_map_slice = context_offset;
                      context_mode = context_modes[block_type[0]];
                      context_lookup_offset1 = Context.lookupOffsets[context_mode];
                      context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
                    }
                    context = Context.lookup[context_lookup_offset1 + prev_byte1] | Context.lookup[context_lookup_offset2 + prev_byte2];
                    literal_htree_index = context_map[context_map_slice + context];
                    --block_length[0];
                    prev_byte2 = prev_byte1;
                    prev_byte1 = ReadSymbol(
                      hgroup[0].codes,
                      hgroup[0].htrees[literal_htree_index],
                      br
                    );
                    ringbuffer[pos & ringbuffer_mask] = prev_byte1;
                    if ((pos & ringbuffer_mask) === ringbuffer_mask) {
                      output.write(
                        ringbuffer,
                        ringbuffer_size
                      );
                    }
                    ++pos;
                  }
                  meta_block_remaining_len -= insert_length;
                  if (meta_block_remaining_len <= 0) break;
                  if (distance_code < 0) {
                    var context;
                    br.readMoreInput();
                    if (block_length[2] === 0) {
                      DecodeBlockType(
                        num_block_types[2],
                        block_type_trees,
                        2,
                        block_type,
                        block_type_rb,
                        block_type_rb_index,
                        br
                      );
                      block_length[2] = ReadBlockLength(
                        block_len_trees,
                        2 * HUFFMAN_MAX_TABLE_SIZE,
                        br
                      );
                      dist_context_offset = block_type[2] << kDistanceContextBits;
                      dist_context_map_slice = dist_context_offset;
                    }
                    --block_length[2];
                    context = (copy_length > 4 ? 3 : copy_length - 2) & 255;
                    dist_htree_index = dist_context_map[dist_context_map_slice + context];
                    distance_code = ReadSymbol(
                      hgroup[2].codes,
                      hgroup[2].htrees[dist_htree_index],
                      br
                    );
                    if (distance_code >= num_direct_distance_codes) {
                      var nbits;
                      var postfix;
                      var offset4;
                      distance_code -= num_direct_distance_codes;
                      postfix = distance_code & distance_postfix_mask;
                      distance_code >>= distance_postfix_bits;
                      nbits = (distance_code >> 1) + 1;
                      offset4 = (2 + (distance_code & 1) << nbits) - 4;
                      distance_code = num_direct_distance_codes + (offset4 + br.readBits(nbits) << distance_postfix_bits) + postfix;
                    }
                  }
                  distance2 = TranslateShortCodes(
                    distance_code,
                    dist_rb,
                    dist_rb_idx
                  );
                  if (distance2 < 0) {
                    throw new Error(
                      "[BrotliDecompress] invalid distance"
                    );
                  }
                  if (pos < max_backward_distance && max_distance !== max_backward_distance) {
                    max_distance = pos;
                  } else {
                    max_distance = max_backward_distance;
                  }
                  copy_dst = pos & ringbuffer_mask;
                  if (distance2 > max_distance) {
                    if (copy_length >= BrotliDictionary.minDictionaryWordLength && copy_length <= BrotliDictionary.maxDictionaryWordLength) {
                      var offset4 = BrotliDictionary.offsetsByLength[copy_length];
                      var word_id = distance2 - max_distance - 1;
                      var shift4 = BrotliDictionary.sizeBitsByLength[copy_length];
                      var mask = (1 << shift4) - 1;
                      var word_idx = word_id & mask;
                      var transform_idx = word_id >> shift4;
                      offset4 += word_idx * copy_length;
                      if (transform_idx < Transform.kNumTransforms) {
                        var len2 = Transform.transformDictionaryWord(
                          ringbuffer,
                          copy_dst,
                          offset4,
                          copy_length,
                          transform_idx
                        );
                        copy_dst += len2;
                        pos += len2;
                        meta_block_remaining_len -= len2;
                        if (copy_dst >= ringbuffer_end) {
                          output.write(
                            ringbuffer,
                            ringbuffer_size
                          );
                          for (var _x52 = 0; _x52 < copy_dst - ringbuffer_end; _x52++)
                            ringbuffer[_x52] = ringbuffer[ringbuffer_end + _x52];
                        }
                      } else {
                        throw new Error(
                          "Invalid backward reference. pos: " + pos + " distance: " + distance2 + " len: " + copy_length + " bytes left: " + meta_block_remaining_len
                        );
                      }
                    } else {
                      throw new Error(
                        "Invalid backward reference. pos: " + pos + " distance: " + distance2 + " len: " + copy_length + " bytes left: " + meta_block_remaining_len
                      );
                    }
                  } else {
                    if (distance_code > 0) {
                      dist_rb[dist_rb_idx & 3] = distance2;
                      ++dist_rb_idx;
                    }
                    if (copy_length > meta_block_remaining_len) {
                      throw new Error(
                        "Invalid backward reference. pos: " + pos + " distance: " + distance2 + " len: " + copy_length + " bytes left: " + meta_block_remaining_len
                      );
                    }
                    for (j2 = 0; j2 < copy_length; ++j2) {
                      ringbuffer[pos & ringbuffer_mask] = ringbuffer[pos - distance2 & ringbuffer_mask];
                      if ((pos & ringbuffer_mask) === ringbuffer_mask) {
                        output.write(
                          ringbuffer,
                          ringbuffer_size
                        );
                      }
                      ++pos;
                      --meta_block_remaining_len;
                    }
                  }
                  prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask];
                  prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask];
                }
                pos &= 1073741823;
              }
              output.write(ringbuffer, pos & ringbuffer_mask);
            }
            exports2.BrotliDecompress = BrotliDecompress;
            BrotliDictionary.init();
          },
          {
            "./bit_reader": 1,
            "./context": 2,
            "./dictionary": 6,
            "./huffman": 7,
            "./prefix": 9,
            "./streams": 10,
            "./transform": 11
          }
        ],
        4: [
          function(require2, module2, exports2) {
            var base64 = require2("base64-js");
            exports2.init = function() {
              var BrotliDecompressBuffer = require2("./decode").BrotliDecompressBuffer;
              var compressed = base64.toByteArray(
                require2("./dictionary.bin.js")
              );
              return BrotliDecompressBuffer(compressed);
            };
          },
          { "./decode": 3, "./dictionary.bin.js": 5, "base64-js": 8 }
        ],
        5: [
          function(require2, module2, exports2) {
            module2.exports = "W5/fcQLn5gKf2XUbAiQ1XULX+TZz6ADToDsgqk6qVfeC0e4m6OO2wcQ1J76ZBVRV1fRkEsdu//62zQsFEZWSTCnMhcsQKlS2qOhuVYYMGCkV0fXWEoMFbESXrKEZ9wdUEsyw9g4bJlEt1Y6oVMxMRTEVbCIwZzJzboK5j8m4YH02qgXYhv1V+PM435sLVxyHJihaJREEhZGqL03txGFQLm76caGO/ovxKvzCby/3vMTtX/459f0igi7WutnKiMQ6wODSoRh/8Lx1V3Q99MvKtwB6bHdERYRY0hStJoMjNeTsNX7bn+Y7e4EQ3bf8xBc7L0BsyfFPK43dGSXpL6clYC/I328h54/VYrQ5i0648FgbGtl837svJ35L3Mot/+nPlNpWgKx1gGXQYqX6n+bbZ7wuyCHKcUok12Xjqub7NXZGzqBx0SD+uziNf87t7ve42jxSKQoW3nyxVrWIGlFShhCKxjpZZ5MeGna0+lBkk+kaN8F9qFBAFgEogyMBdcX/T1W/WnMOi/7ycWUQloEBKGeC48MkiwqJkJO+12eQiOFHMmck6q/IjWW3RZlany23TBm+cNr/84/oi5GGmGBZWrZ6j+zykVozz5fT/QH/Da6WTbZYYPynVNO7kxzuNN2kxKKWche5WveitPKAecB8YcAHz/+zXLjcLzkdDSktNIDwZE9J9X+tto43oJy65wApM3mDzYtCwX9lM+N5VR3kXYo0Z3t0TtXfgBFg7gU8oN0Dgl7fZlUbhNll+0uuohRVKjrEd8egrSndy5/Tgd2gqjA4CAVuC7ESUmL3DZoGnfhQV8uwnpi8EGvAVVsowNRxPudck7+oqAUDkwZopWqFnW1riss0t1z6iCISVKreYGNvQcXv+1L9+jbP8cd/dPUiqBso2q+7ZyFBvENCkkVr44iyPbtOoOoCecWsiuqMSML5lv+vN5MzUr+Dnh73G7Q1YnRYJVYXHRJaNAOByiaK6CusgFdBPE40r0rvqXV7tksKO2DrHYXBTv8P5ysqxEx8VDXUDDqkPH6NNOV/a2WH8zlkXRELSa8P+heNyJBBP7PgsG1EtWtNef6/i+lcayzQwQCsduidpbKfhWUDgAEmyhGu/zVTacI6RS0zTABrOYueemnVa19u9fT23N/Ta6RvTpof5DWygqreCqrDAgM4LID1+1T/taU6yTFVLqXOv+/MuQOFnaF8vLMKD7tKWDoBdALgxF33zQccCcdHx8fKIVdW69O7qHtXpeGr9jbbpFA+qRMWr5hp0s67FPc7HAiLV0g0/peZlW7hJPYEhZyhpSwahnf93/tZgfqZWXFdmdXBzqxGHLrQKxoAY6fRoBhgCRPmmGueYZ5JexTVDKUIXzkG/fqp/0U3hAgQdJ9zumutK6nqWbaqvm1pgu03IYR+G+8s0jDBBz8cApZFSBeuWasyqo2OMDKAZCozS+GWSvL/HsE9rHxooe17U3s/lTE+VZAk4j3dp6uIGaC0JMiqR5CUsabPyM0dOYDR7Ea7ip4USZlya38YfPtvrX/tBlhHilj55nZ1nfN24AOAi9BVtz/Mbn8AEDJCqJgsVUa6nQnSxv2Fs7l/NlCzpfYEjmPrNyib/+t0ei2eEMjvNhLkHCZlci4WhBe7ePZTmzYqlY9+1pxtS4GB+5lM1BHT9tS270EWUDYFq1I0yY/fNiAk4bk9yBgmef/f2k6AlYQZHsNFnW8wBQxCd68iWv7/35bXfz3JZmfGligWAKRjIs3IpzxQ27vAglHSiOzCYzJ9L9A1CdiyFvyR66ucA4jKifu5ehwER26yV7HjKqn5Mfozo7Coxxt8LWWPT47BeMxX8p0Pjb7hZn+6bw7z3Lw+7653j5sI8CLu5kThpMlj1m4c2ch3jGcP1FsT13vuK3qjecKTZk2kHcOZY40UX+qdaxstZqsqQqgXz+QGF99ZJLqr3VYu4aecl1Ab5GmqS8k/GV5b95zxQ5d4EfXUJ6kTS/CXF/aiqKDOT1T7Jz5z0PwDUcwr9clLN1OJGCiKfqvah+h3XzrBOiLOW8wvn8gW6qE8vPxi+Efv+UH55T7PQFVMh6cZ1pZQlzJpKZ7P7uWvwPGJ6DTlR6wbyj3Iv2HyefnRo/dv7dNx+qaa0N38iBsR++Uil7Wd4afwDNsrzDAK4fXZwvEY/jdKuIKXlfrQd2C39dW7ntnRbIp9OtGy9pPBn/V2ASoi/2UJZfS+xuGLH8bnLuPlzdTNS6zdyk8Dt/h6sfOW5myxh1f+zf3zZ3MX/mO9cQPp5pOx967ZA6/pqHvclNfnUFF+rq+Vd7alKr6KWPcIDhpn6v2K6NlUu6LrKo8b/pYpU/Gazfvtwhn7tEOUuXht5rUJdSf6sLjYf0VTYDgwJ81yaqKTUYej/tbHckSRb/HZicwGJqh1mAHB/IuNs9dc9yuvF3D5Xocm3elWFdq5oEy70dYFit79yaLiNjPj5UUcVmZUVhQEhW5V2Z6Cm4HVH/R8qlamRYwBileuh07CbEce3TXa2JmXWBf+ozt319psboobeZhVnwhMZzOeQJzhpTDbP71Tv8HuZxxUI/+ma3XW6DFDDs4+qmpERwHGBd2edxwUKlODRdUWZ/g0GOezrbzOZauFMai4QU6GVHV6aPNBiBndHSsV4IzpvUiiYyg6OyyrL4Dj5q/Lw3N5kAwftEVl9rNd7Jk5PDij2hTH6wIXnsyXkKePxbmHYgC8A6an5Fob/KH5GtC0l4eFso+VpxedtJHdHpNm+Bvy4C79yVOkrZsLrQ3OHCeB0Ra+kBIRldUGlDCEmq2RwXnfyh6Dz+alk6eftI2n6sastRrGwbwszBeDRS/Fa/KwRJkCzTsLr/JCs5hOPE/MPLYdZ1F1fv7D+VmysX6NpOC8aU9F4Qs6HvDyUy9PvFGDKZ/P5101TYHFl8pjj6wm/qyS75etZhhfg0UEL4OYmHk6m6dO192AzoIyPSV9QedDA4Ml23rRbqxMPMxf7FJnDc5FTElVS/PyqgePzmwVZ26NWhRDQ+oaT7ly7ell4s3DypS1s0g+tOr7XHrrkZj9+x/mJBttrLx98lFIaRZzHz4aC7r52/JQ4VjHahY2/YVXZn/QC2ztQb/sY3uRlyc5vQS8nLPGT/n27495i8HPA152z7Fh5aFpyn1GPJKHuPL8Iw94DuW3KjkURAWZXn4EQy89xiKEHN1mk/tkM4gYDBxwNoYvRfE6LFqsxWJtPrDGbsnLMap3Ka3MUoytW0cvieozOmdERmhcqzG+3HmZv2yZeiIeQTKGdRT4HHNxekm1tY+/n06rGmFleqLscSERzctTKM6G9P0Pc1RmVvrascIxaO1CQCiYPE15bD7c3xSeW7gXxYjgxcrUlcbIvO0r+Yplhx0kTt3qafDOmFyMjgGxXu73rddMHpV1wMubyAGcf/v5dLr5P72Ta9lBF+fzMJrMycwv+9vnU3ANIl1cH9tfW7af8u0/HG0vV47jNFXzFTtaha1xvze/s8KMtCYucXc1nzfd/MQydUXn/b72RBt5wO/3jRcMH9BdhC/yctKBIveRYPrNpDWqBsO8VMmP+WvRaOcA4zRMR1PvSoO92rS7pYEv+fZfEfTMzEdM+6X5tLlyxExhqLRkms5EuLovLfx66de5fL2/yX02H52FPVwahrPqmN/E0oVXnsCKhbi/yRxX83nRbUKWhzYceXOntfuXn51NszJ6MO73pQf5Pl4in3ec4JU8hF7ppV34+mm9r1LY0ee/i1O1wpd8+zfLztE0cqBxggiBi5Bu95v9l3r9r/U5hweLn+TbfxowrWDqdJauKd8+q/dH8sbPkc9ttuyO94f7/XK/nHX46MPFLEb5qQlNPvhJ50/59t9ft3LXu7uVaWaO2bDrDCnRSzZyWvFKxO1+vT8MwwunR3bX0CkfPjqb4K9O19tn5X50PvmYpEwHtiW9WtzuV/s76B1zvLLNkViNd8ySxIl/3orfqP90TyTGaf7/rx8jQzeHJXdmh/N6YDvbvmTBwCdxfEQ1NcL6wNMdSIXNq7b1EUzRy1/Axsyk5p22GMG1b+GxFgbHErZh92wuvco0AuOLXct9hvw2nw/LqIcDRRmJmmZzcgUa7JpM/WV/S9IUfbF56TL2orzqwebdRD8nIYNJ41D/hz37Fo11p2Y21wzPcn713qVGhqtevStYfGH4n69OEJtPvbbLYWvscDqc3Hgnu166+tAyLnxrX0Y5zoYjV++1sI7t5kMr02KT/+uwtkc+rZLOf/qn/s3nYCf13Dg8/sB2diJgjGqjQ+TLhxbzyue2Ob7X6/9lUwW7a+lbznHzOYy8LKW1C/uRPbQY3KW/0gO9LXunHLvPL97afba9bFtc9hmz7GAttjVYlCvQAiOwAk/gC5+hkLEs6tr3AZKxLJtOEwk2dLxTYWsIB/j/ToWtIWzo906FrSG8iaqqqqqqiIiIiAgzMzMzNz+AyK+01/zi8n8S+Y1MjoRaQ80WU/G8MBlO+53VPXANrWm4wzGUVZUjjBJZVdhpcfkjsmcWaO+UEldXi1e+zq+HOsCpknYshuh8pOLISJun7TN0EIGW2xTnlOImeecnoGW4raxe2G1T3HEvfYUYMhG+gAFOAwh5nK8mZhwJMmN7r224QVsNFvZ87Z0qatvknklyPDK3Hy45PgVKXji52Wen4d4PlFVVYGnNap+fSpFbK90rYnhUc6n91Q3AY9E0tJOFrcfZtm/491XbcG/jsViUPPX76qmeuiz+qY1Hk7/1VPM405zWVuoheLUimpWYdVzCmUdKHebMdzgrYrb8mL2eeLSnRWHdonfZa8RsOU9F37w+591l5FLYHiOqWeHtE/lWrBHcRKp3uhtr8yXm8LU/5ms+NM6ZKsqu90cFZ4o58+k4rdrtB97NADFbwmEG7lXqvirhOTOqU14xuUF2myIjURcPHrPOQ4lmM3PeMg7bUuk0nnZi67bXsU6H8lhqIo8TaOrEafCO1ARK9PjC0QOoq2BxmMdgYB9G/lIb9++fqNJ2s7BHGFyBNmZAR8J3KCo012ikaSP8BCrf6VI0X5xdnbhHIO+B5rbOyB54zXkzfObyJ4ecwxfqBJMLFc7m59rNcw7hoHnFZ0b00zee+gTqvjm61Pb4xn0kcDX4jvHM0rBXZypG3DCKnD/Waa/ZtHmtFPgO5eETx+k7RrVg3aSwm2YoNXnCs3XPQDhNn+Fia6IlOOuIG6VJH7TP6ava26ehKHQa2T4N0tcZ9dPCGo3ZdnNltsHQbeYt5vPnJezV/cAeNypdml1vCHI8M81nSRP5Qi2+mI8v/sxiZru9187nRtp3f/42NemcONa+4eVC3PCZzc88aZh851CqSsshe70uPxeN/dmYwlwb3trwMrN1Gq8jbnApcVDx/yDPeYs5/7r62tsQ6lLg+DiFXTEhzR9dHqv0iT4tgj825W+H3XiRUNUZT2kR9Ri0+lp+UM3iQtS8uOE23Ly4KYtvqH13jghUntJRAewuzNLDXp8RxdcaA3cMY6TO2IeSFRXezeWIjCqyhsUdMYuCgYTZSKpBype1zRfq8FshvfBPc6BAQWl7/QxIDp3VGo1J3vn42OEs3qznws+YLRXbymyB19a9XBx6n/owcyxlEYyFWCi+kG9F+EyD/4yn80+agaZ9P7ay2Dny99aK2o91FkfEOY8hBwyfi5uwx2y5SaHmG+oq/zl1FX/8irOf8Y3vAcX/6uLP6A6nvMO24edSGPjQc827Rw2atX+z2bKq0CmW9mOtYnr5/AfDa1ZfPaXnKtlWborup7QYx+Or2uWb+N3N//2+yDcXMqIJdf55xl7/vsj4WoPPlxLxtVrkJ4w/tTe3mLdATOOYwxcq52w5Wxz5MbPdVs5O8/lhfE7dPj0bIiPQ3QV0iqm4m3YX8hRfc6jQ3fWepevMqUDJd86Z4vwM40CWHnn+WphsGHfieF02D3tmZvpWD+kBpNCFcLnZhcmmrhpGzzbdA+sQ1ar18OJD87IOKOFoRNznaHPNHUfUNhvY1iU+uhvEvpKHaUn3qK3exVVyX4joipp3um7FmYJWmA+WbIDshRpbVRx5/nqstCgy87FGbfVB8yDGCqS+2qCsnRwnSAN6zgzxfdB2nBT/vZ4/6uxb6oH8b4VBRxiIB93wLa47hG3w2SL/2Z27yOXJFwZpSJaBYyvajA7vRRYNKqljXKpt/CFD/tSMr18DKKbwB0xggBePatl1nki0yvqW5zchlyZmJ0OTxJ3D+fsYJs/mxYN5+Le5oagtcl+YsVvy8kSjI2YGvGjvmpkRS9W2dtXqWnVuxUhURm1lKtou/hdEq19VBp9OjGvHEQSmrpuf2R24mXGheil8KeiANY8fW1VERUfBImb64j12caBZmRViZHbeVMjCrPDg9A90IXrtnsYCuZtRQ0PyrKDjBNOsPfKsg1pA02gHlVr0OXiFhtp6nJqXVzcbfM0KnzC3ggOENPE9VBdmHKN6LYaijb4wXxJn5A0FSDF5j+h1ooZx885Jt3ZKzO5n7Z5WfNEOtyyPqQEnn7WLv5Fis3PdgMshjF1FRydbNyeBbyKI1oN1TRVrVK7kgsb/zjX4NDPIRMctVeaxVB38Vh1x5KbeJbU138AM5KzmZu3uny0ErygxiJF7GVXUrPzFxrlx1uFdAaZFDN9cvIb74qD9tzBMo7L7WIEYK+sla1DVMHpF0F7b3+Y6S+zjvLeDMCpapmJo1weBWuxKF3rOocih1gun4BoJh1kWnV/Jmiq6uOhK3VfKxEHEkafjLgK3oujaPzY6SXg8phhL4TNR1xvJd1Wa0aYFfPUMLrNBDCh4AuGRTbtKMc6Z1Udj8evY/ZpCuMAUefdo69DZUngoqE1P9A3PJfOf7WixCEj+Y6t7fYeHbbxUAoFV3M89cCKfma3fc1+jKRe7MFWEbQqEfyzO2x/wrO2VYH7iYdQ9BkPyI8/3kXBpLaCpU7eC0Yv/am/tEDu7HZpqg0EvHo0nf/R/gRzUWy33/HXMJQeu1GylKmOkXzlCfGFruAcPPhaGqZOtu19zsJ1SO2Jz4Ztth5cBX6mRQwWmDwryG9FUMlZzNckMdK+IoMJv1rOWnBamS2w2KHiaPMPLC15hCZm4KTpoZyj4E2TqC/P6r7/EhnDMhKicZZ1ZwxuC7DPzDGs53q8gXaI9kFTK+2LTq7bhwsTbrMV8Rsfua5lMS0FwbTitUVnVa1yTb5IX51mmYnUcP9wPr8Ji1tiYJeJV9GZTrQhF7vvdU2OTU42ogJ9FDwhmycI2LIg++03C6scYhUyUuMV5tkw6kGUoL+mjNC38+wMdWNljn6tGPpRES7veqrSn5TRuv+dh6JVL/iDHU1db4c9WK3++OrH3PqziF916UMUKn8G67nN60GfWiHrXYhUG3yVWmyYak59NHj8t1smG4UDiWz2rPHNrKnN4Zo1LBbr2/eF9YZ0n0blx2nG4X+EKFxvS3W28JESD+FWk61VCD3z/URGHiJl++7TdBwkCj6tGOH3qDb0QqcOF9Kzpj0HUb/KyFW3Yhj2VMKJqGZleFBH7vqvf7WqLC3XMuHV8q8a4sTFuxUtkD/6JIBvKaVjv96ndgruKZ1k/BHzqf2K9fLk7HGXANyLDd1vxkK/i055pnzl+zw6zLnwXlVYVtfmacJgEpRP1hbGgrYPVN6v2lG+idQNGmwcKXu/8xEj/P6qe/sB2WmwNp6pp8jaISMkwdleFXYK55NHWLTTbutSUqjBfDGWo/Yg918qQ+8BRZSAHZbfuNZz2O0sov1Ue4CWlVg3rFhM3Kljj9ksGd/NUhk4nH+a5UN2+1i8+NM3vRNp7uQ6sqexSCukEVlVZriHNqFi5rLm9TMWa4qm3idJqppQACol2l4VSuvWLfta4JcXy3bROPNbXOgdOhG47LC0CwW/dMlSx4Jf17aEU3yA1x9p+Yc0jupXgcMuYNku64iYOkGToVDuJvlbEKlJqsmiHbvNrIVZEH+yFdF8DbleZ6iNiWwMqvtMp/mSpwx5KxRrT9p3MAPTHGtMbfvdFhyj9vhaKcn3At8Lc16Ai+vBcSp1ztXi7rCJZx/ql7TXcclq6Q76UeKWDy9boS0WHIjUuWhPG8LBmW5y2rhuTpM5vsLt+HOLh1Yf0DqXa9tsfC+kaKt2htA0ai/L2i7RKoNjEwztkmRU0GfgW1TxUvPFhg0V7DdfWJk5gfrccpYv+MA9M0dkGTLECeYwUixRzjRFdmjG7zdZIl3XKB9YliNKI31lfa7i2JG5C8Ss+rHe0D7Z696/V3DEAOWHnQ9yNahMUl5kENWS6pHKKp2D1BaSrrHdE1w2qNxIztpXgUIrF0bm15YML4b6V1k+GpNysTahKMVrrS85lTVo9OGJ96I47eAy5rYWpRf/mIzeoYU1DKaQCTUVwrhHeyNoDqHel+lLxr9WKzhSYw7vrR6+V5q0pfi2k3L1zqkubY6rrd9ZLvSuWNf0uqnkY+FpTvFzSW9Fp0b9l8JA7THV9eCi/PY/SCZIUYx3BU2alj7Cm3VV6eYpios4b6WuNOJdYXUK3zTqj5CVG2FqYM4Z7CuIU0qO05XR0d71FHM0YhZmJmTRfLlXEumN82BGtzdX0S19t1e+bUieK8zRmqpa4Qc5TSjifmaQsY2ETLjhI36gMR1+7qpjdXXHiceUekfBaucHShAOiFXmv3sNmGQyU5iVgnoocuonQXEPTFwslHtS8R+A47StI9wj0iSrtbi5rMysczFiImsQ+bdFClnFjjpXXwMy6O7qfjOr8Fb0a7ODItisjnn3EQO16+ypd1cwyaAW5Yzxz5QknfMO7643fXW/I9y3U2xH27Oapqr56Z/tEzglj6IbT6HEHjopiXqeRbe5mQQvxtcbDOVverN0ZgMdzqRYRjaXtMRd56Q4cZSmdPvZJdSrhJ1D9zNXPqAEqPIavPdfubt5oke2kmv0dztIszSv2VYuoyf1UuopbsYb+uX9h6WpwjpgtZ6fNNawNJ4q8O3CFoSbioAaOSZMx2GYaPYB+rEb6qjQiNRFQ76TvwNFVKD+BhH9VhcKGsXzmMI7BptU/CNWolM7YzROvpFAntsiWJp6eR2d3GarcYShVYSUqhmYOWj5E96NK2WvmYNTeY7Zs4RUEdv9h9QT4EseKt6LzLrqEOs3hxAY1MaNWpSa6zZx8F3YOVeCYMS88W+CYHDuWe4yoc6YK+djDuEOrBR5lvh0r+Q9uM88lrjx9x9AtgpQVNE8r+3O6Gvw59D+kBF/UMXyhliYUtPjmvXGY6Dk3x+kEOW+GtdMVC4EZTqoS/jmR0P0LS75DOc/w2vnri97M4SdbZ8qeU7gg8DVbERkU5geaMQO3mYrSYyAngeUQqrN0C0/vsFmcgWNXNeidsTAj7/4MncJR0caaBUpbLK1yBCBNRjEv6KvuVSdpPnEMJdsRRtqJ+U8tN1gXA4ePHc6ZT0eviI73UOJF0fEZ8YaneAQqQdGphNvwM4nIqPnXxV0xA0fnCT+oAhJuyw/q8jO0y8CjSteZExwBpIN6SvNp6A5G/abi6egeND/1GTguhuNjaUbbnSbGd4L8937Ezm34Eyi6n1maeOBxh3PI0jzJDf5mh/BsLD7F2GOKvlA/5gtvxI3/eV4sLfKW5Wy+oio+es/u6T8UU+nsofy57Icb/JlZHPFtCgd/x+bwt3ZT+xXTtTtTrGAb4QehC6X9G+8YT+ozcLxDsdCjsuOqwPFnrdLYaFc92Ui0m4fr39lYmlCaqTit7G6O/3kWDkgtXjNH4BiEm/+jegQnihOtfffn33WxsFjhfMd48HT+f6o6X65j7XR8WLSHMFkxbvOYsrRsF1bowDuSQ18Mkxk4qz2zoGPL5fu9h2Hqmt1asl3Q3Yu3szOc+spiCmX4AETBM3pLoTYSp3sVxahyhL8eC4mPN9k2x3o0xkiixIzM3CZFzf5oR4mecQ5+ax2wCah3/crmnHoqR0+KMaOPxRif1oEFRFOO/kTPPmtww+NfMXxEK6gn6iU32U6fFruIz8Q4WgljtnaCVTBgWx7diUdshC9ZEa5yKpRBBeW12r/iNc/+EgNqmhswNB8SBoihHXeDF7rrWDLcmt3V8GYYN7pXRy4DZjj4DJuUBL5iC3DQAaoo4vkftqVTYRGLS3mHZ7gdmdTTqbgNN/PTdTCOTgXolc88MhXAEUMdX0iy1JMuk5wLsgeu0QUYlz2S4skTWwJz6pOm/8ihrmgGfFgri+ZWUK2gAPHgbWa8jaocdSuM4FJYoKicYX/ZSENkg9Q1ZzJfwScfVnR2DegOGwCvmogaWJCLQepv9WNlU6QgsmOwICquU28Mlk3d9W5E81lU/5Ez0LcX6lwKMWDNluNKfBDUy/phJgBcMnfkh9iRxrdOzgs08JdPB85Lwo+GUSb4t3nC+0byqMZtO2fQJ4U2zGIr49t/28qmmGv2RanDD7a3FEcdtutkW8twwwlUSpb8QalodddbBfNHKDQ828BdE7OBgFdiKYohLawFYqpybQoxATZrheLhdI7+0Zlu9Q1myRcd15r9UIm8K2LGJxqTegntqNVMKnf1a8zQiyUR1rxoqjiFxeHxqFcYUTHfDu7rhbWng6qOxOsI+5A1p9mRyEPdVkTlE24vY54W7bWc6jMgZvNXdfC9/9q7408KDsbdL7Utz7QFSDetz2picArzrdpL8OaCHC9V26RroemtDZ5yNM/KGkWMyTmfnInEvwtSD23UcFcjhaE3VKzkoaEMKGBft4XbIO6forTY1lmGQwVmKicBCiArDzE+1oIxE08fWeviIOD5TznqH+OoHadvoOP20drMPe5Irg3XBQziW2XDuHYzjqQQ4wySssjXUs5H+t3FWYMHppUnBHMx/nYIT5d7OmjDbgD9F6na3m4l7KdkeSO3kTEPXafiWinogag7b52taiZhL1TSvBFmEZafFq2H8khQaZXuitCewT5FBgVtPK0j4xUHPfUz3Q28eac1Z139DAP23dgki94EC8vbDPTQC97HPPSWjUNG5tWKMsaxAEMKC0665Xvo1Ntd07wCLNf8Q56mrEPVpCxlIMVlQlWRxM3oAfpgIc+8KC3rEXUog5g06vt7zgXY8grH7hhwVSaeuvC06YYRAwpbyk/Unzj9hLEZNs2oxPQB9yc+GnL6zTgq7rI++KDJwX2SP8Sd6YzTuw5lV/kU6eQxRD12omfQAW6caTR4LikYkBB1CMOrvgRr/VY75+NSB40Cni6bADAtaK+vyxVWpf9NeKJxN2KYQ8Q2xPB3K1s7fuhvWbr2XpgW044VD6DRs0qXoqKf1NFsaGvKJc47leUV3pppP/5VTKFhaGuol4Esfjf5zyCyUHmHthChcYh4hYLQF+AFWsuq4t0wJyWgdwQVOZiV0efRHPoK5+E1vjz9wTJmVkITC9oEstAsyZSgE/dbicwKr89YUxKZI+owD205Tm5lnnmDRuP/JnzxX3gMtlrcX0UesZdxyQqYQuEW4R51vmQ5xOZteUd8SJruMlTUzhtVw/Nq7eUBcqN2/HVotgfngif60yKEtoUx3WYOZlVJuJOh8u59fzSDPFYtQgqDUAGyGhQOAvKroXMcOYY0qjnStJR/G3aP+Jt1sLVlGV8POwr/6OGsqetnyF3TmTqZjENfnXh51oxe9qVUw2M78EzAJ+IM8lZ1MBPQ9ZWSVc4J3mWSrLKrMHReA5qdGoz0ODRsaA+vwxXA2cAM4qlfzBJA6581m4hzxItQw5dxrrBL3Y6kCbUcFxo1S8jyV44q//+7ASNNudZ6xeaNOSIUffqMn4A9lIjFctYn2gpEPAb3f7p3iIBN8H14FUGQ9ct2hPsL+cEsTgUrR47uJVN4n4wt/wgfwwHuOnLd4yobkofy8JvxSQTA7rMpDIc608SlZFJfZYcmbT0tAHpPE8MrtQ42siTUNWxqvWZOmvu9f0JPoQmg+6l7sZWwyfi6PXkxJnwBraUG0MYG4zYHQz3igy/XsFkx5tNQxw43qvI9dU3f0DdhOUlHKjmi1VAr2Kiy0HZwD8VeEbhh0OiDdMYspolQsYdSwjCcjeowIXNZVUPmL2wwIkYhmXKhGozdCJ4lRKbsf4NBh/XnQoS92NJEWOVOFs2YhN8c5QZFeK0pRdAG40hqvLbmoSA8xQmzOOEc7wLcme9JOsjPCEgpCwUs9E2DohMHRhUeyGIN6TFvrbny8nDuilsDpzrH5mS76APoIEJmItS67sQJ+nfwddzmjPxcBEBBCw0kWDwd0EZCkNeOD7NNQhtBm7KHL9mRxj6U1yWU2puzlIDtpYxdH4ZPeXBJkTGAJfUr/oTCz/iypY6uXaR2V1doPxJYlrw2ghH0D5gbrhFcIxzYwi4a/4hqVdf2DdxBp6vGYDjavxMAAoy+1+3aiO6S3W/QAKNVXagDtvsNtx7Ks+HKgo6U21B+QSZgIogV5Bt+BnXisdVfy9VyXV+2P5fMuvdpAjM1o/K9Z+XnE4EOCrue+kcdYHqAQ0/Y/OmNlQ6OI33jH/uD1RalPaHpJAm2av0/xtpqdXVKNDrc9F2izo23Wu7firgbURFDNX9eGGeYBhiypyXZft2j3hTvzE6PMWKsod//rEILDkzBXfi7xh0eFkfb3/1zzPK/PI5Nk3FbZyTl4mq5BfBoVoqiPHO4Q4QKZAlrQ3MdNfi3oxIjvsM3kAFv3fdufurqYR3PSwX/mpGy/GFI/B2MNPiNdOppWVbs/gjF3YH+QA9jMhlAbhvasAHstB0IJew09iAkmXHl1/TEj+jvHOpOGrPRQXbPADM+Ig2/OEcUcpgPTItMtW4DdqgfYVI/+4hAFWYjUGpOP/UwNuB7+BbKOcALbjobdgzeBQfjgNSp2GOpxzGLj70Vvq5cw2AoYENwKLUtJUX8sGRox4dVa/TN4xKwaKcl9XawQR/uNus700Hf17pyNnezrUgaY9e4MADhEDBpsJT6y1gDJs1q6wlwGhuUzGR7C8kgpjPyHWwsvrf3yn1zJEIRa5eSxoLAZOCR9xbuztxFRJW9ZmMYfCFJ0evm9F2fVnuje92Rc4Pl6A8bluN8MZyyJGZ0+sNSb//DvAFxC2BqlEsFwccWeAl6CyBcQV1bx4mQMBP1Jxqk1EUADNLeieS2dUFbQ/c/kvwItbZ7tx0st16viqd53WsRmPTKv2AD8CUnhtPWg5aUegNpsYgasaw2+EVooeNKmrW3MFtj76bYHJm5K9gpAXZXsE5U8DM8XmVOSJ1F1WnLy6nQup+jx52bAb+rCq6y9WXl2B2oZDhfDkW7H3oYfT/4xx5VncBuxMXP2lNfhUVQjSSzSRbuZFE4vFawlzveXxaYKVs8LpvAb8IRYF3ZHiRnm0ADeNPWocwxSzNseG7NrSEVZoHdKWqaGEBz1N8Pt7kFbqh3LYmAbm9i1IChIpLpM5AS6mr6OAPHMwwznVy61YpBYX8xZDN/a+lt7n+x5j4bNOVteZ8lj3hpAHSx1VR8vZHec4AHO9XFCdjZ9eRkSV65ljMmZVzaej2qFn/qt1lvWzNZEfHxK3qOJrHL6crr0CRzMox5f2e8ALBB4UGFZKA3tN6F6IXd32GTJXGQ7DTi9j/dNcLF9jCbDcWGKxoKTYblIwbLDReL00LRcDPMcQuXLMh5YzgtfjkFK1DP1iDzzYYVZz5M/kWYRlRpig1htVRjVCknm+h1M5LiEDXOyHREhvzCGpFZjHS0RsK27o2avgdilrJkalWqPW3D9gmwV37HKmfM3F8YZj2ar+vHFvf3B8CRoH4kDHIK9mrAg+owiEwNjjd9V+FsQKYR8czJrUkf7Qoi2YaW6EVDZp5zYlqiYtuXOTHk4fAcZ7qBbdLDiJq0WNV1l2+Hntk1mMWvxrYmc8kIx8G3rW36J6Ra4lLrTOCgiOihmow+YnzUT19jbV2B3RWqSHyxkhmgsBqMYWvOcUom1jDQ436+fcbu3xf2bbeqU/ca+C4DOKE+e3qvmeMqW3AxejfzBRFVcwVYPq4L0APSWWoJu+5UYX4qg5U6YTioqQGPG9XrnuZ/BkxuYpe6Li87+18EskyQW/uA+uk2rpHpr6hut2TlVbKgWkFpx+AZffweiw2+VittkEyf/ifinS/0ItRL2Jq3tQOcxPaWO2xrG68GdFoUpZgFXaP2wYVtRc6xYCfI1CaBqyWpg4bx8OHBQwsV4XWMibZZ0LYjWEy2IxQ1mZrf1/UNbYCJplWu3nZ4WpodIGVA05d+RWSS+ET9tH3RfGGmNI1cIY7evZZq7o+a0bjjygpmR3mVfalkT/SZGT27Q8QGalwGlDOS9VHCyFAIL0a1Q7JiW3saz9gqY8lqKynFrPCzxkU4SIfLc9VfCI5edgRhDXs0edO992nhTKHriREP1NJC6SROMgQ0xO5kNNZOhMOIT99AUElbxqeZF8A3xrfDJsWtDnUenAHdYWSwAbYjFqQZ+D5gi3hNK8CSxU9i6f6ClL9IGlj1OPMQAsr84YG6ijsJpCaGWj75c3yOZKBB9mNpQNPUKkK0D6wgLH8MGoyRxTX6Y05Q4AnYNXMZwXM4eij/9WpsM/9CoRnFQXGR6MEaY+FXvXEO3RO0JaStk6OXuHVATHJE+1W+TU3bSZ2ksMtqjO0zfSJCdBv7y2d8DMx6TfVme3q0ZpTKMMu4YL/t7ciTNtdDkwPogh3Cnjx7qk08SHwf+dksZ7M2vCOlfsF0hQ6J4ehPCaHTNrM/zBSOqD83dBEBCW/F/LEmeh0nOHd7oVl3/Qo/9GUDkkbj7yz+9cvvu+dDAtx8NzCDTP4iKdZvk9MWiizvtILLepysflSvTLFBZ37RLwiriqyRxYv/zrgFd/9XVHh/OmzBvDX4mitMR/lUavs2Vx6cR94lzAkplm3IRNy4TFfu47tuYs9EQPIPVta4P64tV+sZ7n3ued3cgEx2YK+QL5+xms6osk8qQbTyuKVGdaX9FQqk6qfDnT5ykxk0VK7KZ62b6DNDUfQlqGHxSMKv1P0XN5BqMeKG1P4Wp5QfZDUCEldppoX0U6ss2jIko2XpURKCIhfaOqLPfShdtS37ZrT+jFRSH2xYVV1rmT/MBtRQhxiO4MQ3iAGlaZi+9PWBEIXOVnu9jN1f921lWLZky9bqbM3J2MAAI9jmuAx3gyoEUa6P2ivs0EeNv/OR+AX6q5SW6l5HaoFuS6jr6yg9limu+P0KYKzfMXWcQSfTXzpOzKEKpwI3YGXZpSSy2LTlMgfmFA3CF6R5c9xWEtRuCg2ZPUQ2Nb6dRFTNd4TfGHrnEWSKHPuRyiJSDAZ+KX0VxmSHjGPbQTLVpqixia2uyhQ394gBMt7C3ZAmxn/DJS+l1fBsAo2Eir/C0jG9csd4+/tp12pPc/BVJGaK9mfvr7M/CeztrmCO5qY06Edi4xAGtiEhnWAbzLy2VEyazE1J5nPmgU4RpW4Sa0TnOT6w5lgt3/tMpROigHHmexBGAMY0mdcDbDxWIz41NgdD6oxgHsJRgr5RnT6wZAkTOcStU4NMOQNemSO7gxGahdEsC+NRVGxMUhQmmM0llWRbbmFGHzEqLM4Iw0H7577Kyo+Zf+2cUFIOw93gEY171vQaM0HLwpjpdRR6Jz7V0ckE7XzYJ0TmY9znLdzkva0vNrAGGT5SUZ5uaHDkcGvI0ySpwkasEgZPMseYcu85w8HPdSNi+4T6A83iAwDbxgeFcB1ZM2iGXzFcEOUlYVrEckaOyodfvaYSQ7GuB4ISE0nYJc15X/1ciDTPbPCgYJK55VkEor4LvzL9S2WDy4xj+6FOqVyTAC2ZNowheeeSI5hA/02l8UYkv4nk9iaVn+kCVEUstgk5Hyq+gJm6R9vG3rhuM904he/hFmNQaUIATB1y3vw+OmxP4X5Yi6A5I5jJufHCjF9+AGNwnEllZjUco6XhsO5T5+R3yxz5yLVOnAn0zuS+6zdj0nTJbEZCbXJdtpfYZfCeCOqJHoE2vPPFS6eRLjIJlG69X93nfR0mxSFXzp1Zc0lt/VafDaImhUMtbnqWVb9M4nGNQLN68BHP7AR8Il9dkcxzmBv8PCZlw9guY0lurbBsmNYlwJZsA/B15/HfkbjbwPddaVecls/elmDHNW2r4crAx43feNkfRwsaNq/yyJ0d/p5hZ6AZajz7DBfUok0ZU62gCzz7x8eVfJTKA8IWn45vINLSM1q+HF9CV9qF3zP6Ml21kPPL3CXzkuYUlnSqT+Ij4tI/od5KwIs+tDajDs64owN7tOAd6eucGz+KfO26iNcBFpbWA5732bBNWO4kHNpr9D955L61bvHCF/mwSrz6eQaDjfDEANqGMkFc+NGxpKZzCD2sj/JrHd+zlPQ8Iz7Q+2JVIiVCuCKoK/hlAEHzvk/Piq3mRL1rT/fEh9hoT5GJmeYswg1otiKydizJ/fS2SeKHVu6Z3JEHjiW8NaTQgP5xdBli8nC57XiN9hrquBu99hn9zqwo92+PM2JXtpeVZS0PdqR5mDyDreMMtEws+CpwaRyyzoYtfcvt9PJIW0fJVNNi/FFyRsea7peLvJrL+5b4GOXJ8tAr+ATk9f8KmiIsRhqRy0vFzwRV3Z5dZ3QqIU8JQ/uQpkJbjMUMFj2F9sCFeaBjI4+fL/oN3+LQgjI4zuAfQ+3IPIPFQBccf0clJpsfpnBxD84atwtupkGqKvrH7cGNl/QcWcSi6wcVDML6ljOgYbo+2BOAWNNjlUBPiyitUAwbnhFvLbnqw42kR3Yp2kv2dMeDdcGOX5kT4S6M44KHEB/SpCfl7xgsUvs+JNY9G3O2X/6FEt9FyAn57lrbiu+tl83sCymSvq9eZbe9mchL7MTf/Ta78e80zSf0hYY5eUU7+ff14jv7Xy8qjzfzzzvaJnrIdvFb5BLWKcWGy5/w7+vV2cvIfwHqdTB+RuJK5oj9mbt0Hy94AmjMjjwYNZlNS6uiyxNnwNyt3gdreLb64p/3+08nXkb92LTkkRgFOwk1oGEVllcOj5lv1hfAZywDows0944U8vUFw+A/nuVq/UCygsrmWIBnHyU01d0XJPwriEOvx/ISK6Pk4y2w0gmojZs7lU8TtakBAdne4v/aNxmMpK4VcGMp7si0yqsiolXRuOi1Z1P7SqD3Zmp0CWcyK4Ubmp2SXiXuI5nGLCieFHKHNRIlcY3Pys2dwMTYCaqlyWSITwr2oGXvyU3h1Pf8eQ3w1bnD7ilocVjYDkcXR3Oo1BXgMLTUjNw2xMVwjtp99NhSVc5aIWrDQT5DHPKtCtheBP4zHcw4dz2eRdTMamhlHhtfgqJJHI7NGDUw1XL8vsSeSHyKqDtqoAmrQqsYwvwi7HW3ojWyhIa5oz5xJTaq14NAzFLjVLR12rRNUQ6xohDnrWFb5bG9yf8aCD8d5phoackcNJp+Dw3Due3RM+5Rid7EuIgsnwgpX0rUWh/nqPtByMhMZZ69NpgvRTKZ62ViZ+Q7Dp5r4K0d7EfJuiy06KuIYauRh5Ecrhdt2QpTS1k1AscEHvapNbU3HL1F2TFyR33Wxb5MvH5iZsrn3SDcsxlnnshO8PLwmdGN+paWnQuORtZGX37uhFT64SeuPsx8UOokY6ON85WdQ1dki5zErsJGazcBOddWJEKqNPiJpsMD1GrVLrVY+AOdPWQneTyyP1hRX/lMM4ZogGGOhYuAdr7F/DOiAoc++cn5vlf0zkMUJ40Z1rlgv9BelPqVOpxKeOpzKdF8maK+1Vv23MO9k/8+qpLoxrIGH2EDQlnGmH8CD31G8QqlyQIcpmR5bwmSVw9/Ns6IHgulCRehvZ/+VrM60Cu/r3AontFfrljew74skYe2uyn7JKQtFQBQRJ9ryGic/zQOsbS4scUBctA8cPToQ3x6ZBQu6DPu5m1bnCtP8TllLYA0UTQNVqza5nfew3Mopy1GPUwG5jsl0OVXniPmAcmLqO5HG8Hv3nSLecE9oOjPDXcsTxoCBxYyzBdj4wmnyEV4kvFDunipS8SSkvdaMnTBN9brHUR8xdmmEAp/Pdqk9uextp1t+JrtXwpN/MG2w/qhRMpSNxQ1uhg/kKO30eQ/FyHUDkWHT8V6gGRU4DhDMxZu7xXij9Ui6jlpWmQCqJg3FkOTq3WKneCRYZxBXMNAVLQgHXSCGSqNdjebY94oyIpVjMYehAiFx/tqzBXFHZaL5PeeD74rW5OysFoUXY8sebUZleFTUa/+zBKVTFDopTReXNuZq47QjkWnxjirCommO4L/GrFtVV21EpMyw8wyThL5Y59d88xtlx1g1ttSICDwnof6lt/6zliPzgVUL8jWBjC0o2D6Kg+jNuThkAlaDJsq/AG2aKA//A76avw2KNqtv223P+Wq3StRDDNKFFgtsFukYt1GFDWooFVXitaNhb3RCyJi4cMeNjROiPEDb4k+G3+hD8tsg+5hhmSc/8t2JTSwYoCzAI75doq8QTHe+E/Tw0RQSUDlU+6uBeNN3h6jJGX/mH8oj0i3caCNsjvTnoh73BtyZpsflHLq6AfwJNCDX4S98h4+pCOhGKDhV3rtkKHMa3EG4J9y8zFWI4UsfNzC/Rl5midNn7gwoN9j23HGCQQ+OAZpTTPMdiVow740gIyuEtd0qVxMyNXhHcnuXRKdw5wDUSL358ktjMXmAkvIB73BLa1vfF9BAUZInPYJiwxqFWQQBVk7gQH4ojfUQ/KEjn+A/WR6EEe4CtbpoLe1mzHkajgTIoE0SLDHVauKhrq12zrAXBGbPPWKCt4DGedq3JyGRbmPFW32bE7T20+73BatV/qQhhBWfWBFHfhYWXjALts38FemnoT+9bn1jDBMcUMmYgSc0e7GQjv2MUBwLU8ionCpgV+Qrhg7iUIfUY6JFxR0Y+ZTCPM+rVuq0GNLyJXX6nrUTt8HzFBRY1E/FIm2EeVA9NcXrj7S6YYIChVQCWr/m2fYUjC4j0XLkzZ8GCSLfmkW3PB/xq+nlXsKVBOj7vTvqKCOMq7Ztqr3cQ+N8gBnPaAps+oGwWOkbuxnRYj/x/WjiDclVrs22xMK4qArE1Ztk1456kiJriw6abkNeRHogaPRBgbgF9Z8i/tbzWELN4CvbqtrqV9TtGSnmPS2F9kqOIBaazHYaJ9bi3AoDBvlZasMluxt0BDXfhp02Jn411aVt6S4TUB8ZgFDkI6TP6gwPY85w+oUQSsjIeXVminrwIdK2ZAawb8Se6XOJbOaliQxHSrnAeONDLuCnFejIbp4YDtBcQCwMsYiRZfHefuEJqJcwKTTJ8sx5hjHmJI1sPFHOr6W9AhZ2NAod38mnLQk1gOz2LCAohoQbgMbUK9RMEA3LkiF7Sr9tLZp6lkciIGhE2V546w3Mam53VtVkGbB9w0Yk2XiRnCmbpxmHr2k4eSC0RuNbjNsUfDIfc8DZvRvgUDe1IlKdZTzcT4ZGEb53dp8VtsoZlyXzLHOdAbsp1LPTVaHvLA0GYDFMbAW/WUBfUAdHwqLFAV+3uHvYWrCfhUOR2i89qvCBoOb48usAGdcF2M4aKn79k/43WzBZ+xR1L0uZfia70XP9soQReeuhZiUnXFDG1T8/OXNmssTSnYO+3kVLAgeiY719uDwL9FQycgLPessNihMZbAKG7qwPZyG11G1+ZA3jAX2yddpYfmaKBlmfcK/V0mwIRUDC0nJSOPUl2KB8h13F4dlVZiRhdGY5farwN+f9hEb1cRi41ZcGDn6Xe9MMSTOY81ULJyXIHSWFIQHstVYLiJEiUjktlHiGjntN5/btB8Fu+vp28zl2fZXN+dJDyN6EXhS+0yzqpl/LSJNEUVxmu7BsNdjAY0jVsAhkNuuY0E1G48ej25mSt+00yPbQ4SRCVkIwb6ISvYtmJRPz9Zt5dk76blf+lJwAPH5KDF+vHAmACLoCdG2Adii6dOHnNJnTmZtoOGO8Q1jy1veMw6gbLFToQmfJa7nT7Al89mRbRkZZQxJTKgK5Kc9INzmTJFp0tpAPzNmyL/F08bX3nhCumM/cR/2RPn9emZ3VljokttZD1zVWXlUIqEU7SLk5I0lFRU0AcENXBYazNaVzsVHA/sD3o9hm42wbHIRb/BBQTKzAi8s3+bMtpOOZgLdQzCYPfX3UUxKd1WYVkGH7lh/RBBgMZZwXzU9+GYxdBqlGs0LP+DZ5g2BWNh6FAcR944B+K/JTWI3t9YyVyRhlP4CCoUk/mmF7+r2pilVBjxXBHFaBfBtr9hbVn2zDuI0kEOG3kBx8CGdPOjX1ph1POOZJUO1JEGG0jzUy2tK4X0CgVNYhmkqqQysRNtKuPdCJqK3WW57kaV17vXgiyPrl4KEEWgiGF1euI4QkSFHFf0TDroQiLNKJiLbdhH0YBhriRNCHPxSqJmNNoketaioohqMglh6wLtEGWSM1EZbQg72h0UJAIPVFCAJOThpQGGdKfFovcwEeiBuZHN2Ob4uVM7+gwZLz1D9E7ta4RmMZ24OBBAg7Eh6dLXGofZ4U2TFOCQMKjwhVckjrydRS+YaqCw1kYt6UexuzbNEDyYLTZnrY1PzsHZJT4U+awO2xlqTSYu6n/U29O2wPXgGOEKDMSq+zTUtyc8+6iLp0ivav4FKx+xxVy4FxhIF/pucVDqpsVe2jFOfdZhTzLz2QjtzvsTCvDPU7bzDH2eXVKUV9TZ+qFtaSSxnYgYdXKwVreIgvWhT9eGDB2OvnWyPLfIIIfNnfIxU8nW7MbcH05nhlsYtaW9EZRsxWcKdEqInq1DiZPKCz7iGmAU9/ccnnQud2pNgIGFYOTAWjhIrd63aPDgfj8/sdlD4l+UTlcxTI9jbaMqqN0gQxSHs60IAcW3cH4p3V1aSciTKB29L1tz2eUQhRiTgTvmqc+sGtBNh4ky0mQJGsdycBREP+fAaSs1EREDVo5gvgi5+aCN7NECw30owbCc1mSpjiahyNVwJd1jiGgzSwfTpzf2c5XJvG/g1n0fH88KHNnf+u7ZiRMlXueSIsloJBUtW9ezvsx9grfsX/FNxnbxU1Lvg0hLxixypHKGFAaPu0xCD8oDTeFSyfRT6s8109GMUZL8m2xXp8X2dpPCWWdX84iga4BrTlOfqox4shqEgh/Ht4qRst52cA1xOIUuOxgfUivp6v5f8IVyaryEdpVk72ERAwdT4aoY1usBgmP+0m06Q216H/nubtNYxHaOIYjcach3A8Ez/zc0KcShhel0HCYjFsA0FjYqyJ5ZUH1aZw3+zWC0hLpM6GDfcAdn9fq2orPmZbW6XXrf+Krc9RtvII5jeD3dFoT1KwZJwxfUMvc5KLfn8rROW23Jw89sJ2a5dpB3qWDUBWF2iX8OCuKprHosJ2mflBR+Wqs86VvgI/XMnsqb97+VlKdPVysczPj8Jhzf+WCvGBHijAqYlavbF60soMWlHbvKT+ScvhprgeTln51xX0sF+Eadc/l2s2a5BgkVbHYyz0E85p0LstqH+gEGiR84nBRRFIn8hLSZrGwqjZ3E29cuGi+5Z5bp7EM8MWFa9ssS/vy4VrDfECSv7DSU84DaP0sXI3Ap4lWznQ65nQoTKRWU30gd7Nn8ZowUvGIx4aqyXGwmA/PB4qN8msJUODezUHEl0VP9uo+cZ8vPFodSIB4C7lQYjEFj8yu49C2KIV3qxMFYTevG8KqAr0TPlkbzHHnTpDpvpzziAiNFh8xiT7C/TiyH0EguUw4vxAgpnE27WIypV+uFN2zW7xniF/n75trs9IJ5amB1zXXZ1LFkJ6GbS/dFokzl4cc2mamVwhL4XU0Av5gDWAl+aEWhAP7t2VIwU+EpvfOPDcLASX7H7lZpXA2XQfbSlD4qU18NffNPoAKMNSccBfO9YVVgmlW4RydBqfHAV7+hrZ84WJGho6bNT0YMhxxLdOx/dwGj0oyak9aAkNJ8lRJzUuA8sR+fPyiyTgUHio5+Pp+YaKlHrhR41jY5NESPS3x+zTMe0S2HnLOKCOQPpdxKyviBvdHrCDRqO+l96HhhNBLXWv4yEMuEUYo8kXnYJM8oIgVM4XJ+xXOev4YbWeqsvgq0lmw4/PiYr9sYLt+W5EAuYSFnJEan8CwJwbtASBfLBBpJZiRPor/aCJBZsM+MhvS7ZepyHvU8m5WSmaZnxuLts8ojl6KkS8oSAHkq5GWlCB/NgJ5W3rO2Cj1MK7ahxsCrbTT3a0V/QQH+sErxV4XUWDHx0kkFy25bPmBMBQ6BU3HoHhhYcJB9JhP6NXUWKxnE0raXHB6U9KHpWdQCQI72qevp5fMzcm+AvC85rsynVQhruDA9fp9COe7N56cg1UKGSas89vrN+WlGLYTwi5W+0xYdKEGtGCeNJwXKDU0XqU5uQYnWsMwTENLGtbQMvoGjIFIEMzCRal4rnBAg7D/CSn8MsCvS+FDJJAzoiioJEhZJgAp9n2+1Yznr7H+6eT4YkJ9Mpj60ImcW4i4iHDLn9RydB8dx3QYm3rsX6n4VRrZDsYK6DCGwkwd5n3/INFEpk16fYpP6JtMQpqEMzcOfQGAHXBTEGzuLJ03GYQL9bmV2/7ExDlRf+Uvf1sM2frRtCWmal12pMgtonvSCtR4n1CLUZRdTHDHP1Otwqd+rcdlavnKjUB/OYXQHUJzpNyFoKpQK+2OgrEKpGyIgIBgn2y9QHnTJihZOpEvOKIoHAMGAXHmj21Lym39Mbiow4IF+77xNuewziNVBxr6KD5e+9HzZSBIlUa/AmsDFJFXeyrQakR3FwowTGcADJHcEfhGkXYNGSYo4dh4bxwLM+28xjiqkdn0/3R4UEkvcBrBfn/SzBc1XhKM2VPlJgKSorjDac96V2UnQYXl1/yZPT4DVelgO+soMjexXwYO58VLl5xInQUZI8jc3H2CPnCNb9X05nOxIy4MlecasTqGK6s2az4RjpF2cQP2G28R+7wDPsZDZC/kWtjdoHC7SpdPmqQrUAhMwKVuxCmYTiD9q/O7GHtZvPSN0CAUQN/rymXZNniYLlJDE70bsk6Xxsh4kDOdxe7A2wo7P9F5YvqqRDI6brf79yPCSp4I0jVoO4YnLYtX5nzspR5WB4AKOYtR1ujXbOQpPyYDvfRE3FN5zw0i7reehdi7yV0YDRKRllGCGRk5Yz+Uv1fYl2ZwrnGsqsjgAVo0xEUba8ohjaNMJNwTwZA/wBDWFSCpg1eUH8MYL2zdioxRTqgGQrDZxQyNzyBJPXZF0+oxITJAbj7oNC5JwgDMUJaM5GqlGCWc//KCIrI+aclEe4IA0uzv7cuj6GCdaJONpi13O544vbtIHBF+A+JeDFUQNy61Gki3rtyQ4aUywn6ru314/dkGiP8Iwjo0J/2Txs49ZkwEl4mx+iYUUO55I6pJzU4P+7RRs+DXZkyKUYZqVWrPF4I94m4Wx1tXeE74o9GuX977yvJ/jkdak8+AmoHVjI15V+WwBdARFV2IPirJgVMdsg1Pez2VNHqa7EHWdTkl3XTcyjG9BiueWFvQfXI8aWSkuuRmqi/HUuzqyvLJfNfs0txMqldYYflWB1BS31WkuPJGGwXUCpjiQSktkuBMWwHjSkQxeehqw1Kgz0Trzm7QbtgxiEPDVmWCNCAeCfROTphd1ZNOhzLy6XfJyG6Xgd5MCAZw4xie0Sj5AnY1/akDgNS9YFl3Y06vd6FAsg2gVQJtzG7LVq1OH2frbXNHWH/NY89NNZ4QUSJqL2yEcGADbT38X0bGdukqYlSoliKOcsSTuqhcaemUeYLLoI8+MZor2RxXTRThF1LrHfqf/5LcLAjdl4EERgUysYS2geE+yFdasU91UgUDsc2cSQ1ZoT9+uLOwdgAmifwQqF028INc2IQEDfTmUw3eZxvz7Ud1z3xc1PQfeCvfKsB9jOhRj7rFyb9XcDWLcYj0bByosychMezMLVkFiYcdBBQtvI6K0KRuOZQH2kBsYHJaXTkup8F0eIhO1/GcIwWKpr2mouB7g5TUDJNvORXPXa/mU8bh27TAZYBe2sKx4NSv5OjnHIWD2RuysCzBlUfeNXhDd2jxnHoUlheJ3jBApzURy0fwm2FwwsSU0caQGl0Kv8hopRQE211NnvtLRsmCNrhhpEDoNiZEzD2QdJWKbRRWnaFedXHAELSN0t0bfsCsMf0ktfBoXBoNA+nZN9+pSlmuzspFevmsqqcMllzzvkyXrzoA+Ryo1ePXpdGOoJvhyru+EBRsmOp7MXZ0vNUMUqHLUoKglg1p73sWeZmPc+KAw0pE2zIsFFE5H4192KwDvDxdxEYoDBDNZjbg2bmADTeUKK57IPD4fTYF4c6EnXx/teYMORBDtIhPJneiZny7Nv/zG+YmekIKCoxr6kauE2bZtBLufetNG0BtBY7f+/ImUypMBvdWu/Q7vTMRzw5aQGZWuc1V0HEsItFYMIBnoKGZ0xcarba/TYZq50kCaflFysYjA4EDKHqGdpYWdKYmm+a7TADmW35yfnOYpZYrkpVEtiqF0EujI00aeplNs2k+qyFZNeE3CDPL9P6b4PQ/kataHkVpLSEVGK7EX6rAa7IVNrvZtFvOA6okKvBgMtFDAGZOx88MeBcJ8AR3AgUUeIznAN6tjCUipGDZONm1FjWJp4A3QIzSaIOmZ7DvF/ysYYbM/fFDOV0jntAjRdapxJxL0eThpEhKOjCDDq2ks+3GrwxqIFKLe1WdOzII8XIOPGnwy6LKXVfpSDOTEfaRsGujhpS4hBIsMOqHbl16PJxc4EkaVu9wpEYlF/84NSv5Zum4drMfp9yXbzzAOJqqS4YkI4cBrFrC7bMPiCfgI3nNZAqkk3QOZqR+yyqx+nDQKBBBZ7QKrfGMCL+XpqFaBJU0wpkBdAhbR4hJsmT5aynlvkouoxm/NjD5oe6BzVIO9uktM+/5dEC5P7vZvarmuO/lKXz4sBabVPIATuKTrwbJP8XUkdM6uEctHKXICUJGjaZIWRbZp8czquQYfY6ynBUCfIU+gG6wqSIBmYIm9pZpXdaL121V7q0VjDjmQnXvMe7ysoEZnZL15B0SpxS1jjd83uNIOKZwu5MPzg2NhOx3xMOPYwEn2CUzbSrwAs5OAtrz3GAaUkJOU74XwjaYUmGJdZBS1NJVkGYrToINLKDjxcuIlyfVsKQSG/G4DyiO2SlQvJ0d0Ot1uOG5IFSAkq+PRVMgVMDvOIJMdqjeCFKUGRWBW9wigYvcbU7CQL/7meF2KZAaWl+4y9uhowAX7elogAvItAAxo2+SFxGRsHGEW9BnhlTuWigYxRcnVUBRQHV41LV+Fr5CJYV7sHfeywswx4XMtUx6EkBhR+q8AXXUA8uPJ73Pb49i9KG9fOljvXeyFj9ixgbo6CcbAJ7WHWqKHy/h+YjBwp6VcN7M89FGzQ04qbrQtgrOFybg3gQRTYG5xn73ArkfQWjCJROwy3J38Dx/D7jOa6BBNsitEw1wGq780EEioOeD+ZGp2J66ADiVGMayiHYucMk8nTK2zzT9CnEraAk95kQjy4k0GRElLL5YAKLQErJ5rp1eay9O4Fb6yJGm9U4FaMwPGxtKD6odIIHKoWnhKo1U8KIpFC+MVn59ZXmc7ZTBZfsg6FQ8W10YfTr4u0nYrpHZbZ1jXiLmooF0cOm0+mPnJBXQtepc7n0BqOipNCqI6yyloTeRShNKH04FIo0gcMk0H/xThyN4pPAWjDDkEp3lNNPRNVfpMI44CWRlRgViP64eK0JSRp0WUvCWYumlW/c58Vcz/yMwVcW5oYb9+26TEhwvbxiNg48hl1VI1UXTU//Eta+BMKnGUivctfL5wINDD0giQL1ipt6U7C9cd4+lgqY2lMUZ02Uv6Prs+ZEZer7ZfWBXVghlfOOrClwsoOFKzWEfz6RZu1eCs+K8fLvkts5+BX0gyrFYve0C3qHrn5U/Oh6D/CihmWIrY7HUZRhJaxde+tldu6adYJ+LeXupQw0XExC36RETdNFxcq9glMu4cNQSX9cqR/GQYp+IxUkIcNGWVU7ZtGa6P3XAyodRt0XeS3Tp01AnCh0ZbUh4VrSZeV9RWfSoWyxnY3hzcZ30G/InDq4wxRrEejreBxnhIQbkxenxkaxl+k7eLUQkUR6vKJ2iDFNGX3WmVA1yaOH+mvhBd+sE6vacQzFobwY5BqEAFmejwW5ne7HtVNolOUgJc8CsUxmc/LBi8N5mu9VsIA5HyErnS6zeCz7VLI9+n/hbT6hTokMXTVyXJRKSG2hd2labXTbtmK4fNH3IZBPreSA4FMeVouVN3zG5x9CiGpLw/3pceo4qGqp+rVp+z+7yQ98oEf+nyH4F3+J9IheDBa94Wi63zJbLBCIZm7P0asHGpIJt3PzE3m0S4YIWyXBCVXGikj8MudDPB/6Nm2v4IxJ5gU0ii0guy5SUHqGUYzTP0jIJU5E82RHUXtX4lDdrihBLdP1YaG1AGUC12rQKuIaGvCpMjZC9bWSCYnjDlvpWbkdXMTNeBHLKiuoozMGIvkczmP0aRJSJ8PYnLCVNhKHXBNckH79e8Z8Kc2wUej4sQZoH8qDRGkg86maW/ZQWGNnLcXmq3FlXM6ssR/3P6E/bHMvm6HLrv1yRixit25JsH3/IOr2UV4BWJhxXW5BJ6Xdr07n9kF3ZNAk6/Xpc5MSFmYJ2R7bdL8Kk7q1OU9Elg/tCxJ8giT27wSTySF0GOxg4PbYJdi/Nyia9Nn89CGDulfJemm1aiEr/eleGSN+5MRrVJ4K6lgyTTIW3i9cQ0dAi6FHt0YMbH3wDSAtGLSAccezzxHitt1QdhW36CQgPcA8vIIBh3/JNjf/Obmc2yzpk8edSlS4lVdwgW5vzbYEyFoF4GCBBby1keVNueHAH+evi+H7oOVfS3XuPQSNTXOONAbzJeSb5stwdQHl1ZjrGoE49I8+A9j3t+ahhQj74FCSWpZrj7wRSFJJnnwi1T9HL5qrCFW/JZq6P62XkMWTb+u4lGpKfmmwiJWx178GOG7KbrZGqyWwmuyKWPkNswkZ1q8uptUlviIi+AXh2bOOTOLsrtNkfqbQJeh24reebkINLkjut5r4d9GR/r8CBa9SU0UQhsnZp5cP+RqWCixRm7i4YRFbtZ4EAkhtNa6jHb6gPYQv7MKqkPLRmX3dFsK8XsRLVZ6IEVrCbmNDc8o5mqsogjAQfoC9Bc7R6gfw03m+lQpv6kTfhxscDIX6s0w+fBxtkhjXAXr10UouWCx3C/p/FYwJRS/AXRKkjOb5CLmK4XRe0+xeDDwVkJPZau52bzLEDHCqV0f44pPgKOkYKgTZJ33fmk3Tu8SdxJ02SHM8Fem5SMsWqRyi2F1ynfRJszcFKykdWlNqgDA/L9lKYBmc7Zu/q9ii1FPF47VJkqhirUob53zoiJtVVRVwMR34gV9iqcBaHbRu9kkvqk3yMpfRFG49pKKjIiq7h/VpRwPGTHoY4cg05X5028iHsLvUW/uz+kjPyIEhhcKUwCkJAwbR9pIEGOn8z6svAO8i89sJ3dL5qDWFYbS+HGPRMxYwJItFQN86YESeJQhn2urGiLRffQeLptDl8dAgb+Tp47UQPxWOw17OeChLN1WnzlkPL1T5O+O3Menpn4C3IY5LEepHpnPeZHbvuWfeVtPlkH4LZjPbBrkJT3NoRJzBt86CO0Xq59oQ+8dsm0ymRcmQyn8w71mhmcuEI5byuF+C88VPYly2sEzjlzAQ3vdn/1+Hzguw6qFNNbqenhZGbdiG6RwZaTG7jTA2X9RdXjDN9yj1uQpyO4Lx8KRAcZcbZMafp4wPOd5MdXoFY52V1A8M9hi3sso93+uprE0qYNMjkE22CvK4HuUxqN7oIz5pWuETq1lQAjqlSlqdD2Rnr/ggp/TVkQYjn9lMfYelk2sH5HPdopYo7MHwlV1or9Bxf+QCyLzm92vzG2wjiIjC/ZHEJzeroJl6bdFPTpZho5MV2U86fLQqxNlGIMqCGy+9WYhJ8ob1r0+Whxde9L2PdysETv97O+xVw+VNN1TZSQN5I6l9m5Ip6pLIqLm4a1B1ffH6gHyqT9p82NOjntRWGIofO3bJz5GhkvSWbsXueTAMaJDou99kGLqDlhwBZNEQ4mKPuDvVwSK4WmLluHyhA97pZiVe8g+JxmnJF8IkV/tCs4Jq/HgOoAEGR9tCDsDbDmi3OviUQpG5D8XmKcSAUaFLRXb2lmJTNYdhtYyfjBYZQmN5qT5CNuaD3BVnlkCk7bsMW3AtXkNMMTuW4HjUERSJnVQ0vsBGa1wo3Qh7115XGeTF3NTz8w0440AgU7c3bSXO/KMINaIWXd0oLpoq/0/QJxCQSJ9XnYy1W7TYLBJpHsVWD1ahsA7FjNvRd6mxCiHsm8g6Z0pnzqIpF1dHUtP2ITU5Z1hZHbu+L3BEEStBbL9XYvGfEakv1bmf+bOZGnoiuHEdlBnaChxYKNzB23b8sw8YyT7Ajxfk49eJIAvdbVkdFCe2J0gMefhQ0bIZxhx3fzMIysQNiN8PgOUKxOMur10LduigREDRMZyP4oGWrP1GFY4t6groASsZ421os48wAdnrbovNhLt7ScNULkwZ5AIZJTrbaKYTLjA1oJ3sIuN/aYocm/9uoQHEIlacF1s/TM1fLcPTL38O9fOsjMEIwoPKfvt7opuI9G2Hf/PR4aCLDQ7wNmIdEuXJ/QNL72k5q4NejAldPfe3UVVqzkys8YZ/jYOGOp6c+YzRCrCuq0M11y7TiN6qk7YXRMn/gukxrEimbMQjr3jwRM6dKVZ4RUfWQr8noPXLJq6yh5R3EH1IVOHESst/LItbG2D2vRsZRkAObzvQAAD3mb3/G4NzopI0FAiHfbpq0X72adg6SRj+8OHMShtFxxLZlf/nLgRLbClwl5WmaYSs+yEjkq48tY7Z2bE0N91mJwt+ua0NlRJIDh0HikF4UvSVorFj2YVu9YeS5tfvlVjPSoNu/Zu6dEUfBOT555hahBdN3Sa5Xuj2Rvau1lQNIaC944y0RWj9UiNDskAK1WoL+EfXcC6IbBXFRyVfX/WKXxPAwUyIAGW8ggZ08hcijKTt1YKnUO6QPvcrmDVAb0FCLIXn5id4fD/Jx4tw/gbXs7WF9b2RgXtPhLBG9vF5FEkdHAKrQHZAJC/HWvk7nvzzDzIXZlfFTJoC3JpGgLPBY7SQTjGlUvG577yNutZ1hTfs9/1nkSXK9zzKLRZ3VODeKUovJe0WCq1zVMYxCJMenmNzPIU2S8TA4E7wWmbNkxq9rI2dd6v0VpcAPVMxnDsvWTWFayyqvKZO7Z08a62i/oH2/jxf8rpmfO64in3FLiL1GX8IGtVE9M23yGsIqJbxDTy+LtaMWDaPqkymb5VrQdzOvqldeU0SUi6IirG8UZ3jcpRbwHa1C0Dww9G/SFX3gPvTJQE+kyz+g1BeMILKKO+olcHzctOWgzxYHnOD7dpCRtuZEXACjgqesZMasoPgnuDC4nUviAAxDc5pngjoAITIkvhKwg5d608pdrZcA+qn5TMT6Uo/QzBaOxBCLTJX3Mgk85rMfsnWx86oLxf7p2PX5ONqieTa/qM3tPw4ZXvlAp83NSD8F7+ZgctK1TpoYwtiU2h02HCGioH5tkVCqNVTMH5p00sRy2JU1qyDBP2CII/Dg4WDsIl+zgeX7589srx6YORRQMBfKbodbB743Tl4WLKOEnwWUVBsm94SOlCracU72MSyj068wdpYjyz1FwC2bjQnxnB6Mp/pZ+yyZXtguEaYB+kqhjQ6UUmwSFazOb+rhYjLaoiM+aN9/8KKn0zaCTFpN9eKwWy7/u4EHzO46TdFSNjMfn2iPSJwDPCFHc0I1+vjdAZw5ZjqR/uzi9Zn20oAa5JnLEk/EA3VRWE7J/XrupfFJPtCUuqHPpnlL7ISJtRpSVcB8qsZCm2QEkWoROtCKKxUh3yEcMbWYJwk6DlEBG0bZP6eg06FL3v6RPb7odGuwm7FN8fG4woqtB8e7M5klPpo97GoObNwt+ludTAmxyC5hmcFx+dIvEZKI6igFKHqLH01iY1o7903VzG9QGetyVx5RNmBYUU+zIuSva/yIcECUi4pRmE3VkF2avqulQEUY4yZ/wmNboBzPmAPey3+dSYtBZUjeWWT0pPwCz4Vozxp9xeClIU60qvEFMQCaPvPaA70WlOP9f/ey39macvpGCVa+zfa8gO44wbxpJUlC8GN/pRMTQtzY8Z8/hiNrU+Zq64ZfFGIkdj7m7abcK1EBtws1X4J/hnqvasPvvDSDYWN+QcQVGMqXalkDtTad5rYY0TIR1Eqox3czwPMjKPvF5sFv17Thujr1IZ1Ytl4VX1J0vjXKmLY4lmXipRAro0qVGEcXxEVMMEl54jQMd4J7RjgomU0j1ptjyxY+cLiSyXPfiEcIS2lWDK3ISAy6UZ3Hb5vnPncA94411jcy75ay6B6DSTzK6UTCZR9uDANtPBrvIDgjsfarMiwoax2OlLxaSoYn4iRgkpEGqEkwox5tyI8aKkLlfZ12lO11TxsqRMY89j5JaO55XfPJPDL1LGSnC88Re9Ai+Nu5bZjtwRrvFITUFHPR4ZmxGslQMecgbZO7nHk32qHxYkdvWpup07ojcMCaVrpFAyFZJJbNvBpZfdf39Hdo2kPtT7v0/f8R/B5Nz4f1t9/3zNM/7n6SUHfcWk5dfQFJvcJMgPolGCpOFb/WC0FGWU2asuQyT+rm88ZKZ78Cei/CAh939CH0JYbpZIPtxc2ufXqjS3pHH9lnWK4iJ7OjR/EESpCo2R3MYKyE7rHfhTvWho4cL1QdN4jFTyR6syMwFm124TVDDRXMNveI1Dp/ntwdz8k8kxw7iFSx6+Yx6O+1LzMVrN0BBzziZi9kneZSzgollBnVwBh6oSOPHXrglrOj+QmR/AESrhDpKrWT+8/AiMDxS/5wwRNuGQPLlJ9ovomhJWn8sMLVItQ8N/7IXvtD8kdOoHaw+vBSbFImQsv/OCAIui99E+YSIOMlMvBXkAt+NAZK8wB9Jf8CPtB+TOUOR+z71d/AFXpPBT6+A5FLjxMjLIEoJzrQfquvxEIi+WoUzGR1IzQFNvbYOnxb2PyQ0kGdyXKzW2axQL8lNAXPk6NEjqrRD1oZtKLlFoofrXw0dCNWASHzy+7PSzOUJ3XtaPZsxLDjr+o41fKuKWNmjiZtfkOzItvlV2MDGSheGF0ma04qE3TUEfqJMrXFm7DpK+27DSvCUVf7rbNoljPhha5W7KBqVq0ShUSTbRmuqPtQreVWH4JET5yMhuqMoSd4r/N8sDmeQiQQvi1tcZv7Moc7dT5X5AtCD6kNEGZOzVcNYlpX4AbTsLgSYYliiPyVoniuYYySxsBy5cgb3pD+EK0Gpb0wJg031dPgaL8JZt6sIvzNPEHfVPOjXmaXj4bd4voXzpZ5GApMhILgMbCEWZ2zwgdeQgjNHLbPIt+KqxRwWPLTN6HwZ0Ouijj4UF+Sg0Au8XuIKW0WxlexdrFrDcZJ8Shauat3X0XmHygqgL1nAu2hrJFb4wZXkcS+i36KMyU1yFvYv23bQUJi/3yQpqr/naUOoiEWOxckyq/gq43dFou1DVDaYMZK9tho7+IXXokBCs5GRfOcBK7g3A+jXQ39K4YA8PBRW4m5+yR0ZAxWJncjRVbITvIAPHYRt1EJ3YLiUbqIvoKHtzHKtUy1ddRUQ0AUO41vonZDUOW+mrszw+SW/6Q/IUgNpcXFjkM7F4CSSQ2ExZg85otsMs7kqsQD4OxYeBNDcSpifjMoLb7GEbGWTwasVObmB/bfPcUlq0wYhXCYEDWRW02TP5bBrYsKTGWjnWDDJ1F7zWai0zW/2XsCuvBQjPFcTYaQX3tSXRSm8hsAoDdjArK/OFp6vcWYOE7lizP0Yc+8p16i7/NiXIiiQTp7c7Xus925VEtlKAjUdFhyaiLT7VxDagprMFwix4wZ05u0qj7cDWFd0W9OYHIu3JbJKMXRJ1aYNovugg+QqRN7fNHSi26VSgBpn+JfMuPo3aeqPWik/wI5Rz3BWarPQX4i5+dM0npwVOsX+KsOhC7vDg+OJsz4Q5zlnIeflUWL6QYMbf9WDfLmosLF4Qev3mJiOuHjoor/dMeBpA9iKDkMjYBNbRo414HCxjsHrB4EXNbHzNMDHCLuNBG6Sf+J4MZ/ElVsDSLxjIiGsTPhw8BPjxbfQtskj+dyNMKOOcUYIRBEIqbazz3lmjlRQhplxq673VklMMY6597vu+d89ec/zq7Mi4gQvh87ehYbpOuZEXj5g/Q7S7BFDAAB9DzG35SC853xtWVcnZQoH54jeOqYLR9NDuwxsVthTV7V99n/B7HSbAytbEyVTz/5NhJ8gGIjG0E5j3griULUd5Rg7tQR+90hJgNQKQH2btbSfPcaTOfIexc1db1BxUOhM1vWCpLaYuKr3FdNTt/T3PWCpEUWDKEtzYrjpzlL/wri3MITKsFvtF8QVV/NhVo97aKIBgdliNc10dWdXVDpVtsNn+2UIolrgqdWA4EY8so0YvB4a+aLzMXiMAuOHQrXY0tr+CL10JbvZzgjJJuB1cRkdT7DUqTvnswVUp5kkUSFVtIIFYK05+tQxT6992HHNWVhWxUsD1PkceIrlXuUVRogwmfdhyrf6zzaL8+c0L7GXMZOteAhAVQVwdJh+7nrX7x4LaIIfz2F2v7Dg/uDfz2Fa+4gFm2zHAor8UqimJG3VTJtZEoFXhnDYXvxMJFc6ku2bhbCxzij2z5UNuK0jmp1mnvkVNUfR+SEmj1Lr94Lym75PO7Fs0MIr3GdsWXRXSfgLTVY0FLqba97u1In8NAcY7IC6TjWLigwKEIm43NxTdaVTv9mcKkzuzBkKd8x/xt1p/9BbP7Wyb4bpo1K1gnOpbLvKz58pWl3B55RJ/Z5mRDLPtNQg14jdOEs9+h/V5UVpwrAI8kGbX8KPVPDIMfIqKDjJD9UyDOPhjZ3vFAyecwyq4akUE9mDOtJEK1hpDyi6Ae87sWAClXGTiwPwN7PXWwjxaR79ArHRIPeYKTunVW24sPr/3HPz2IwH8oKH4OlWEmt4BLM6W5g4kMcYbLwj2usodD1088stZA7VOsUSpEVl4w7NMb1EUHMRxAxLF0CIV+0L3iZb+ekB1vSDSFjAZ3hfLJf7gFaXrOKn+mhR+rWw/eTXIcAgl4HvFuBg1LOmOAwJH3eoVEjjwheKA4icbrQCmvAtpQ0mXG0agYp5mj4Rb6mdQ+RV4QBPbxMqh9C7o8nP0Wko2ocnCHeRGhN1XVyT2b9ACsL+6ylUy+yC3QEnaKRIJK91YtaoSrcWZMMwxuM0E9J68Z+YyjA0g8p1PfHAAIROy6Sa04VXOuT6A351FOWhKfTGsFJ3RTJGWYPoLk5FVK4OaYR9hkJvezwF9vQN1126r6isMGXWTqFW+3HL3I/jurlIdDWIVvYY+s6yq7lrFSPAGRdnU7PVwY/SvWbZGpXzy3BQ2LmAJlrONUsZs4oGkly0V267xbD5KMY8woNNsmWG1VVgLCra8aQBBcI4DP2BlNwxhiCtHlaz6OWFoCW0vMR3ErrG7JyMjTSCnvRcsEHgmPnwA6iNpJ2DrFb4gLlhKJyZGaWkA97H6FFdwEcLT6DRQQL++fOkVC4cYGW1TG/3iK5dShRSuiBulmihqgjR45Vi03o2RbQbP3sxt90VxQ6vzdlGfkXmmKmjOi080JSHkLntjvsBJnv7gKscOaTOkEaRQqAnCA4HWtB4XnMtOhpRmH2FH8tTXrIjAGNWEmudQLCkcVlGTQ965Kh0H6ixXbgImQP6b42B49sO5C8pc7iRlgyvSYvcnH9FgQ3azLbQG2cUW96SDojTQStxkOJyOuDGTHAnnWkz29aEwN9FT8EJ4yhXOg+jLTrCPKeEoJ9a7lDXOjEr8AgX4BmnMQ668oW0zYPyQiVMPxKRHtpfnEEyaKhdzNVThlxxDQNdrHeZiUFb6NoY2KwvSb7BnRcpJy+/g/zAYx3fYSN5QEaVD2Y1VsNWxB0BSO12MRsRY8JLfAezRMz5lURuLUnG1ToKk6Q30FughqWN6gBNcFxP/nY/iv+iaUQOa+2Nuym46wtI/DvSfzSp1jEi4SdYBE7YhTiVV5cX9gwboVDMVgZp5YBQlHOQvaDNfcCoCJuYhf5kz5kwiIKPjzgpcRJHPbOhJajeoeRL53cuMahhV8Z7IRr6M4hW0JzT7mzaMUzQpm866zwM7Cs07fJYXuWvjAMkbe5O6V4bu71sOG6JQ4oL8zIeXHheFVavzxmlIyBkgc9IZlEDplMPr8xlcyss4pVUdwK1e7CK2kTsSdq7g5SHRAl3pYUB9Ko4fsh4qleOyJv1z3KFSTSvwEcRO/Ew8ozEDYZSqpfoVW9uhJfYrNAXR0Z3VmeoAD+rVWtwP/13sE/3ICX3HhDG3CMc476dEEC0K3umSAD4j+ZQLVdFOsWL2C1TH5+4KiSWH+lMibo+B55hR3Gq40G1n25sGcN0mEcoU2wN9FCVyQLBhYOu9aHVLWjEKx2JIUZi5ySoHUAI9b8hGzaLMxCZDMLhv8MkcpTqEwz9KFDpCpqQhVmsGQN8m24wyB82FAKNmjgfKRsXRmsSESovAwXjBIoMKSG51p6Um8b3i7GISs7kjTq/PZoioCfJzfKdJTN0Q45kQEQuh9H88M3yEs3DbtRTKALraM0YC8laiMiOOe6ADmTcCiREeAWZelBaEXRaSuj2lx0xHaRYqF65O0Lo5OCFU18A8cMDE4MLYm9w2QSr9NgQAIcRxZsNpA7UJR0e71JL+VU+ISWFk5I97lra8uGg7GlQYhGd4Gc6rxsLFRiIeGO4abP4S4ekQ1fiqDCy87GZHd52fn5aaDGuvOmIofrzpVwMvtbreZ/855OaXTRcNiNE0wzGZSxbjg26v8ko8L537v/XCCWP2MFaArJpvnkep0pA+O86MWjRAZPQRfznZiSIaTppy6m3p6HrNSsY7fDtz7Cl4V/DJAjQDoyiL2uwf1UHVd2AIrzBUSlJaTj4k6NL97a/GqhWKU9RUmjnYKpm2r+JYUcrkCuZKvcYvrg8pDoUKQywY9GDWg03DUFSirlUXBS5SWn/KAntnf0IdHGL/7mwXqDG+LZYjbEdQmqUqq4y54TNmWUP7IgcAw5816YBzwiNIJiE9M4lPCzeI/FGBeYy3p6IAmH4AjXXmvQ4Iy0Y82NTobcAggT2Cdqz6Mx4TdGoq9fn2etrWKUNFyatAHydQTVUQ2S5OWVUlugcNvoUrlA8cJJz9MqOa/W3iVno4zDHfE7zhoY5f5lRTVZDhrQbR8LS4eRLz8iPMyBL6o4PiLlp89FjdokQLaSBmKHUwWp0na5fE3v9zny2YcDXG/jfI9sctulHRbdkI5a4GOPJx4oAJQzVZ/yYAado8KNZUdEFs9ZPiBsausotXMNebEgr0dyopuqfScFJ3ODNPHgclACPdccwv0YJGQdsN2lhoV4HVGBxcEUeUX/alr4nqpcc1CCR3vR7g40zteQg/JvWmFlUE4mAiTpHlYGrB7w+U2KdSwQz2QJKBe/5eiixWipmfP15AFWrK8Sh1GBBYLgzki1wTMhGQmagXqJ2+FuqJ8f0XzXCVJFHQdMAw8xco11HhM347alrAu+wmX3pDFABOvkC+WPX0Uhg1Z5MVHKNROxaR84YV3s12UcM+70cJ460SzEaKLyh472vOMD3XnaK7zxZcXlWqenEvcjmgGNR2OKbI1s8U+iwiW+HotHalp3e1MGDy6BMVIvajnAzkFHbeVsgjmJUkrP9OAwnEHYXVBqYx3q7LvXjoVR0mY8h+ZaOnh053pdsGkmbqhyryN01eVHySr+CkDYkSMeZ1xjPNVM+gVLTDKu2VGsMUJqWO4TwPDP0VOg2/8ITbAUaMGb4LjL7L+Pi11lEVMXTYIlAZ/QHmTENjyx3kDkBdfcvvQt6tKk6jYFM4EG5UXDTaF5+1ZjRz6W7MdJPC+wTkbDUim4p5QQH3b9kGk2Bkilyeur8Bc20wm5uJSBO95GfYDI1EZipoRaH7uVveneqz43tlTZGRQ4a7CNmMHgXyOQQOL6WQkgMUTQDT8vh21aSdz7ERiZT1jK9F+v6wgFvuEmGngSvIUR2CJkc5tx1QygfZnAruONobB1idCLB1FCfO7N1ZdRocT8/Wye+EnDiO9pzqIpnLDl4bkaRKW+ekBVwHn46Shw1X0tclt/0ROijuUB4kIInrVJU4buWf4YITJtjOJ6iKdr1u+flgQeFH70GxKjhdgt/MrwfB4K/sXczQ+9zYcrD4dhY6qZhZ010rrxggWA8JaZyg2pYij8ieYEg1aZJkZK9O1Re7sB0iouf60rK0Gd+AYlp7soqCBCDGwfKeUQhCBn0E0o0GS6PdmjLi0TtCYZeqazqwN+yNINIA8Lk3iPDnWUiIPLGNcHmZDxfeK0iAdxm/T7LnN+gemRL61hHIc0NCAZaiYJR+OHnLWSe8sLrK905B5eEJHNlWq4RmEXIaFTmo49f8w61+NwfEUyuJAwVqZCLFcyHBKAcIVj3sNzfEOXzVKIndxHw+AR93owhbCxUZf6Gs8cz6/1VdrFEPrv330+9s6BtMVPJ3zl/Uf9rUi0Z/opexfdL3ykF76e999GPfVv8fJv/Y/+/5hEMon1tqNFyVRevV9y9/uIvsG3dbB8GRRrgaEXfhx+2xeOFt+cEn3RZanNxdEe2+B6MHpNbrRE53PlDifPvFcp4kO78ILR0T4xyW/WGPyBsqGdoA7zJJCu1TKbGfhnqgnRbxbB2B3UZoeQ2bz2sTVnUwokTcTU21RxN1PYPS3Sar7T0eRIsyCNowr9amwoMU/od9s2APtiKNL6ENOlyKADstAEWKA+sdKDhrJ6BOhRJmZ+QJbAaZ3/5Fq0/lumCgEzGEbu3yi0Y4I4EgVAjqxh4HbuQn0GrRhOWyAfsglQJAVL1y/6yezS2k8RE2MstJLh92NOB3GCYgFXznF4d25qiP4ZCyI4RYGesut6FXK6GwPpKK8WHEkhYui0AyEmr5Ml3uBFtPFdnioI8RiCooa7Z1G1WuyIi3nSNglutc+xY8BkeW3JJXPK6jd2VIMpaSxpVtFq+R+ySK9J6WG5Qvt+C+QH1hyYUOVK7857nFmyDBYgZ/o+AnibzNVqyYCJQvyDXDTK+iXdkA71bY7TL3bvuLxLBQ8kbTvTEY9aqkQ3+MiLWbEgjLzOH+lXgco1ERgzd80rDCymlpaRQbOYnKG/ODoFl46lzT0cjM5FYVvv0qLUbD5lyJtMUaC1pFlTkNONx6lliaX9o0i/1vws5bNKn5OuENQEKmLlcP4o2ZmJjD4zzd3Fk32uQ4uRWkPSUqb4LBe3EXHdORNB2BWsws5daRnMfNVX7isPSb1hMQdAJi1/qmDMfRUlCU74pmnzjbXfL8PVG8NsW6IQM2Ne23iCPIpryJjYbVnm5hCvKpMa7HLViNiNc+xTfDIaKm3jctViD8A1M9YPJNk003VVr4Zo2MuGW8vil8SLaGpPXqG7I4DLdtl8a4Rbx1Lt4w5Huqaa1XzZBtj208EJVGcmKYEuaeN27zT9EE6a09JerXdEbpaNgNqYJdhP1NdqiPKsbDRUi86XvvNC7rME5mrSQtrzAZVndtSjCMqd8BmaeGR4l4YFULGRBeXIV9Y4yxLFdyoUNpiy2IhePSWzBofYPP0eIa2q5JP4j9G8at/AqoSsLAUuRXtvgsqX/zYwsE+of6oSDbUOo4RMJw+DOUTJq+hnqwKim9Yy/napyZNTc2rCq6V9jHtJbxGPDwlzWj/Sk3zF/BHOlT/fSjSq7FqlPI1q6J+ru8Aku008SFINXZfOfnZNOvGPMtEmn2gLPt+H4QLA+/SYe4j398auzhKIp2Pok3mPC5q1IN1HgR+mnEfc4NeeHYwd2/kpszR3cBn7ni9NbIqhtSWFW8xbUJuUPVOeeXu3j0IGZmFNiwaNZ6rH4/zQ2ODz6tFxRLsUYZu1bfd1uIvfQDt4YD/efKYv8VF8bHGDgK22w2Wqwpi43vNCOXFJZCGMqWiPbL8mil6tsmOTXAWCyMCw73e2rADZj2IK6rqksM3EXF2cbLb4vjB14wa/yXK5vwU+05MzERJ5nXsXsW21o7M+gO0js2OyKciP5uF2iXyb2DiptwQeHeqygkrNsqVCSlldxBMpwHi1vfc8RKpP/4L3Lmpq6DZcvhDDfxTCE3splacTcOtXdK2g303dIWBVe2wD/Gvja1cClFQ67gw0t1ZUttsUgQ1Veky8oOpS6ksYEc4bqseCbZy766SvL3FodmnahlWJRgVCNjPxhL/fk2wyvlKhITH/VQCipOI0dNcRa5B1M5HmOBjTLeZQJy237e2mobwmDyJNHePhdDmiknvLKaDbShL+Is1XTCJuLQd2wmdJL7+mKvs294whXQD+vtd88KKk0DXP8B1Xu9J+xo69VOuFgexgTrcvI6SyltuLix9OPuE6/iRJYoBMEXxU4shQMf4Fjqwf1PtnJ/wWSZd29rhZjRmTGgiGTAUQqRz+nCdjeMfYhsBD5Lv60KILWEvNEHfmsDs2L0A252351eUoYxAysVaCJVLdH9QFWAmqJDCODUcdoo12+gd6bW2boY0pBVHWL6LQDK5bYWh1V8vFvi0cRpfwv7cJiMX3AZNJuTddHehTIdU0YQ/sQ1dLoF2xQPcCuHKiuCWOY30DHe1OwcClLAhqAKyqlnIbH/8u9ScJpcS4kgp6HKDUdiOgRaRGSiUCRBjzI5gSksMZKqy7Sd51aeg0tgJ+x0TH9YH2Mgsap9N7ENZdEB0bey2DMTrBA1hn56SErNHf3tKtqyL9b6yXEP97/rc+jgD2N1LNUH6RM9AzP3kSipr06RkKOolR7HO768jjWiH1X92jA7dkg7gcNcjqsZCgfqWw0tPXdLg20cF6vnQypg7gLtkazrHAodyYfENPQZsdfnjMZiNu4nJO97D1/sQE+3vNFzrSDOKw+keLECYf7RJwVHeP/j79833oZ0egonYB2FlFE5qj02B/LVOMJQlsB8uNg3Leg4qtZwntsOSNidR0abbZmAK4sCzvt8Yiuz2yrNCJoH5O8XvX/vLeR/BBYTWj0sOPYM/jyxRd5+/JziKAABaPcw/34UA3aj/gLZxZgRCWN6m4m3demanNgsx0P237/Q+Ew5VYnJPkyCY0cIVHoFn2Ay/e7U4P19APbPFXEHX94N6KhEMPG7iwB3+I+O1jd5n6VSgHegxgaSawO6iQCYFgDsPSMsNOcUj4q3sF6KzGaH/0u5PQoAj/8zq6Uc9MoNrGqhYeb2jQo0WlGlXjxtanZLS24/OIN5Gx/2g684BPDQpwlqnkFcxpmP/osnOXrFuu4PqifouQH0eF5qCkvITQbJw/Zvy5mAHWC9oU+cTiYhJmSfKsCyt1cGVxisKu+NymEQIAyaCgud/V09qT3nk/9s/SWsYtha7yNpzBIMM40rCSGaJ9u6lEkl00vXBiEt7p9P5IBCiavynEOv7FgLqPdeqxRiCwuFVMolSIUBcoyfUC2e2FJSAUgYdVGFf0b0Kn2EZlK97yyxrT2MVgvtRikfdaAW8RwEEfN+B7/eK8bBdp7URpbqn1xcrC6d2UjdsKbzCjBFqkKkoZt7Mrhg6YagE7spkqj0jOrWM+UGQ0MUlG2evP1uE1p2xSv4dMK0dna6ENcNUF+xkaJ7B764NdxLCpuvhblltVRAf7vK5qPttJ/9RYFUUSGcLdibnz6mf7WkPO3MkUUhR2mAOuGv8IWw5XG1ZvoVMnjSAZe6T7WYA99GENxoHkMiKxHlCuK5Gd0INrISImHQrQmv6F4mqU/TTQ8nHMDzCRivKySQ8dqkpQgnUMnwIkaAuc6/FGq1hw3b2Sba398BhUwUZSAIO8XZvnuLdY2n6hOXws+gq9BHUKcKFA6kz6FDnpxLPICa3qGhnc97bo1FT/XJk48LrkHJ2CAtBv0RtN97N21plfpXHvZ8gMJb7Zc4cfI6MbPwsW7AilCSXMFIEUEmir8XLEklA0ztYbGpTTGqttp5hpFTTIqUyaAIqvMT9A/x+Ji5ejA4Bhxb/cl1pUdOD6epd3yilIdO6j297xInoiBPuEDW2/UfslDyhGkQs7Wy253bVnlT+SWg89zYIK/9KXFl5fe+jow2rd5FXv8zDPrmfMXiUPt9QBO/iK4QGbX5j/7Rx1c1vzsY8ONbP3lVIaPrhL4+1QrECTN3nyKavGG0gBBtHvTKhGoBHgMXHStFowN+HKrPriYu+OZ05Frn8okQrPaaxoKP1ULCS/cmKFN3gcH7HQlVjraCeQmtjg1pSQxeuqXiSKgLpxc/1OiZsU4+n4lz4hpahGyWBURLi4642n1gn9qz9bIsaCeEPJ0uJmenMWp2tJmIwLQ6VSgDYErOeBCfSj9P4G/vI7oIF+l/n5fp956QgxGvur77ynawAu3G9MdFbJbu49NZnWnnFcQHjxRuhUYvg1U/e84N4JTecciDAKb/KYIFXzloyuE1eYXf54MmhjTq7B/yBToDzzpx3tJCTo3HCmVPYfmtBRe3mPYEE/6RlTIxbf4fSOcaKFGk4gbaUWe44hVk9SZzhW80yfW5QWBHxmtUzvMhfVQli4gZTktIOZd9mjJ5hsbmzttaHQB29Am3dZkmx3g/qvYocyhZ2PXAWsNQiIaf+Q8W/MWPIK7/TjvCx5q2XRp4lVWydMc2wIQkhadDB0xsnw/kSEyGjLKjI4coVIwtubTF3E7MJ6LS6UOsJKj82XVAVPJJcepfewbzE91ivXZvOvYfsmMevwtPpfMzGmC7WJlyW2j0jh7AF1JLmwEJSKYwIvu6DHc3YnyLH9ZdIBnQ+nOVDRiP+REpqv++typYHIvoJyICGA40d8bR7HR2k7do6UQTHF4oriYeIQbxKe4Th6+/l1BjUtS9hqORh3MbgvYrStXTfSwaBOmAVQZzpYNqsAmQyjY56MUqty3c/xH6GuhNvNaG9vGbG6cPtBM8UA3e8r51D0AR9kozKuGGSMgLz3nAHxDNnc7GTwpLj7/6HeWp1iksDeTjwCLpxejuMtpMnGJgsiku1sOACwQ9ukzESiDRN77YNESxR5LphOlcASXA5uIts1LnBIcn1J7BLWs49DMALSnuz95gdOrTZr0u1SeYHinno/pE58xYoXbVO/S+FEMMs5qyWkMnp8Q3ClyTlZP52Y9nq7b8fITPuVXUk9ohG5EFHw4gAEcjFxfKb3xuAsEjx2z1wxNbSZMcgS9GKyW3R6KwJONgtA64LTyxWm8Bvudp0M1FdJPEGopM4Fvg7G/hsptkhCfHFegv4ENwxPeXmYhxwZy7js+BeM27t9ODBMynVCLJ7RWcBMteZJtvjOYHb5lOnCLYWNEMKC59BA7covu1cANa2PXL05iGdufOzkgFqqHBOrgQVUmLEc+Mkz4Rq8O6WkNr7atNkH4M8d+SD1t/tSzt3oFql+neVs+AwEI5JaBJaxARtY2Z4mKoUqxds4UpZ0sv3zIbNoo0J4fihldQTX3XNcuNcZmcrB5LTWMdzeRuAtBk3cZHYQF6gTi3PNuDJ0nmR+4LPLoHvxQIxRgJ9iNNXqf2SYJhcvCtJiVWo85TsyFOuq7EyBPJrAdhEgE0cTq16FQXhYPJFqSfiVn0IQnPOy0LbU4BeG94QjdYNB0CiQ3QaxQqD2ebSMiNjaVaw8WaM4Z5WnzcVDsr4eGweSLa2DE3BWViaxhZFIcSTjgxNCAfelg+hznVOYoe5VqTYs1g7WtfTm3e4/WduC6p+qqAM8H4ZyrJCGpewThTDPe6H7CzX/zQ8Tm+r65HeZn+MsmxUciEWPlAVaK/VBaQBWfoG/aRL/jSZIQfep/89GjasWmbaWzeEZ2R1FOjvyJT37O9B8046SRSKVEnXWlBqbkb5XCS3qFeuE9xb9+frEknxWB5h1D/hruz2iVDEAS7+qkEz5Ot5agHJc7WCdY94Ws61sURcX5nG8UELGBAHZ3i+3VulAyT0nKNNz4K2LBHBWJcTBX1wzf+//u/j/9+//v87+9/l9Lbh/L/uyNYiTsWV2LwsjaA6MxTuzFMqmxW8Jw/+IppdX8t/Clgi1rI1SN0UC/r6tX/4lUc2VV1OQReSeCsjUpKZchw4XUcjHfw6ryCV3R8s6VXm67vp4n+lcPV9gJwmbKQEsmrJi9c2vkwrm8HFbVYNTaRGq8D91t9n5+U+aD/hNtN3HjC/nC/vUoGFSCkXP+NlRcmLUqLbiUBl4LYf1U/CCvwtd3ryCH8gUmGITAxiH1O5rnGTz7y1LuFjmnFGQ1UWuM7HwfXtWl2fPFKklYwNUpF2IL/TmaRETjQiM5SJacI+3Gv5MBU8lP5Io6gWkawpyzNEVGqOdx4YlO1dCvjbWFZWbCmeiFKPSlMKtKcMFLs/KQxtgAHi7NZNCQ32bBAW2mbHflVZ8wXKi1JKVHkW20bnYnl3dKWJeWJOiX3oKPBD6Zbi0ZvSIuWktUHB8qDR8DMMh1ZfkBL9FS9x5r0hBGLJ8pUCJv3NYH+Ae8p40mZWd5m5fhobFjQeQvqTT4VKWIYfRL0tfaXKiVl75hHReuTJEcqVlug+eOIIc4bdIydtn2K0iNZPsYWQvQio2qbO3OqAlPHDDOB7DfjGEfVF51FqqNacd6QmgFKJpMfLp5DHTv4wXlONKVXF9zTJpDV4m1sYZqJPhotcsliZM8yksKkCkzpiXt+EcRQvSQqmBS9WdWkxMTJXPSw94jqI3varCjQxTazjlMH8jTS8ilaW8014/vwA/LNa+YiFoyyx3s/KswP3O8QW1jtq45yTM/DX9a8M4voTVaO2ebvw1EooDw/yg6Y1faY+WwrdVs5Yt0hQ5EwRfYXSFxray1YvSM+kYmlpLG2/9mm1MfmbKHXr44Ih8nVKb1M537ZANUkCtdsPZ80JVKVKabVHCadaLXg+IV8i5GSwpZti0h6diTaKs9sdpUKEpd7jDUpYmHtiX33SKiO3tuydkaxA7pEc9XIQEOfWJlszj5YpL5bKeQyT7aZSBOamvSHl8xsWvgo26IP/bqk+0EJUz+gkkcvlUlyPp2kdKFtt7y5aCdks9ZJJcFp5ZWeaWKgtnXMN3ORwGLBE0PtkEIek5FY2aVssUZHtsWIvnljMVJtuVIjpZup/5VL1yPOHWWHkOMc6YySWMckczD5jUj2mlLVquFaMU8leGVaqeXis+aRRL8zm4WuBk6cyWfGMxgtr8useQEx7k/PvRoZyd9nde1GUCV84gMX8Ogu/BWezYPSR27llzQnA97oo0pYyxobYUJfsj+ysTm9zJ+S4pk0TGo9VTG0KjqYhTmALfoDZVKla2b5yhv241PxFaLJs3i05K0AAIdcGxCJZmT3ZdT7CliR7q+kur7WdQjygYtOWRL9B8E4s4LI8KpAj7bE0dg7DLOaX+MGeAi0hMMSSWZEz+RudXbZCsGYS0QqiXjH9XQbd8sCB+nIVTq7/T/FDS+zWY9q7Z2fdq1tdLb6v3hKKVDAw5gjj6o9r1wHFROdHc18MJp4SJ2Ucvu+iQ9EgkekW8VCM+psM6y+/2SBy8tNN4a3L1MzP+OLsyvESo5gS7IQOnIqMmviJBVc6zbVG1n8eXiA3j46kmvvtJlewwNDrxk4SbJOtP/TV/lIVK9ueShNbbMHfwnLTLLhbZuO79ec5XvfgRwLFK+w1r5ZWW15rVFZrE+wKqNRv5KqsLNfpGgnoUU6Y71NxEmN7MyqwqAQqoIULOw/LbuUB2+uE75gJt+kq1qY4LoxV+qR/zalupea3D5+WMeaRIn0sAI6DDWDh158fqUb4YhAxhREbUN0qyyJYkBU4V2KARXDT65gW3gRsiv7xSPYEKLwzgriWcWgPr0sbZnv7m1XHNFW6xPdGNZUdxFiUYlmXNjDVWuu7LCkX/nVkrXaJhiYktBISC2xgBXQnNEP+cptWl1eG62a7CPXrnrkTQ5BQASbEqUZWMDiZUisKyHDeLFOaJILUo5f6iDt4ZO8MlqaKLto0AmTHVVbkGuyPa1R/ywZsWRoRDoRdNMMHwYTsklMVnlAd2S0282bgMI8fiJpDh69OSL6K3qbo20KfpNMurnYGQSr/stFqZ7hYsxKlLnKAKhsmB8AIpEQ4bd/NrTLTXefsE6ChRmKWjXKVgpGoPs8GAicgKVw4K0qgDgy1A6hFq1WRat3fHF+FkU+b6H4NWpOU3KXTxrIb2qSHAb+qhm8hiSROi/9ofapjxhyKxxntPpge6KL5Z4+WBMYkAcE6+0Hd3Yh2zBsK2MV3iW0Y6cvOCroXlRb2MMJtdWx+3dkFzGh2Pe3DZ9QpSqpaR/rE1ImOrHqYYyccpiLC22amJIjRWVAherTfpQLmo6/K2pna85GrDuQPlH1Tsar8isAJbXLafSwOof4gg9RkAGm/oYpBQQiPUoyDk2BCQ1k+KILq48ErFo4WSRhHLq/y7mgw3+L85PpP6xWr6cgp9sOjYjKagOrxF148uhuaWtjet953fh1IQiEzgC+d2IgBCcUZqgTAICm2bR8oCjDLBsmg+ThyhfD+zBalsKBY1Ce54Y/t9cwfbLu9SFwEgphfopNA3yNxgyDafUM3mYTovZNgPGdd4ZFFOj1vtfFW3u7N+iHEN1HkeesDMXKPyoCDCGVMo4GCCD6PBhQ3dRZIHy0Y/3MaE5zU9mTCrwwnZojtE+qNpMSkJSpmGe0EzLyFelMJqhfFQ7a50uXxZ8pCc2wxtAKWgHoeamR2O7R+bq7IbPYItO0esdRgoTaY38hZLJ5y02oIVwoPokGIzxAMDuanQ1vn2WDQ00Rh6o5QOaCRu99fwDbQcN0XAuqkFpxT/cfz3slGRVokrNU0iqiMAJFEbKScZdmSkTUznC0U+MfwFOGdLgsewRyPKwBZYSmy6U325iUhBQNxbAC3FLKDV9VSOuQpOOukJ/GAmu/tyEbX9DgEp6dv1zoU0IqzpG6gssSjIYRVPGgU1QAQYRgIT8gEV0EXr1sqeh2I6rXjtmoCYyEDCe/PkFEi/Q48FuT29p557iN+LCwk5CK/CZ2WdAdfQZh2Z9QGrzPLSNRj5igUWzl9Vi0rCqH8G1Kp4QMLkuwMCAypdviDXyOIk0AHTM8HBYKh3b0/F+DxoNj4ZdoZfCpQVdnZarqoMaHWnMLNVcyevytGsrXQEoIbubqWYNo7NRHzdc0zvT21fWVirj7g36iy6pxogfvgHp1xH1Turbz8QyyHnXeBJicpYUctbzApwzZ1HT+FPEXMAgUZetgeGMwt4G+DHiDT2Lu+PT21fjJCAfV16a/Wu1PqOkUHSTKYhWW6PhhHUlNtWzFnA7MbY+r64vkwdpfNB2JfWgWXAvkzd42K4lN9x7Wrg4kIKgXCb4mcW595MCPJ/cTfPAMQMFWwnqwde4w8HZYJFpQwcSMhjVz4B8p6ncSCN1X4klxoIH4BN2J6taBMj6lHkAOs8JJAmXq5xsQtrPIPIIp/HG6i21xMGcFgqDXSRF0xQg14d2uy6HgKE13LSvQe52oShF5Jx1R6avyL4thhXQZHfC94oZzuPUBKFYf1VvDaxIrtV6dNGSx7DO0i1p6CzBkuAmEqyWceQY7F9+U0ObYDzoa1iKao/cOD/v6Q9gHrrr1uCeOk8fST9MG23Ul0KmM3r+Wn6Hi6WAcL7gEeaykicvgjzkjSwFsAXIR81Zx4QJ6oosVyJkCcT+4xAldCcihqvTf94HHUPXYp3REIaR4dhpQF6+FK1H0i9i7Pvh8owu3lO4PT1iuqu+DkL2Bj9+kdfGAg2TXw03iNHyobxofLE2ibjsYDPgeEQlRMR7afXbSGQcnPjI2D+sdtmuQ771dbASUsDndU7t58jrrNGRzISvwioAlHs5FA+cBE5Ccznkd8NMV6BR6ksnKLPZnMUawRDU1MZ/ib3xCdkTblHKu4blNiylH5n213yM0zubEie0o4JhzcfAy3H5qh2l17uLooBNLaO+gzonTH2uF8PQu9EyH+pjGsACTMy4cHzsPdymUSXYJOMP3yTkXqvO/lpvt0cX5ekDEu9PUfBeZODkFuAjXCaGdi6ew4qxJ8PmFfwmPpkgQjQlWqomFY6UkjmcnAtJG75EVR+NpzGpP1Ef5qUUbfowrC3zcSLX3BxgWEgEx/v9cP8H8u1Mvt9/rMDYf6sjwU1xSOPBgzFEeJLMRVFtKo5QHsUYT8ZRLCah27599EuqoC9PYjYO6aoAMHB8X1OHwEAYouHfHB3nyb2B+SnZxM/vw/bCtORjLMSy5aZoEpvgdGvlJfNPFUu/p7Z4VVK1hiI0/UTuB3ZPq4ohEbm7Mntgc1evEtknaosgZSwnDC2BdMmibpeg48X8Ixl+/8+xXdbshQXUPPvx8jT3fkELivHSmqbhblfNFShWAyQnJ3WBU6SMYSIpTDmHjdLVAdlADdz9gCplZw6mTiHqDwIsxbm9ErGusiVpg2w8Q3khKV/R9Oj8PFeF43hmW/nSd99nZzhyjCX3QOZkkB6BsH4H866WGyv9E0hVAzPYah2tkRfQZMmP2rinfOeQalge0ovhduBjJs9a1GBwReerceify49ctOh5/65ATYuMsAkVltmvTLBk4oHpdl6i+p8DoNj4Fb2vhdFYer2JSEilEwPd5n5zNoGBXEjreg/wh2NFnNRaIUHSOXa4eJRwygZoX6vnWnqVdCRT1ARxeFrNBJ+tsdooMwqnYhE7zIxnD8pZH+P0Nu1wWxCPTADfNWmqx626IBJJq6NeapcGeOmbtXvl0TeWG0Y7OGGV4+EHTtNBIT5Wd0Bujl7inXgZgfXTM5efD3qDTJ54O9v3Bkv+tdIRlq1kXcVD0BEMirmFxglNPt5pedb1AnxuCYMChUykwsTIWqT23XDpvTiKEru1cTcEMeniB+HQDehxPXNmkotFdwUPnilB/u4Nx5Xc6l8J9jH1EgKZUUt8t8cyoZleDBEt8oibDmJRAoMKJ5Oe9CSWS5ZMEJvacsGVdXDWjp/Ype5x0p9PXB2PAwt2LRD3d+ftNgpuyvxlP8pB84oB1i73vAVpwyrmXW72hfW6Dzn9Jkj4++0VQ4d0KSx1AsDA4OtXXDo63/w+GD+zC7w5SJaxsmnlYRQ4dgdjA7tTl2KNLnpJ+mvkoDxtt1a4oPaX3EVqj96o9sRKBQqU7ZOiupeAIyLMD+Y3YwHx30XWHB5CQiw7q3mj1EDlP2eBsZbz79ayUMbyHQ7s8gu4Lgip1LiGJj7NQj905/+rgUYKAA5qdrlHKIknWmqfuR+PB8RdBkDg/NgnlT89G72h2NvySnj7UyBwD+mi/IWs1xWbxuVwUIVXun5cMqBtFbrccI+DILjsVQg6eeq0itiRfedn89CvyFtpkxaauEvSANuZmB1p8FGPbU94J9medwsZ9HkUYjmI7OH5HuxendLbxTaYrPuIfE2ffXFKhoNBUp33HsFAXmCV/Vxpq5AYgFoRr5Ay93ZLRlgaIPjhZjXZZChT+aE5iWAXMX0oSFQEtwjiuhQQItTQX5IYrKfKB+queTNplR1Hoflo5/I6aPPmACwQCE2jTOYo5Dz1cs7Sod0KTG/3kEDGk3kUaUCON19xSJCab3kNpWZhSWkO8l+SpW70Wn3g0ciOIJO5JXma6dbos6jyisuxXwUUhj2+1uGhcvuliKtWwsUTw4gi1c/diEEpZHoKoxTBeMDmhPhKTx7TXWRakV8imJR355DcIHkR9IREHxohP4TbyR5LtFU24umRPRmEYHbpe1LghyxPx7YgUHjNbbQFRQhh4KeU1EabXx8FS3JAxp2rwRDoeWkJgWRUSKw6gGP5U2PuO9V4ZuiKXGGzFQuRuf+tkSSsbBtRJKhCi3ENuLlXhPbjTKD4djXVnfXFds6Zb+1XiUrRfyayGxJq1+SYBEfbKlgjiSmk0orgTqzSS+DZ5rTqsJbttiNtp+KMqGE2AHGFw6jQqM5vD6vMptmXV9OAjq49Uf/Lx9Opam+Hn5O9p8qoBBAQixzQZ4eNVkO9sPzJAMyR1y4/RCQQ1s0pV5KAU5sKLw3tkcFbI/JqrjCsK4Mw+W8aod4lioYuawUiCyVWBE/qPaFi5bnkgpfu/ae47174rI1fqQoTbW0HrU6FAejq7ByM0V4zkZTg02/YJK2N7hUQRCeZ4BIgSEqgD8XsjzG6LIsSbuHoIdz/LhFzbNn1clci1NHWJ0/6/O8HJMdIpEZbqi1RrrFfoo/rI/7ufm2MPG5lUI0IYJ4MAiHRTSOFJ2oTverFHYXThkYFIoyFx6rMYFgaOKM4xNWdlOnIcKb/suptptgTOTdVIf4YgdaAjJnIAm4qNNHNQqqAzvi53GkyRCEoseUBrHohZsjUbkR8gfKtc/+Oa72lwxJ8Mq6HDfDATbfbJhzeIuFQJSiw1uZprHlzUf90WgqG76zO0eCB1WdPv1IT6sNxxh91GEL2YpgC97ikFHyoaH92ndwduqZ6IYjkg20DX33MWdoZk7QkcKUCgisIYslOaaLyvIIqRKWQj16jE1DlQWJJaPopWTJjXfixEjRJJo8g4++wuQjbq+WVYjsqCuNIQW3YjnxKe2M5ZKEqq+cX7ZVgnkbsU3RWIyXA1rxv4kGersYJjD//auldXGmcEbcfTeF16Y1708FB1HIfmWv6dSFi6oD4E+RIjCsEZ+kY7dKnwReJJw3xCjKvi3kGN42rvyhUlIz0Bp+fNSV5xwFiuBzG296e5s/oHoFtUyUplmPulIPl+e1CQIQVtjlzLzzzbV+D/OVQtYzo5ixtMi5BmHuG4N/uKfJk5UIREp7+12oZlKtPBomXSzAY0KgtbPzzZoHQxujnREUgBU+O/jKKhgxVhRPtbqyHiUaRwRpHv7pgRPyUrnE7fYkVblGmfTY28tFCvlILC04Tz3ivkNWVazA+OsYrxvRM/hiNn8Fc4bQBeUZABGx5S/xFf9Lbbmk298X7iFg2yeimvsQqqJ+hYbt6uq+Zf9jC+Jcwiccd61NKQtFvGWrgJiHB5lwi6fR8KzYS7EaEHf/ka9EC7H8D+WEa3TEACHBkNSj/cXxFeq4RllC+fUFm2xtstYLL2nos1DfzsC9vqDDdRVcPA3Ho95aEQHvExVThXPqym65llkKlfRXbPTRiDepdylHjmV9YTWAEjlD9DdQnCem7Aj/ml58On366392214B5zrmQz/9ySG2mFqEwjq5sFl5tYJPw5hNz8lyZPUTsr5E0F2C9VMPnZckWP7+mbwp/BiN7f4kf7vtGnZF2JGvjK/sDX1RtcFY5oPQnE4lIAYV49U3C9SP0LCY/9i/WIFK9ORjzM9kG/KGrAuwFmgdEpdLaiqQNpCTGZVuAO65afkY1h33hrqyLjZy92JK3/twdj9pafFcwfXONmPQWldPlMe7jlP24Js0v9m8bIJ9TgS2IuRvE9ZVRaCwSJYOtAfL5H/YS4FfzKWKbek+GFulheyKtDNlBtrdmr+KU+ibHTdalzFUmMfxw3f36x+3cQbJLItSilW9cuvZEMjKw987jykZRlsH/UI+HlKfo2tLwemBEeBFtmxF2xmItA/dAIfQ+rXnm88dqvXa+GapOYVt/2waFimXFx3TC2MUiOi5/Ml+3rj/YU6Ihx2hXgiDXFsUeQkRAD6wF3SCPi2flk7XwKAA4zboqynuELD312EJ88lmDEVOMa1W/K/a8tGylZRMrMoILyoMQzzbDJHNZrhH77L9qSC42HVmKiZ5S0016UTp83gOhCwz9XItK9fgXfK3F5d7nZCBUekoLxrutQaPHa16Rjsa0gTrzyjqTnmcIcrxg6X6dkKiucudc0DD5W4pJPf0vuDW8r5/uw24YfMuxFRpD2ovT2mFX79xH6Jf+MVdv2TYqR6/955QgVPe3JCD/WjAYcLA9tpXgFiEjge2J5ljeI/iUzg91KQuHkII4mmHZxC3XQORLAC6G7uFn5LOmlnXkjFdoO976moNTxElS8HdxWoPAkjjocDR136m2l+f5t6xaaNgdodOvTu0rievnhNAB79WNrVs6EsPgkgfahF9gSFzzAd+rJSraw5Mllit7vUP5YxA843lUpu6/5jAR0RvH4rRXkSg3nE+O5GFyfe+L0s5r3k05FyghSFnKo4TTgs07qj4nTLqOYj6qaW9knJTDkF5OFMYbmCP+8H16Ty482OjvERV6OFyw043L9w3hoJi408sR+SGo1WviXUu8d7qS+ehKjpKwxeCthsm2LBFSFeetx0x4AaKPxtp3CxdWqCsLrB1s/j5TAhc1jNZsXWl6tjo/WDoewxzg8T8NnhZ1niUwL/nhfygLanCnRwaFGDyLw+sfZhyZ1UtYTp8TYB6dE7R3VsKKH95CUxJ8u8N+9u2/9HUNKHW3x3w5GQrfOPafk2w5qZq8MaHT0ebeY3wIsp3rN9lrpIsW9c1ws3VNV+JwNz0Lo9+V7zZr6GD56We6gWVIvtmam5GPPkVAbr74r6SwhuL+TRXtW/0pgyX16VNl4/EAD50TnUPuwrW6OcUO2VlWXS0inq872kk7GUlW6o/ozFKq+Sip6LcTtSDfDrPTcCHhx75H8BeRon+KG2wRwzfDgWhALmiWOMO6h3pm1UCZEPEjScyk7tdLx6WrdA2N1QTPENvNnhCQjW6kl057/qv7IwRryHrZBCwVSbLLnFRiHdTwk8mlYixFt1slEcPD7FVht13HyqVeyD55HOXrh2ElAxJyinGeoFzwKA91zfrdLvDxJSjzmImfvTisreI25EDcVfGsmxLVbfU8PGe/7NmWWKjXcdTJ11jAlVIY/Bv/mcxg/Q10vCHwKG1GW/XbJq5nxDhyLqiorn7Wd7VEVL8UgVzpHMjQ+Z8DUgSukiVwWAKkeTlVVeZ7t1DGnCgJVIdBPZAEK5f8CDyDNo7tK4/5DBjdD5MPV86TaEhGsLVFPQSI68KlBYy84FievdU9gWh6XZrugvtCZmi9vfd6db6V7FmoEcRHnG36VZH8N4aZaldq9zZawt1uBFgxYYx+Gs/qW1jwANeFy+LCoymyM6zgG7j8bGzUyLhvrbJkTYAEdICEb4kMKusKT9V3eIwMLsjdUdgijMc+7iKrr+TxrVWG0U+W95SGrxnxGrE4eaJFfgvAjUM4SAy8UaRwE9j6ZQH5qYAWGtXByvDiLSDfOD0yFA3UCMKSyQ30fyy1mIRg4ZcgZHLNHWl+c9SeijOvbOJxoQy7lTN2r3Y8p6ovxvUY74aOYbuVezryqXA6U+fcp6wSV9X5/OZKP18tB56Ua0gMyxJI7XyNT7IrqN8GsB9rL/kP5KMrjXxgqKLDa+V5OCH6a5hmOWemMUsea9vQl9t5Oce76PrTyTv50ExOqngE3PHPfSL//AItPdB7kGnyTRhVUUFNdJJ2z7RtktZwgmQzhBG/G7QsjZmJfCE7k75EmdIKH7xlnmDrNM/XbTT6FzldcH/rcRGxlPrv4qDScqE7JSmQABJWqRT/TUcJSwoQM+1jvDigvrjjH8oeK2in1S+/yO1j8xAws/T5u0VnIvAPqaE1atNuN0cuRliLcH2j0nTL4JpcR7w9Qya0JoaHgsOiALLCCzRkl1UUESz+ze/gIXHGtDwgYrK6pCFKJ1webSDog4zTlPkgXZqxlQDiYMjhDpwTtBW2WxthWbov9dt2X9XFLFmcF+eEc1UaQ74gqZiZsdj63pH1qcv3Vy8JYciogIVKsJ8Yy3J9w/GhjWVSQAmrS0BPOWK+RKV+0lWqXgYMnIFwpcZVD7zPSp547i9HlflB8gVnSTGmmq1ClO081OW/UH11pEQMfkEdDFzjLC1Cdo/BdL3s7cXb8J++Hzz1rhOUVZFIPehRiZ8VYu6+7Er7j5PSZu9g/GBdmNzJmyCD9wiswj9BZw+T3iBrg81re36ihMLjoVLoWc+62a1U/7qVX5CpvTVF7rocSAKwv4cBVqZm7lLDS/qoXs4fMs/VQi6BtVbNA3uSzKpQfjH1o3x4LrvkOn40zhm6hjduDglzJUwA0POabgdXIndp9fzhOo23Pe+Rk9GSLX0d71Poqry8NQDTzNlsa+JTNG9+UrEf+ngxCjGEsDCc0bz+udVRyHQI1jmEO3S+IOQycEq7XwB6z3wfMfa73m8PVRp+iOgtZfeSBl01xn03vMaQJkyj7vnhGCklsCWVRUl4y+5oNUzQ63B2dbjDF3vikd/3RUMifPYnX5Glfuk2FsV/7RqjI9yKTbE8wJY+74p7qXO8+dIYgjtLD/N8TJtRh04N9tXJA4H59IkMmLElgvr0Q5OCeVfdAt+5hkh4pQgfRMHpL74XatLQpPiOyHRs/OdmHtBf8nOZcxVKzdGclIN16lE7kJ+pVMjspOI+5+TqLRO6m0ZpNXJoZRv9MPDRcAfJUtNZHyig/s2wwReakFgPPJwCQmu1I30/tcBbji+Na53i1W1N+BqoY7Zxo+U/M9XyJ4Ok2SSkBtoOrwuhAY3a03Eu6l8wFdIG1cN+e8hopTkiKF093KuH/BcB39rMiGDLn6XVhGKEaaT/vqb/lufuAdpGExevF1+J9itkFhCfymWr9vGb3BTK4j598zRH7+e+MU9maruZqb0pkGxRDRE1CD4Z8LV4vhgPidk5w2Bq816g3nHw1//j3JStz7NR9HIWELO8TMn3QrP/zZp//+Dv9p429/ogv+GATR+n/UdF+ns9xNkXZQJXY4t9jMkJNUFygAtzndXwjss+yWH9HAnLQQfhAskdZS2l01HLWv7L7us5uTH409pqitvfSOQg/c+Zt7k879P3K9+WV68n7+3cZfuRd/dDPP/03rn+d+/nBvWfgDlt8+LzjqJ/vx3CnNOwiXhho778C96iD+1TBvRZYeP+EH81LE0vVwOOrmCLB3iKzI1x+vJEsrPH4uF0UB4TJ4X3uDfOCo3PYpYe0MF4bouh0DQ/l43fxUF7Y+dpWuvTSffB0yO2UQUETI/LwCZE3BvnevJ7c9zUlY3H58xzke6DNFDQG8n0WtDN4LAYN4nogKav1ezOfK/z+t6tsCTp+dhx4ymjWuCJk1dEUifDP+HyS4iP/Vg9B2jTo9L4NbiBuDS4nuuHW6H+JDQn2JtqRKGkEQPEYE7uzazXIkcxIAqUq1esasZBETlEZY7y7Jo+RoV/IsjY9eIMkUvr42Hc0xqtsavZvhz1OLwSxMOTuqzlhb0WbdOwBH9EYiyBjatz40bUxTHbiWxqJ0uma19qhPruvcWJlbiSSH48OLDDpaHPszvyct41ZfTu10+vjox6kOqK6v0K/gEPphEvMl/vwSv+A4Hhm36JSP9IXTyCZDm4kKsqD5ay8b1Sad/vaiyO5N/sDfEV6Z4q95E+yfjxpqBoBETW2C7xl4pIO2bDODDFurUPwE7EWC2Uplq+AHmBHvir2PSgkR12/Ry65O0aZtQPeXi9mTlF/Wj5GQ+vFkYyhXsLTjrBSP9hwk4GPqDP5rBn5/l8b0mLRAvRSzXHc293bs3s8EsdE3m2exxidWVB4joHR+S+dz5/W+v00K3TqN14CDBth8eWcsTbiwXPsygHdGid0PEdy6HHm2v/IUuV5RVapYmzGsX90mpnIdNGcOOq64Dbc5GUbYpD9M7S+6cLY//QmjxFLP5cuTFRm3vA5rkFZroFnO3bjHF35uU3s8mvL7Tp9nyTc4mymTJ5sLIp7umSnGkO23faehtz3mmTS7fbVx5rP7x3HXIjRNeq/A3xCs9JNB08c9S9BF2O3bOur0ItslFxXgRPdaapBIi4dRpKGxVz7ir69t/bc9qTxjvtOyGOfiLGDhR4fYywHv1WdOplxIV87TpLBy3Wc0QP0P9s4G7FBNOdITS/tep3o3h1TEa5XDDii7fWtqRzUEReP2fbxz7bHWWJdbIOxOUJZtItNZpTFRfj6vm9sYjRxQVO+WTdiOhdPeTJ+8YirPvoeL88l5iLYOHd3b/Imkq+1ZN1El3UikhftuteEYxf1Wujof8Pr4ICTu5ezZyZ4tHQMxlzUHLYO2VMOoNMGL/20S5i2o2obfk+8qqdR7xzbRDbgU0lnuIgz4LelQ5XS7xbLuSQtNS95v3ZUOdaUx/Qd8qxCt6xf2E62yb/HukLO6RyorV8KgYl5YNc75y+KvefrxY+lc/64y9kvWP0a0bDz/rojq+RWjO06WeruWqNFU7r3HPIcLWRql8ICZsz2Ls/qOm/CLn6++X+Qf7mGspYCrZod/lpl6Rw4xN/yuq8gqV4B6aHk1hVE1SfILxWu5gvXqbfARYQpspcxKp1F/c8XOPzkZvmoSw+vEqBLdrq1fr3wAPv5NnM9i8F+jdAuxkP5Z71c6uhK3enlnGymr7UsWZKC12qgUiG8XXGQ9mxnqz4GSIlybF9eXmbqj2sHX+a1jf0gRoONHRdRSrIq03Ty89eQ1GbV/Bk+du4+V15zls+vvERvZ4E7ZbnxWTVjDjb4o/k8jlw44pTIrUGxxuJvBeO+heuhOjpFsO6lVJ/aXnJDa/bM0Ql1cLbXE/Pbv3EZ3vj3iVrB5irjupZTzlnv677NrI9UNYNqbPgp/HZXS+lJmk87wec+7YOxTDo2aw2l3NfDr34VNlvqWJBknuK7oSlZ6/T10zuOoPZOeoIk81N+sL843WJ2Q4Z0fZ3scsqC/JV2fuhWi1jGURSKZV637lf53Xnnx16/vKEXY89aVJ0fv91jGdfG+G4+sniwHes4hS+udOr4RfhFhG/F5gUG35QaU+McuLmclb5ZWmR+sG5V6nf+PxYzlrnFGxpZaK8eqqVo0NfmAWoGfXDiT/FnUbWvzGDOTr8aktOZWg4BYvz5YH12ZbfCcGtNk+dDAZNGWvHov+PIOnY9Prjg8h/wLRrT69suaMVZ5bNuK00lSVpnqSX1NON/81FoP92rYndionwgOiA8WMf4vc8l15KqEEG4yAm2+WAN5Brfu1sq9suWYqgoajgOYt/JCk1gC8wPkK+XKCtRX6TAtgvrnuBgNRmn6I8lVDipOVB9kX6Oxkp4ZKyd1M6Gj8/v2U7k+YQBL95Kb9PQENucJb0JlW3b5tObN7m/Z1j1ev388d7o15zgXsI9CikAGAViR6lkJv7nb4Ak40M2G8TJ447kN+pvfHiOFjSUSP6PM+QfbAywKJCBaxSVxpizHseZUyUBhq59vFwrkyGoRiHbo0apweEZeSLuNiQ+HAekOnarFg00dZNXaPeoHPTRR0FmEyqYExOVaaaO8c0uFUh7U4e/UxdBmthlBDgg257Q33j1hA7HTxSeTTSuVnPZbgW1nodwmG16aKBDKxEetv7D9OjO0JhrbJTnoe+kcGoDJazFSO8/fUN9Jy/g4XK5PUkw2dgPDGpJqBfhe7GA+cjzfE/EGsMM+FV9nj9IAhrSfT/J3QE5TEIYyk5UjsI6ZZcCPr6A8FZUF4g9nnpVmjX90MLSQysIPD0nFzqwCcSJmIb5mYv2Cmk+C1MDFkZQyCBq4c/Yai9LJ6xYkGS/x2s5/frIW2vmG2Wrv0APpCdgCA9snFvfpe8uc0OwdRs4G9973PGEBnQB5qKrCQ6m6X/H7NInZ7y/1674/ZXOVp7OeuCRk8JFS516VHrnH1HkIUIlTIljjHaQtEtkJtosYul77cVwjk3gW1Ajaa6zWeyHGLlpk3VHE2VFzT2yI/EvlGUSz2H9zYE1s4nsKMtMqNyKNtL/59CpFJki5Fou6VXGm8vWATEPwrUVOLvoA8jLuwOzVBCgHB2Cr5V6OwEWtJEKokJkfc87h+sNHTvMb0KVTp5284QTPupoWvQVUwUeogZR3kBMESYo0mfukewRVPKh5+rzLQb7HKjFFIgWhj1w3yN/qCNoPI8XFiUgBNT1hCHBsAz8L7Oyt8wQWUFj92ONn/APyJFg8hzueqoJdNj57ROrFbffuS/XxrSXLTRgj5uxZjpgQYceeMc2wJrahReSKpm3QjHfqExTLAB2ipVumE8pqcZv8LYXQiPHHsgb5BMW8zM5pvQit+mQx8XGaVDcfVbLyMTlY8xcfmm/RSAT/H09UQol5gIz7rESDmnrQ4bURIB4iRXMDQwxgex1GgtDxKp2HayIkR+E/aDmCttNm2C6lytWdfOVzD6X2SpDWjQDlMRvAp1symWv4my1bPCD+E1EmGnMGWhNwmycJnDV2WrQNxO45ukEb08AAffizYKVULp15I4vbNK5DzWwCSUADfmKhfGSUqii1L2UsE8rB7mLuHuUJZOx4+WiizHBJ/hwboaBzhpNOVvgFTf5cJsHef7L1HCI9dOUUbb+YxUJWn6dYOLz+THi91kzY5dtO5c+grX7v0jEbsuoOGnoIreDIg/sFMyG+TyCLIcAWd1IZ1UNFxE8Uie13ucm40U2fcxC0u3WLvLOxwu+F7MWUsHsdtFQZ7W+nlfCASiAKyh8rnP3EyDByvtJb6Kax6/HkLzT9SyEyTMVM1zPtM0MJY14DmsWh4MgD15Ea9Hd00AdkTZ0EiG5NAGuIBzQJJ0JR0na+OB7lQA6UKxMfihIQ7GCCnVz694QvykWXTxpS2soDu+smru1UdIxSvAszBFD1c8c6ZOobA8bJiJIvuycgIXBQIXWwhyTgZDQxJTRXgEwRNAawGSXO0a1DKjdihLVNp/taE/xYhsgwe+VpKEEB4LlraQyE84gEihxCnbfoyOuJIEXy2FIYw+JjRusybKlU2g/vhTSGTydvCvXhYBdtAXtS2v7LkHtmXh/8fly1do8FI/D0f8UbzVb5h+KRhMGSAmR2mhi0YG/uj7wgxcfzCrMvdjitUIpXDX8ae2JcF/36qUWIMwN6JsjaRGNj+jEteGDcFyTUb8X/NHSucKMJp7pduxtD6KuxVlyxxwaeiC1FbGBESO84lbyrAugYxdl+2N8/6AgWpo/IeoAOcsG35IA/b3AuSyoa55L7llBLlaWlEWvuCFd8f8NfcTUgzJv6CbB+6ohWwodlk9nGWFpBAOaz5uEW5xBvmjnHFeDsb0mXwayj3mdYq5gxxNf3H3/tnCgHwjSrpSgVxLmiTtuszdRUFIsn6LiMPjL808vL1uQhDbM7aA43mISXReqjSskynIRcHCJ9qeFopJfx9tqyUoGbSwJex/0aDE3plBPGtNBYgWbdLom3+Q/bjdizR2/AS/c/dH/d3G7pyl1qDXgtOFtEqidwLqxPYtrNEveasWq3vPUUtqTeu8gpov4bdOQRI2kneFvRNMrShyVeEupK1PoLDPMSfWMIJcs267mGB8X9CehQCF0gIyhpP10mbyM7lwW1e6TGvHBV1sg/UyTghHPGRqMyaebC6pbB1WKNCQtlai1GGvmq9zUKaUzLaXsXEBYtHxmFbEZ2kJhR164LhWW2Tlp1dhsGE7ZgIWRBOx3Zcu2DxgH+G83WTPceKG0TgQKKiiNNOlWgvqNEbnrk6fVD+AqRam2OguZb0YWSTX88N+i/ELSxbaUUpPx4vJUzYg/WonSeA8xUK6u7DPHgpqWpEe6D4cXg5uK9FIYVba47V/nb+wyOtk+zG8RrS4EA0ouwa04iByRLSvoJA2FzaobbZtXnq8GdbfqEp5I2dpfpj59TCVif6+E75p665faiX8gS213RqBxTZqfHP46nF6NSenOneuT+vgbLUbdTH2/t0REFXZJOEB6DHvx6N6g9956CYrY/AYcm9gELJXYkrSi+0F0geKDZgOCIYkLU/+GOW5aGj8mvLFgtFH5+XC8hvAE3CvHRfl4ofM/Qwk4x2A+R+nyc9gNu/9Tem7XW4XRnyRymf52z09cTOdr+PG6+P/Vb4QiXlwauc5WB1z3o+IJjlbxI8MyWtSzT+k4sKVbhF3xa+vDts3NxXa87iiu+xRH9cAprnOL2h6vV54iQRXuOAj1s8nLFK8gZ70ThIQcWdF19/2xaJmT0efrkNDkWbpAQPdo92Z8+Hn/aLjbOzB9AI/k12fPs9HhUNDJ1u6ax2VxD3R6PywN7BrLJ26z6s3QoMp76qzzwetrDABKSGkfW5PwS1GvYNUbK6uRqxfyVGNyFB0E+OugMM8kKwmJmupuRWO8XkXXXQECyRVw9UyIrtCtcc4oNqXqr7AURBmKn6Khz3eBN96LwIJrAGP9mr/59uTOSx631suyT+QujDd4beUFpZ0kJEEnjlP+X/Kr2kCKhnENTg4BsMTOmMqlj2WMFLRUlVG0fzdCBgUta9odrJfpVdFomTi6ak0tFjXTcdqqvWBAzjY6hVrH9sbt3Z9gn+AVDpTcQImefbB4edirjzrsNievve4ZT4EUZWV3TxEsIW+9MT/RJoKfZZYSRGfC1CwPG/9rdMOM8qR/LUYvw5f/emUSoD7YSFuOoqchdUg2UePd1eCtFSKgxLSZ764oy4lvRCIH6bowPxZWwxNFctksLeil47pfevcBipkkBIc4ngZG+kxGZ71a72KQ7VaZ6MZOZkQJZXM6kb/Ac0/XkJx8dvyfJcWbI3zONEaEPIW8GbkYjsZcwy+eMoKrYjDmvEEixHzkCSCRPRzhOfJZuLdcbx19EL23MA8rnjTZZ787FGMnkqnpuzB5/90w1gtUSRaWcb0eta8198VEeZMUSfIhyuc4/nywFQ9uqn7jdqXh+5wwv+RK9XouNPbYdoEelNGo34KyySwigsrfCe0v/PlWPvQvQg8R0KgHO18mTVThhQrlbEQ0Kp/JxPdjHyR7E1QPw/ut0r+HDDG7BwZFm9IqEUZRpv2WpzlMkOemeLcAt5CsrzskLGaVOAxyySzZV/D2EY7ydNZMf8e8VhHcKGHAWNszf1EOq8fNstijMY4JXyATwTdncFFqcNDfDo+mWFvxJJpc4sEZtjXyBdoFcxbUmniCoKq5jydUHNjYJxMqN1KzYV62MugcELVhS3Bnd+TLLOh7dws/zSXWzxEb4Nj4aFun5x4kDWLK5TUF/yCXB/cZYvI9kPgVsG2jShtXkxfgT+xzjJofXqPEnIXIQ1lnIdmVzBOM90EXvJUW6a0nZ/7XjJGl8ToO3H/fdxnxmTNKBZxnkpXLVgLXCZywGT3YyS75w/PAH5I/jMuRspej8xZObU9kREbRA+kqjmKRFaKGWAmFQspC+QLbKPf0RaK3OXvBSWqo46p70ws/eZpu6jCtZUgQy6r4tHMPUdAgWGGUYNbuv/1a6K+MVFsd3T183+T8capSo6m0+Sh57fEeG/95dykGJBQMj09DSW2bY0mUonDy9a8trLnnL5B5LW3Nl8rJZNysO8Zb+80zXxqUGFpud3Qzwb7bf+8mq6x0TAnJU9pDQR9YQmZhlna2xuxJt0aCO/f1SU8gblOrbIyMsxTlVUW69VJPzYU2HlRXcqE2lLLxnObZuz2tT9CivfTAUYfmzJlt/lOPgsR6VN64/xQd4Jlk/RV7UKVv2Gx/AWsmTAuCWKhdwC+4HmKEKYZh2Xis4KsUR1BeObs1c13wqFRnocdmuheaTV30gvVXZcouzHKK5zwrN52jXJEuX6dGx3BCpV/++4f3hyaW/cQJLFKqasjsMuO3B3WlMq2gyYfdK1e7L2pO/tRye2mwzwZPfdUMrl5wdLqdd2Kv/wVtnpyWYhd49L6rsOV+8HXPrWH2Kup89l2tz6bf80iYSd+V4LROSOHeamvexR524q4r43rTmtFzQvArpvWfLYFZrbFspBsXNUqqenjxNNsFXatZvlIhk7teUPfK+YL32F8McTnjv0BZNppb+vshoCrtLXjIWq3EJXpVXIlG6ZNL0dh6qEm2WMwDjD3LfOfkGh1/czYc/0qhiD2ozNnH4882MVVt3JbVFkbwowNCO3KL5IoYW5wlVeGCViOuv1svZx7FbzxKzA4zGqBlRRaRWCobXaVq4yYCWbZf8eiJwt3OY+MFiSJengcFP2t0JMfzOiJ7cECvpx7neg1Rc5x+7myPJOXt2FohVRyXtD+/rDoTOyGYInJelZMjolecVHUhUNqvdZWg2J2t0jPmiLFeRD/8fOT4o+NGILb+TufCo9ceBBm3JLVn+MO2675n7qiEX/6W+188cYg3Zn5NSTjgOKfWFSAANa6raCxSoVU851oJLY11WIoYK0du0ec5E4tCnAPoKh71riTsjVIp3gKvBbEYQiNYrmH22oLQWA2AdwMnID6PX9b58dR2QKo4qag1D1Z+L/FwEKTR7osOZPWECPJIHQqPUsM5i/CH5YupVPfFA5pHUBcsesh8eO5YhyWnaVRPZn/BmdXVumZWPxMP5e28zm2uqHgFoT9CymHYNNrzrrjlXZM06HnzDxYNlI5b/QosxLmmrqDFqmogQdqk0WLkUceoAvQxHgkIyvWU69BPFr24VB6+lx75Rna6dGtrmOxDnvBojvi1/4dHjVeg8owofPe1cOnxU1ioh016s/Vudv9mhV9f35At+Sh28h1bpp8xhr09+vf47Elx3Ms6hyp6QvB3t0vnLbOhwo660cp7K0vvepabK7YJfxEWWfrC2YzJfYOjygPwfwd/1amTqa0hZ5ueebhWYVMubRTwIjj+0Oq0ohU3zfRfuL8gt59XsHdwKtxTQQ4Y2qz6gisxnm2UdlmpEkgOsZz7iEk6QOt8BuPwr+NR01LTqXmJo1C76o1N274twJvl+I069TiLpenK/miRxhyY8jvYV6W1WuSwhH9q7kuwnJMtm7IWcqs7HsnyHSqWXLSpYtZGaR1V3t0gauninFPZGtWskF65rtti48UV9uV9KM8kfDYs0pgB00S+TlzTXV6P8mxq15b9En8sz3jWSszcifZa/NuufPNnNTb031pptt0+sRSH/7UG8pzbsgtt3OG3ut7B9JzDMt2mTZuyRNIV8D54TuTrpNcHtgmMlYJeiY9XS83NYJicjRjtJSf9BZLsQv629QdDsKQhTK5CnXhpk7vMNkHzPhm0ExW/VCGApHfPyBagtZQTQmPHx7g5IXXsrQDPzIVhv2LB6Ih138iSDww1JNHrDvzUxvp73MsQBVhW8EbrReaVUcLB1R3PUXyaYG4HpJUcLVxMgDxcPkVRQpL7VTAGabDzbKcvg12t5P8TSGQkrj/gOrpnbiDHwluA73xbXts/L7u468cRWSWRtgTwlQnA47EKg0OiZDgFxAKQQUcsbGomITgeXUAAyKe03eA7Mp4gnyKQmm0LXJtEk6ddksMJCuxDmmHzmVhO+XaN2A54MIh3niw5CF7PwiXFZrnA8wOdeHLvvhdoqIDG9PDI7UnWWHq526T8y6ixJPhkuVKZnoUruOpUgOOp3iIKBjk+yi1vHo5cItHXb1PIKzGaZlRS0g5d3MV2pD8FQdGYLZ73aae/eEIUePMc4NFz8pIUfLCrrF4jVWH5gQneN3S8vANBmUXrEcKGn6hIUN95y1vpsvLwbGpzV9L0ZKTan6TDXM05236uLJcIEMKVAxKNT0K8WljuwNny3BNQRfzovA85beI9zr1AGNYnYCVkR1aGngWURUrgqR+gRrQhxW81l3CHevjvGEPzPMTxdsIfB9dfGRbZU0cg/1mcubtECX4tvaedmNAvTxCJtc2QaoUalGfENCGK7IS/O8CRpdOVca8EWCRwv2sSWE8CJPW5PCugjCXPd3h6U60cPD+bdhtXZuYB6stcoveE7Sm5MM2yvfUHXFSW7KzLmi7/EeEWL0wqcOH9MOSKjhCHHmw+JGLcYE/7SBZQCRggox0ZZTAxrlzNNXYXL5fNIjkdT4YMqVUz6p8YDt049v4OXGdg3qTrtLBUXOZf7ahPlZAY/O+7Sp0bvGSHdyQ8B1LOsplqMb9Se8VAE7gIdSZvxbRSrfl+Lk5Qaqi5QJceqjitdErcHXg/3MryljPSIAMaaloFm1cVwBJ8DNmkDqoGROSHFetrgjQ5CahuKkdH5pRPigMrgTtlFI8ufJPJSUlGgTjbBSvpRc0zypiUn6U5KZqcRoyrtzhmJ7/caeZkmVRwJQeLOG8LY6vP5ChpKhc8Js0El+n6FXqbx9ItdtLtYP92kKfaTLtCi8StLZdENJa9Ex1nOoz1kQ7qxoiZFKRyLf4O4CHRT0T/0W9F8epNKVoeyxUXhy3sQMMsJjQJEyMOjmOhMFgOmmlscV4eFi1CldU92yjwleirEKPW3bPAuEhRZV7JsKV3Lr5cETAiFuX5Nw5UlF7d2HZ96Bh0sgFIL5KGaKSoVYVlvdKpZJVP5+NZ7xDEkQhmDgsDKciazJCXJ6ZN2B3FY2f6VZyGl/t4aunGIAk/BHaS+i+SpdRfnB/OktOvyjinWNfM9Ksr6WwtCa1hCmeRI6icpFM4o8quCLsikU0tMoZI/9EqXRMpKGaWzofl4nQuVQm17d5fU5qXCQeCDqVaL9XJ9qJ08n3G3EFZS28SHEb3cdRBdtO0YcTzil3QknNKEe/smQ1fTb0XbpyNB5xAeuIlf+5KWlEY0DqJbsnzJlQxJPOVyHiKMx5Xu9FcEv1Fbg6Fhm4t+Jyy5JC1W3YO8dYLsO0PXPbxodBgttTbH3rt9Cp1lJIk2r3O1Zqu94eRbnIz2f50lWolYzuKsj4PMok4abHLO8NAC884hiXx5Fy5pWKO0bWL7uEGXaJCtznhP67SlQ4xjWIfgq6EpZ28QMtuZK7JC0RGbl9nA4XtFLug/NLMoH1pGt9IonAJqcEDLyH6TDROcbsmGPaGIxMo41IUAnQVPMPGByp4mOmh9ZQMkBAcksUK55LsZj7E5z5XuZoyWCKu6nHmDq22xI/9Z8YdxJy4kWpD16jLVrpwGLWfyOD0Wd+cBzFBxVaGv7S5k9qwh/5t/LQEXsRqI3Q9Rm3QIoaZW9GlsDaKOUyykyWuhNOprSEi0s1G4rgoiX1V743EELti+pJu5og6X0g6oTynUqlhH9k6ezyRi05NGZHz0nvp3HOJr7ebrAUFrDjbkFBObEvdQWkkUbL0pEvMU46X58vF9j9F3j6kpyetNUBItrEubW9ZvMPM4qNqLlsSBJqOH3XbNwv/cXDXNxN8iFLzUhteisYY+RlHYOuP29/Cb+L+xv+35Rv7xudnZ6ohK4cMPfCG8KI7dNmjNk/H4e84pOxn/sZHK9psfvj8ncA8qJz7O8xqbxESDivGJOZzF7o5PJLQ7g34qAWoyuA+x3btU98LT6ZyGyceIXjrqob2CAVql4VOTQPUQYvHV/g4zAuCZGvYQBtf0wmd5lilrvuEn1BXLny01B4h4SMDlYsnNpm9d7m9h578ufpef9Z4WplqWQvqo52fyUA7J24eZD5av6SyGIV9kpmHNqyvdfzcpEMw97BvknV2fq+MFHun9BT3Lsf8pbzvisWiIQvYkng+8Vxk1V+dli1u56kY50LRjaPdotvT5BwqtwyF+emo/z9J3yVUVGfKrxQtJMOAQWoQii/4dp9wgybSa5mkucmRLtEQZ/pz0tL/NVcgWAd95nEQ3Tg6tNbuyn3Iepz65L3huMUUBntllWuu4DbtOFSMSbpILV4fy6wlM0SOvi6CpLh81c1LreIvKd61uEWBcDw1lUBUW1I0Z+m/PaRlX+PQ/oxg0Ye6KUiIiTF4ADNk59Ydpt5/rkxmq9tV5Kcp/eQLUVVmBzQNVuytQCP6Ezd0G8eLxWyHpmZWJ3bAzkWTtg4lZlw42SQezEmiUPaJUuR/qklVA/87S4ArFCpALdY3QRdUw3G3XbWUp6aq9z0zUizcPa7351p9JXOZyfdZBFnqt90VzQndXB/mwf8LC9STj5kenVpNuqOQQP3mIRJj7eV21FxG8VAxKrEn3c+XfmZ800EPb9/5lIlijscUbB6da0RQaMook0zug1G0tKi/JBC4rw7/D3m4ARzAkzMcVrDcT2SyFtUdWAsFlsPDFqV3N+EjyXaoEePwroaZCiLqEzb8MW+PNE9TmTC01EzWli51PzZvUqkmyuROU+V6ik+Le/9qT6nwzUzf9tP68tYei0YaDGx6kAd7jn1cKqOCuYbiELH9zYqcc4MnRJjkeGiqaGwLImhyeKs+xKJMBlOJ05ow9gGCKZ1VpnMKoSCTbMS+X+23y042zOb5MtcY/6oBeAo1Vy89OTyhpavFP78jXCcFH0t7Gx24hMEOm2gsEfGabVpQgvFqbQKMsknFRRmuPHcZu0Su/WMFphZvB2r/EGbG72rpGGho3h+Msz0uGzJ7hNK2uqQiE1qmn0zgacKYYZBCqsxV+sjbpoVdSilW/b94n2xNb648VmNIoizqEWhBnsen+d0kbCPmRItfWqSBeOd9Wne3c6bcd6uvXOJ6WdiSsuXq0ndhqrQ4QoWUjCjYtZ0EAhnSOP1m44xkf0O7jXghrzSJWxP4a/t72jU29Vu2rvu4n7HfHkkmQOMGSS+NPeLGO5I73mC2B7+lMiBQQZRM9/9liLIfowupUFAbPBbR+lxDM6M8Ptgh1paJq5Rvs7yEuLQv/7d1oU2woFSb3FMPWQOKMuCuJ7pDDjpIclus5TeEoMBy2YdVB4fxmesaCeMNsEgTHKS5WDSGyNUOoEpcC2OFWtIRf0w27ck34/DjxRTVIcc9+kqZE6iMSiVDsiKdP/Xz5XfEhm/sBhO50p1rvJDlkyyxuJ9SPgs7YeUJBjXdeAkE+P9OQJm6SZnn1svcduI78dYmbkE2mtziPrcjVisXG78spLvbZaSFx/Rks9zP4LKn0Cdz/3JsetkT06A8f/yCgMO6Mb1Hme0JJ7b2wZz1qleqTuKBGokhPVUZ0dVu+tnQYNEY1fmkZSz6+EGZ5EzL7657mreZGR3jUfaEk458PDniBzsSmBKhDRzfXameryJv9/D5m6HIqZ0R+ouCE54Dzp4IJuuD1e4Dc5i+PpSORJfG23uVgqixAMDvchMR0nZdH5brclYwRoJRWv/rlxGRI5ffD5NPGmIDt7vDE1434pYdVZIFh89Bs94HGGJbTwrN8T6lh1HZFTOB4lWzWj6EVqxSMvC0/ljWBQ3F2kc/mO2b6tWonT2JEqEwFts8rz2h+oWNds9ceR2cb7zZvJTDppHaEhK5avWqsseWa2Dt5BBhabdWSktS80oMQrL4TvAM9b5HMmyDnO+OkkbMXfUJG7eXqTIG6lqSOEbqVR+qYdP7uWb57WEJqzyh411GAVsDinPs7KvUeXItlcMdOUWzXBH6zscymV1LLVCtc8IePojzXHF9m5b5zGwBRdzcyUJkiu938ApmAayRdJrX1PmVguWUvt2ThQ62czItTyWJMW2An/hdDfMK7SiFQlGIdAbltHz3ycoh7j9V7GxNWBpbtcSdqm4XxRwTawc3cbZ+xfSv9qQfEkDKfZTwCkqWGI/ur250ItXlMlh6vUNWEYIg9A3GzbgmbqvTN8js2YMo87CU5y6nZ4dbJLDQJj9fc7yM7tZzJDZFtqOcU8+mZjYlq4VmifI23iHb1ZoT9E+kT2dolnP1AfiOkt7PQCSykBiXy5mv637IegWSKj9IKrYZf4Lu9+I7ub+mkRdlvYzehh/jaJ9n7HUH5b2IbgeNdkY7wx1yVzxS7pbvky6+nmVUtRllEFfweUQ0/nG017WoUYSxs+j2B4FV/F62EtHlMWZXYrjGHpthnNb1x66LKZ0Qe92INWHdfR/vqp02wMS8r1G4dJqHok8KmQ7947G13a4YXbsGgHcBvRuVu1eAi4/A5+ZixmdSXM73LupB/LH7O9yxLTVXJTyBbI1S49TIROrfVCOb/czZ9pM4JsZx8kUz8dQGv7gUWKxXvTH7QM/3J2OuXXgciUhqY+cgtaOliQQVOYthBLV3xpESZT3rmfEYNZxmpBbb24CRao86prn+i9TNOh8VxRJGXJfXHATJHs1T5txgc/opYrY8XjlGQQbRcoxIBcnVsMjmU1ymmIUL4dviJXndMAJ0Yet+c7O52/p98ytlmAsGBaTAmMhimAnvp1TWNGM9BpuitGj+t810CU2UhorrjPKGtThVC8WaXw04WFnT5fTjqmPyrQ0tN3CkLsctVy2xr0ZWgiWVZ1OrlFjjxJYsOiZv2cAoOvE+7sY0I/TwWcZqMoyIKNOftwP7w++Rfg67ljfovKYa50if3fzE/8aPYVey/Nq35+nH2sLPh/fP5TsylSKGOZ4k69d2PnH43+kq++sRXHQqGArWdwhx+hpwQC6JgT2uxehYU4Zbw7oNb6/HLikPyJROGK2ouyr+vzseESp9G50T4AyFrSqOQ0rroCYP4sMDFBrHn342EyZTMlSyk47rHSq89Y9/nI3zG5lX16Z5lxphguLOcZUndL8wNcrkyjH82jqg8Bo8OYkynrxZvbFno5lUS3OPr8Ko3mX9NoRPdYOKKjD07bvgFgpZ/RF+YzkWvJ/Hs/tUbfeGzGWLxNAjfDzHHMVSDwB5SabQLsIZHiBp43FjGkaienYoDd18hu2BGwOK7U3o70K/WY/kuuKdmdrykIBUdG2mvE91L1JtTbh20mOLbk1vCAamu7utlXeGU2ooVikbU/actcgmsC1FKk2qmj3GWeIWbj4tGIxE7BLcBWUvvcnd/lYxsMV4F917fWeFB/XbINN3qGvIyTpCalz1lVewdIGqeAS/gB8Mi+sA+BqDiX3VGD2eUunTRbSY+AuDy4E3Qx3hAhwnSXX+B0zuj3eQ1miS8Vux2z/l6/BkWtjKGU72aJkOCWhGcSf3+kFkkB15vGOsQrSdFr6qTj0gBYiOlnBO41170gOWHSUoBVRU2JjwppYdhIFDfu7tIRHccSNM5KZOFDPz0TGMAjzzEpeLwTWp+kn201kU6NjbiMQJx83+LX1e1tZ10kuChJZ/XBUQ1dwaBHjTDJDqOympEk8X2M3VtVw21JksChA8w1tTefO3RJ1FMbqZ01bHHkudDB/OhLfe7P5GOHaI28ZXKTMuqo0hLWQ4HabBsGG7NbP1RiXtETz074er6w/OerJWEqjmkq2y51q1BVI+JUudnVa3ogBpzdhFE7fC7kybrAt2Z6RqDjATAUEYeYK45WMupBKQRtQlU+uNsjnzj6ZmGrezA+ASrWxQ6LMkHRXqXwNq7ftv28dUx/ZSJciDXP2SWJsWaN0FjPX9Yko6LobZ7aYW/IdUktI9apTLyHS8DyWPyuoZyxN1TK/vtfxk3HwWh6JczZC8Ftn0bIJay2g+n5wd7lm9rEsKO+svqVmi+c1j88hSCxbzrg4+HEP0Nt1/B6YW1XVm09T1CpAKjc9n18hjqsaFGdfyva1ZG0Xu3ip6N6JGpyTSqY5h4BOlpLPaOnyw45PdXTN+DtAKg7DLrLFTnWusoSBHk3s0d7YouJHq85/R09Tfc37ENXZF48eAYLnq9GLioNcwDZrC6FW6godB8JnqYUPvn0pWLfQz0lM0Yy8Mybgn84Ds3Q9bDP10bLyOV+qzxa4Rd9Dhu7cju8mMaONXK3UqmBQ9qIg7etIwEqM/kECk/Dzja4Bs1xR+Q/tCbc8IKrSGsTdJJ0vge7IG20W687uVmK6icWQ6cD3lwFzgNMGtFvO5qyJeKflGLAAcQZOrkxVwy3cWvqlGpvjmf9Qe6Ap20MPbV92DPV0OhFM4kz8Yr0ffC2zLWSQ1kqY6QdQrttR3kh1YLtQd1kCEv5hVoPIRWl5ERcUTttBIrWp6Xs5Ehh5OUUwI5aEBvuiDmUoENmnVw1FohCrbRp1A1E+XSlWVOTi7ADW+5Ohb9z1vK4qx5R5lPdGCPBJZ00mC+Ssp8VUbgpGAvXWMuWQQRbCqI6Rr2jtxZxtfP7W/8onz+yz0Gs76LaT5HX9ecyiZCB/ZR/gFtMxPsDwohoeCRtiuLxE1GM1vUEUgBv86+eehL58/P56QFGQ/MqOe/vC76L63jzmeax4exd/OKTUvkXg+fOJUHych9xt/9goJMrapSgvXrj8+8vk/N80f22Sewj6cyGqt1B6mztoeklVHHraouhvHJaG/OuBz6DHKMpFmQULU1bRWlyYE0RPXYYkUycIemN7TLtgNCJX6BqdyxDKkegO7nJK5xQ7OVYDZTMf9bVHidtk6DQX9Et+V9M7esgbsYBdEeUpsB0Xvw2kd9+rI7V+m47u+O/tq7mw7262HU1WlS9uFzsV6JxIHNmUCy0QS9e077JGRFbG65z3/dOKB/Zk+yDdKpUmdXjn/aS3N5nv4fK7bMHHmPlHd4E2+iTbV5rpzScRnxk6KARuDTJ8Q1LpK2mP8gj1EbuJ9RIyY+EWK4hCiIDBAS1Tm2IEXAFfgKPgdL9O6mAa06wjCcUAL6EsxPQWO9VNegBPm/0GgkZbDxCynxujX/92vmGcjZRMAY45puak2sFLCLSwXpEsyy5fnF0jGJBhm+fNSHKKUUfy+276A7/feLOFxxUuHRNJI2Osenxyvf8DAGObT60pfTTlhEg9u/KKkhJqm5U1/+BEcSkpFDA5XeCqxwXmPac1jcuZ3JWQ+p0NdWzb/5v1ZvF8GtMTFFEdQjpLO0bwPb0BHNWnip3liDXI2fXf05jjvfJ0NpjLCUgfTh9CMFYVFKEd4Z/OG/2C+N435mnK+9t1gvCiVcaaH7rK4+PjCvpVNiz+t2QyqH1O8x3JKZVl6Q+Lp/XK8wMjVMslOq9FdSw5FtUs/CptXH9PW+wbWHgrV17R5jTVOtGtKFu3nb80T+E0tv9QkzW3J2dbaw/8ddAKZ0pxIaEqLjlPrji3VgJ3GvdFvlqD8075woxh4fVt0JZE0KVFsAvqhe0dqN9b35jtSpnYMXkU+vZq+IAHad3IHc2s/LYrnD1anfG46IFiMIr9oNbZDWvwthqYNqOigaKd/XlLU4XHfk/PXIjPsLy/9/kAtQ+/wKH+hI/IROWj5FPvTZAT9f7j4ZXQyG4M0TujMAFXYkKvEHv1xhySekgXGGqNxWeWKlf8dDAlLuB1cb/qOD+rk7cmwt+1yKpk9cudqBanTi6zTbXRtV8qylNtjyOVKy1HTz0GW9rjt6sSjAZcT5R+KdtyYb0zyqG9pSLuCw5WBwAn7fjBjKLLoxLXMI+52L9cLwIR2B6OllJZLHJ8vDxmWdtF+QJnmt1rsHPIWY20lftk8fYePkAIg6Hgn532QoIpegMxiWgAOfe5/U44APR8Ac0NeZrVh3gEhs12W+tVSiWiUQekf/YBECUy5fdYbA08dd7VzPAP9aiVcIB9k6tY7WdJ1wNV+bHeydNtmC6G5ICtFC1ZwmJU/j8hf0I8TRVKSiz5oYIa93EpUI78X8GYIAZabx47/n8LDAAJ0nNtP1rpROprqKMBRecShca6qXuTSI3jZBLOB3Vp381B5rCGhjSvh/NSVkYp2qIdP/Bg=";
          },
          {}
        ],
        6: [
          function(require2, module2, exports2) {
            var data = require2("./dictionary-browser");
            exports2.init = function() {
              exports2.dictionary = data.init();
            };
            exports2.offsetsByLength = new Uint32Array([
              0,
              0,
              0,
              0,
              0,
              4096,
              9216,
              21504,
              35840,
              44032,
              53248,
              63488,
              74752,
              87040,
              93696,
              100864,
              104704,
              106752,
              108928,
              113536,
              115968,
              118528,
              119872,
              121280,
              122016
            ]);
            exports2.sizeBitsByLength = new Uint8Array([
              0,
              0,
              0,
              0,
              10,
              10,
              11,
              11,
              10,
              10,
              10,
              10,
              10,
              9,
              9,
              8,
              7,
              7,
              8,
              7,
              7,
              6,
              6,
              5,
              5
            ]);
            exports2.minDictionaryWordLength = 4;
            exports2.maxDictionaryWordLength = 24;
          },
          { "./dictionary-browser": 4 }
        ],
        7: [
          function(require2, module2, exports2) {
            function HuffmanCode(bits, value) {
              this.bits = bits;
              this.value = value;
            }
            exports2.HuffmanCode = HuffmanCode;
            var MAX_LENGTH = 15;
            function GetNextKey(key, len2) {
              var step = 1 << len2 - 1;
              while (key & step) {
                step >>= 1;
              }
              return (key & step - 1) + step;
            }
            function ReplicateValue(table, i2, step, end, code) {
              do {
                end -= step;
                table[i2 + end] = new HuffmanCode(
                  code.bits,
                  code.value
                );
              } while (end > 0);
            }
            function NextTableBitSize(count, len2, root_bits) {
              var left = 1 << len2 - root_bits;
              while (len2 < MAX_LENGTH) {
                left -= count[len2];
                if (left <= 0) break;
                ++len2;
                left <<= 1;
              }
              return len2 - root_bits;
            }
            exports2.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) {
              var start_table = table;
              var code;
              var len2;
              var symbol3;
              var key;
              var step;
              var low;
              var mask;
              var table_bits;
              var table_size;
              var total_size;
              var sorted;
              var count = new Int32Array(
                MAX_LENGTH + 1
              );
              var offset4 = new Int32Array(
                MAX_LENGTH + 1
              );
              sorted = new Int32Array(code_lengths_size);
              for (symbol3 = 0; symbol3 < code_lengths_size; symbol3++) {
                count[code_lengths[symbol3]]++;
              }
              offset4[1] = 0;
              for (len2 = 1; len2 < MAX_LENGTH; len2++) {
                offset4[len2 + 1] = offset4[len2] + count[len2];
              }
              for (symbol3 = 0; symbol3 < code_lengths_size; symbol3++) {
                if (code_lengths[symbol3] !== 0) {
                  sorted[offset4[code_lengths[symbol3]]++] = symbol3;
                }
              }
              table_bits = root_bits;
              table_size = 1 << table_bits;
              total_size = table_size;
              if (offset4[MAX_LENGTH] === 1) {
                for (key = 0; key < total_size; ++key) {
                  root_table[table + key] = new HuffmanCode(
                    0,
                    sorted[0] & 65535
                  );
                }
                return total_size;
              }
              key = 0;
              symbol3 = 0;
              for (len2 = 1, step = 2; len2 <= root_bits; ++len2, step <<= 1) {
                for (; count[len2] > 0; --count[len2]) {
                  code = new HuffmanCode(
                    len2 & 255,
                    sorted[symbol3++] & 65535
                  );
                  ReplicateValue(
                    root_table,
                    table + key,
                    step,
                    table_size,
                    code
                  );
                  key = GetNextKey(key, len2);
                }
              }
              mask = total_size - 1;
              low = -1;
              for (len2 = root_bits + 1, step = 2; len2 <= MAX_LENGTH; ++len2, step <<= 1) {
                for (; count[len2] > 0; --count[len2]) {
                  if ((key & mask) !== low) {
                    table += table_size;
                    table_bits = NextTableBitSize(
                      count,
                      len2,
                      root_bits
                    );
                    table_size = 1 << table_bits;
                    total_size += table_size;
                    low = key & mask;
                    root_table[start_table + low] = new HuffmanCode(
                      table_bits + root_bits & 255,
                      table - start_table - low & 65535
                    );
                  }
                  code = new HuffmanCode(
                    len2 - root_bits & 255,
                    sorted[symbol3++] & 65535
                  );
                  ReplicateValue(
                    root_table,
                    table + (key >> root_bits),
                    step,
                    table_size,
                    code
                  );
                  key = GetNextKey(key, len2);
                }
              }
              return total_size;
            };
          },
          {}
        ],
        8: [
          function(require2, module2, exports2) {
            "use strict";
            exports2.byteLength = byteLength;
            exports2.toByteArray = toByteArray;
            exports2.fromByteArray = fromByteArray;
            var lookup = [];
            var revLookup = [];
            var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array;
            var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
            for (var i2 = 0, len2 = code.length; i2 < len2; ++i2) {
              lookup[i2] = code[i2];
              revLookup[code.charCodeAt(i2)] = i2;
            }
            revLookup["-".charCodeAt(0)] = 62;
            revLookup["_".charCodeAt(0)] = 63;
            function getLens(b64) {
              var len22 = b64.length;
              if (len22 % 4 > 0) {
                throw new Error(
                  "Invalid string. Length must be a multiple of 4"
                );
              }
              var validLen = b64.indexOf("=");
              if (validLen === -1) validLen = len22;
              var placeHoldersLen = validLen === len22 ? 0 : 4 - validLen % 4;
              return [validLen, placeHoldersLen];
            }
            function byteLength(b64) {
              var lens = getLens(b64);
              var validLen = lens[0];
              var placeHoldersLen = lens[1];
              return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
            }
            function _byteLength(b64, validLen, placeHoldersLen) {
              return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
            }
            function toByteArray(b64) {
              var tmp;
              var lens = getLens(b64);
              var validLen = lens[0];
              var placeHoldersLen = lens[1];
              var arr = new Arr(
                _byteLength(b64, validLen, placeHoldersLen)
              );
              var curByte = 0;
              var len22 = placeHoldersLen > 0 ? validLen - 4 : validLen;
              for (var i22 = 0; i22 < len22; i22 += 4) {
                tmp = revLookup[b64.charCodeAt(i22)] << 18 | revLookup[b64.charCodeAt(i22 + 1)] << 12 | revLookup[b64.charCodeAt(i22 + 2)] << 6 | revLookup[b64.charCodeAt(i22 + 3)];
                arr[curByte++] = tmp >> 16 & 255;
                arr[curByte++] = tmp >> 8 & 255;
                arr[curByte++] = tmp & 255;
              }
              if (placeHoldersLen === 2) {
                tmp = revLookup[b64.charCodeAt(i22)] << 2 | revLookup[b64.charCodeAt(i22 + 1)] >> 4;
                arr[curByte++] = tmp & 255;
              }
              if (placeHoldersLen === 1) {
                tmp = revLookup[b64.charCodeAt(i22)] << 10 | revLookup[b64.charCodeAt(i22 + 1)] << 4 | revLookup[b64.charCodeAt(i22 + 2)] >> 2;
                arr[curByte++] = tmp >> 8 & 255;
                arr[curByte++] = tmp & 255;
              }
              return arr;
            }
            function tripletToBase64(num) {
              return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];
            }
            function encodeChunk(uint8, start2, end) {
              var tmp;
              var output = [];
              for (var i22 = start2; i22 < end; i22 += 3) {
                tmp = (uint8[i22] << 16 & 16711680) + (uint8[i22 + 1] << 8 & 65280) + (uint8[i22 + 2] & 255);
                output.push(tripletToBase64(tmp));
              }
              return output.join("");
            }
            function fromByteArray(uint8) {
              var tmp;
              var len22 = uint8.length;
              var extraBytes = len22 % 3;
              var parts = [];
              var maxChunkLength = 16383;
              for (var i22 = 0, len222 = len22 - extraBytes; i22 < len222; i22 += maxChunkLength) {
                parts.push(
                  encodeChunk(
                    uint8,
                    i22,
                    i22 + maxChunkLength > len222 ? len222 : i22 + maxChunkLength
                  )
                );
              }
              if (extraBytes === 1) {
                tmp = uint8[len22 - 1];
                parts.push(
                  lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "=="
                );
              } else if (extraBytes === 2) {
                tmp = (uint8[len22 - 2] << 8) + uint8[len22 - 1];
                parts.push(
                  lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "="
                );
              }
              return parts.join("");
            }
          },
          {}
        ],
        9: [
          function(require2, module2, exports2) {
            function PrefixCodeRange(offset4, nbits) {
              this.offset = offset4;
              this.nbits = nbits;
            }
            exports2.kBlockLengthPrefixCode = [
              new PrefixCodeRange(1, 2),
              new PrefixCodeRange(5, 2),
              new PrefixCodeRange(9, 2),
              new PrefixCodeRange(13, 2),
              new PrefixCodeRange(17, 3),
              new PrefixCodeRange(25, 3),
              new PrefixCodeRange(33, 3),
              new PrefixCodeRange(41, 3),
              new PrefixCodeRange(49, 4),
              new PrefixCodeRange(65, 4),
              new PrefixCodeRange(81, 4),
              new PrefixCodeRange(97, 4),
              new PrefixCodeRange(113, 5),
              new PrefixCodeRange(145, 5),
              new PrefixCodeRange(177, 5),
              new PrefixCodeRange(209, 5),
              new PrefixCodeRange(241, 6),
              new PrefixCodeRange(305, 6),
              new PrefixCodeRange(369, 7),
              new PrefixCodeRange(497, 8),
              new PrefixCodeRange(753, 9),
              new PrefixCodeRange(1265, 10),
              new PrefixCodeRange(2289, 11),
              new PrefixCodeRange(4337, 12),
              new PrefixCodeRange(8433, 13),
              new PrefixCodeRange(16625, 24)
            ];
            exports2.kInsertLengthPrefixCode = [
              new PrefixCodeRange(0, 0),
              new PrefixCodeRange(1, 0),
              new PrefixCodeRange(2, 0),
              new PrefixCodeRange(3, 0),
              new PrefixCodeRange(4, 0),
              new PrefixCodeRange(5, 0),
              new PrefixCodeRange(6, 1),
              new PrefixCodeRange(8, 1),
              new PrefixCodeRange(10, 2),
              new PrefixCodeRange(14, 2),
              new PrefixCodeRange(18, 3),
              new PrefixCodeRange(26, 3),
              new PrefixCodeRange(34, 4),
              new PrefixCodeRange(50, 4),
              new PrefixCodeRange(66, 5),
              new PrefixCodeRange(98, 5),
              new PrefixCodeRange(130, 6),
              new PrefixCodeRange(194, 7),
              new PrefixCodeRange(322, 8),
              new PrefixCodeRange(578, 9),
              new PrefixCodeRange(1090, 10),
              new PrefixCodeRange(2114, 12),
              new PrefixCodeRange(6210, 14),
              new PrefixCodeRange(22594, 24)
            ];
            exports2.kCopyLengthPrefixCode = [
              new PrefixCodeRange(2, 0),
              new PrefixCodeRange(3, 0),
              new PrefixCodeRange(4, 0),
              new PrefixCodeRange(5, 0),
              new PrefixCodeRange(6, 0),
              new PrefixCodeRange(7, 0),
              new PrefixCodeRange(8, 0),
              new PrefixCodeRange(9, 0),
              new PrefixCodeRange(10, 1),
              new PrefixCodeRange(12, 1),
              new PrefixCodeRange(14, 2),
              new PrefixCodeRange(18, 2),
              new PrefixCodeRange(22, 3),
              new PrefixCodeRange(30, 3),
              new PrefixCodeRange(38, 4),
              new PrefixCodeRange(54, 4),
              new PrefixCodeRange(70, 5),
              new PrefixCodeRange(102, 5),
              new PrefixCodeRange(134, 6),
              new PrefixCodeRange(198, 7),
              new PrefixCodeRange(326, 8),
              new PrefixCodeRange(582, 9),
              new PrefixCodeRange(1094, 10),
              new PrefixCodeRange(2118, 24)
            ];
            exports2.kInsertRangeLut = [0, 0, 8, 8, 0, 16, 8, 16, 16];
            exports2.kCopyRangeLut = [0, 8, 0, 8, 16, 0, 16, 8, 16];
          },
          {}
        ],
        10: [
          function(require2, module2, exports2) {
            function BrotliInput(buffer) {
              this.buffer = buffer;
              this.pos = 0;
            }
            BrotliInput.prototype.read = function(buf, i2, count) {
              if (this.pos + count > this.buffer.length) {
                count = this.buffer.length - this.pos;
              }
              for (var p4 = 0; p4 < count; p4++)
                buf[i2 + p4] = this.buffer[this.pos + p4];
              this.pos += count;
              return count;
            };
            exports2.BrotliInput = BrotliInput;
            function BrotliOutput(buf) {
              this.buffer = buf;
              this.pos = 0;
            }
            BrotliOutput.prototype.write = function(buf, count) {
              if (this.pos + count > this.buffer.length)
                throw new Error(
                  "Output buffer is not large enough"
                );
              this.buffer.set(buf.subarray(0, count), this.pos);
              this.pos += count;
              return count;
            };
            exports2.BrotliOutput = BrotliOutput;
          },
          {}
        ],
        11: [
          function(require2, module2, exports2) {
            var BrotliDictionary = require2("./dictionary");
            var kIdentity = 0;
            var kOmitLast1 = 1;
            var kOmitLast2 = 2;
            var kOmitLast3 = 3;
            var kOmitLast4 = 4;
            var kOmitLast5 = 5;
            var kOmitLast6 = 6;
            var kOmitLast7 = 7;
            var kOmitLast8 = 8;
            var kOmitLast9 = 9;
            var kUppercaseFirst = 10;
            var kUppercaseAll = 11;
            var kOmitFirst1 = 12;
            var kOmitFirst2 = 13;
            var kOmitFirst3 = 14;
            var kOmitFirst4 = 15;
            var kOmitFirst5 = 16;
            var kOmitFirst6 = 17;
            var kOmitFirst7 = 18;
            var kOmitFirst8 = 19;
            var kOmitFirst9 = 20;
            function Transform(prefix2, transform, suffix) {
              this.prefix = new Uint8Array(prefix2.length);
              this.transform = transform;
              this.suffix = new Uint8Array(suffix.length);
              for (var i2 = 0; i2 < prefix2.length; i2++)
                this.prefix[i2] = prefix2.charCodeAt(i2);
              for (var i2 = 0; i2 < suffix.length; i2++)
                this.suffix[i2] = suffix.charCodeAt(i2);
            }
            var kTransforms = [
              new Transform("", kIdentity, ""),
              new Transform("", kIdentity, " "),
              new Transform(" ", kIdentity, " "),
              new Transform("", kOmitFirst1, ""),
              new Transform("", kUppercaseFirst, " "),
              new Transform("", kIdentity, " the "),
              new Transform(" ", kIdentity, ""),
              new Transform("s ", kIdentity, " "),
              new Transform("", kIdentity, " of "),
              new Transform("", kUppercaseFirst, ""),
              new Transform("", kIdentity, " and "),
              new Transform("", kOmitFirst2, ""),
              new Transform("", kOmitLast1, ""),
              new Transform(", ", kIdentity, " "),
              new Transform("", kIdentity, ", "),
              new Transform(" ", kUppercaseFirst, " "),
              new Transform("", kIdentity, " in "),
              new Transform("", kIdentity, " to "),
              new Transform("e ", kIdentity, " "),
              new Transform("", kIdentity, '"'),
              new Transform("", kIdentity, "."),
              new Transform("", kIdentity, '">'),
              new Transform("", kIdentity, "\n"),
              new Transform("", kOmitLast3, ""),
              new Transform("", kIdentity, "]"),
              new Transform("", kIdentity, " for "),
              new Transform("", kOmitFirst3, ""),
              new Transform("", kOmitLast2, ""),
              new Transform("", kIdentity, " a "),
              new Transform("", kIdentity, " that "),
              new Transform(" ", kUppercaseFirst, ""),
              new Transform("", kIdentity, ". "),
              new Transform(".", kIdentity, ""),
              new Transform(" ", kIdentity, ", "),
              new Transform("", kOmitFirst4, ""),
              new Transform("", kIdentity, " with "),
              new Transform("", kIdentity, "'"),
              new Transform("", kIdentity, " from "),
              new Transform("", kIdentity, " by "),
              new Transform("", kOmitFirst5, ""),
              new Transform("", kOmitFirst6, ""),
              new Transform(" the ", kIdentity, ""),
              new Transform("", kOmitLast4, ""),
              new Transform("", kIdentity, ". The "),
              new Transform("", kUppercaseAll, ""),
              new Transform("", kIdentity, " on "),
              new Transform("", kIdentity, " as "),
              new Transform("", kIdentity, " is "),
              new Transform("", kOmitLast7, ""),
              new Transform("", kOmitLast1, "ing "),
              new Transform("", kIdentity, "\n	"),
              new Transform("", kIdentity, ":"),
              new Transform(" ", kIdentity, ". "),
              new Transform("", kIdentity, "ed "),
              new Transform("", kOmitFirst9, ""),
              new Transform("", kOmitFirst7, ""),
              new Transform("", kOmitLast6, ""),
              new Transform("", kIdentity, "("),
              new Transform("", kUppercaseFirst, ", "),
              new Transform("", kOmitLast8, ""),
              new Transform("", kIdentity, " at "),
              new Transform("", kIdentity, "ly "),
              new Transform(" the ", kIdentity, " of "),
              new Transform("", kOmitLast5, ""),
              new Transform("", kOmitLast9, ""),
              new Transform(" ", kUppercaseFirst, ", "),
              new Transform("", kUppercaseFirst, '"'),
              new Transform(".", kIdentity, "("),
              new Transform("", kUppercaseAll, " "),
              new Transform("", kUppercaseFirst, '">'),
              new Transform("", kIdentity, '="'),
              new Transform(" ", kIdentity, "."),
              new Transform(".com/", kIdentity, ""),
              new Transform(" the ", kIdentity, " of the "),
              new Transform("", kUppercaseFirst, "'"),
              new Transform("", kIdentity, ". This "),
              new Transform("", kIdentity, ","),
              new Transform(".", kIdentity, " "),
              new Transform("", kUppercaseFirst, "("),
              new Transform("", kUppercaseFirst, "."),
              new Transform("", kIdentity, " not "),
              new Transform(" ", kIdentity, '="'),
              new Transform("", kIdentity, "er "),
              new Transform(" ", kUppercaseAll, " "),
              new Transform("", kIdentity, "al "),
              new Transform(" ", kUppercaseAll, ""),
              new Transform("", kIdentity, "='"),
              new Transform("", kUppercaseAll, '"'),
              new Transform("", kUppercaseFirst, ". "),
              new Transform(" ", kIdentity, "("),
              new Transform("", kIdentity, "ful "),
              new Transform(" ", kUppercaseFirst, ". "),
              new Transform("", kIdentity, "ive "),
              new Transform("", kIdentity, "less "),
              new Transform("", kUppercaseAll, "'"),
              new Transform("", kIdentity, "est "),
              new Transform(" ", kUppercaseFirst, "."),
              new Transform("", kUppercaseAll, '">'),
              new Transform(" ", kIdentity, "='"),
              new Transform("", kUppercaseFirst, ","),
              new Transform("", kIdentity, "ize "),
              new Transform("", kUppercaseAll, "."),
              new Transform("\xC2\xA0", kIdentity, ""),
              new Transform(" ", kIdentity, ","),
              new Transform("", kUppercaseFirst, '="'),
              new Transform("", kUppercaseAll, '="'),
              new Transform("", kIdentity, "ous "),
              new Transform("", kUppercaseAll, ", "),
              new Transform("", kUppercaseFirst, "='"),
              new Transform(" ", kUppercaseFirst, ","),
              new Transform(" ", kUppercaseAll, '="'),
              new Transform(" ", kUppercaseAll, ", "),
              new Transform("", kUppercaseAll, ","),
              new Transform("", kUppercaseAll, "("),
              new Transform("", kUppercaseAll, ". "),
              new Transform(" ", kUppercaseAll, "."),
              new Transform("", kUppercaseAll, "='"),
              new Transform(" ", kUppercaseAll, ". "),
              new Transform(" ", kUppercaseFirst, '="'),
              new Transform(" ", kUppercaseAll, "='"),
              new Transform(" ", kUppercaseFirst, "='")
            ];
            exports2.kTransforms = kTransforms;
            exports2.kNumTransforms = kTransforms.length;
            function ToUpperCase(p4, i2) {
              if (p4[i2] < 192) {
                if (p4[i2] >= 97 && p4[i2] <= 122) {
                  p4[i2] ^= 32;
                }
                return 1;
              }
              if (p4[i2] < 224) {
                p4[i2 + 1] ^= 32;
                return 2;
              }
              p4[i2 + 2] ^= 5;
              return 3;
            }
            exports2.transformDictionaryWord = function(dst, idx, word, len2, transform) {
              var prefix2 = kTransforms[transform].prefix;
              var suffix = kTransforms[transform].suffix;
              var t3 = kTransforms[transform].transform;
              var skip = t3 < kOmitFirst1 ? 0 : t3 - (kOmitFirst1 - 1);
              var i2 = 0;
              var start_idx = idx;
              var uppercase;
              if (skip > len2) {
                skip = len2;
              }
              var prefix_pos = 0;
              while (prefix_pos < prefix2.length) {
                dst[idx++] = prefix2[prefix_pos++];
              }
              word += skip;
              len2 -= skip;
              if (t3 <= kOmitLast9) {
                len2 -= t3;
              }
              for (i2 = 0; i2 < len2; i2++) {
                dst[idx++] = BrotliDictionary.dictionary[word + i2];
              }
              uppercase = idx - len2;
              if (t3 === kUppercaseFirst) {
                ToUpperCase(dst, uppercase);
              } else if (t3 === kUppercaseAll) {
                while (len2 > 0) {
                  var step = ToUpperCase(dst, uppercase);
                  uppercase += step;
                  len2 -= step;
                }
              }
              var suffix_pos = 0;
              while (suffix_pos < suffix.length) {
                dst[idx++] = suffix[suffix_pos++];
              }
              return idx - start_idx;
            };
          },
          { "./dictionary": 6 }
        ],
        12: [
          function(require2, module2, exports2) {
            module2.exports = require2("./dec/decode").BrotliDecompressBuffer;
          },
          { "./dec/decode": 3 }
        ]
      },
      {},
      [12]
    )(12);
  })();

  // packages/global-styles-ui/build-module/font-library/lib/inflate.mjs
  var __require3 = /* @__PURE__ */ ((x2) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x2, {
    get: (a2, b2) => (typeof __require !== "undefined" ? __require : a2)[b2]
  }) : x2)(function(x2) {
    if (typeof __require !== "undefined") return __require.apply(this, arguments);
    throw Error('Dynamic require of "' + x2 + '" is not supported');
  });
  var inflate_default = (function() {
    var define, module, exports;
    return (/* @__PURE__ */ (function() {
      function r4(e2, n2, t3) {
        function o3(i22, f2) {
          if (!n2[i22]) {
            if (!e2[i22]) {
              var c6 = "function" == typeof __require3 && __require3;
              if (!f2 && c6) return c6(i22, true);
              if (u2) return u2(i22, true);
              var a2 = new Error("Cannot find module '" + i22 + "'");
              throw a2.code = "MODULE_NOT_FOUND", a2;
            }
            var p4 = n2[i22] = { exports: {} };
            e2[i22][0].call(
              p4.exports,
              function(r22) {
                var n22 = e2[i22][1][r22];
                return o3(n22 || r22);
              },
              p4,
              p4.exports,
              r4,
              e2,
              n2,
              t3
            );
          }
          return n2[i22].exports;
        }
        for (var u2 = "function" == typeof __require3 && __require3, i2 = 0; i2 < t3.length; i2++)
          o3(t3[i2]);
        return o3;
      }
      return r4;
    })())(
      {
        1: [
          function(require2, module2, exports2) {
            "use strict";
            var TYPED_OK = typeof Uint8Array !== "undefined" && typeof Uint16Array !== "undefined" && typeof Int32Array !== "undefined";
            function _has(obj, key) {
              return Object.prototype.hasOwnProperty.call(obj, key);
            }
            exports2.assign = function(obj) {
              var sources = Array.prototype.slice.call(
                arguments,
                1
              );
              while (sources.length) {
                var source = sources.shift();
                if (!source) {
                  continue;
                }
                if (typeof source !== "object") {
                  throw new TypeError(
                    source + "must be non-object"
                  );
                }
                for (var p4 in source) {
                  if (_has(source, p4)) {
                    obj[p4] = source[p4];
                  }
                }
              }
              return obj;
            };
            exports2.shrinkBuf = function(buf, size4) {
              if (buf.length === size4) {
                return buf;
              }
              if (buf.subarray) {
                return buf.subarray(0, size4);
              }
              buf.length = size4;
              return buf;
            };
            var fnTyped = {
              arraySet: function(dest, src, src_offs, len2, dest_offs) {
                if (src.subarray && dest.subarray) {
                  dest.set(
                    src.subarray(src_offs, src_offs + len2),
                    dest_offs
                  );
                  return;
                }
                for (var i2 = 0; i2 < len2; i2++) {
                  dest[dest_offs + i2] = src[src_offs + i2];
                }
              },
              // Join array of chunks to single array.
              flattenChunks: function(chunks) {
                var i2, l3, len2, pos, chunk2, result;
                len2 = 0;
                for (i2 = 0, l3 = chunks.length; i2 < l3; i2++) {
                  len2 += chunks[i2].length;
                }
                result = new Uint8Array(len2);
                pos = 0;
                for (i2 = 0, l3 = chunks.length; i2 < l3; i2++) {
                  chunk2 = chunks[i2];
                  result.set(chunk2, pos);
                  pos += chunk2.length;
                }
                return result;
              }
            };
            var fnUntyped = {
              arraySet: function(dest, src, src_offs, len2, dest_offs) {
                for (var i2 = 0; i2 < len2; i2++) {
                  dest[dest_offs + i2] = src[src_offs + i2];
                }
              },
              // Join array of chunks to single array.
              flattenChunks: function(chunks) {
                return [].concat.apply([], chunks);
              }
            };
            exports2.setTyped = function(on) {
              if (on) {
                exports2.Buf8 = Uint8Array;
                exports2.Buf16 = Uint16Array;
                exports2.Buf32 = Int32Array;
                exports2.assign(exports2, fnTyped);
              } else {
                exports2.Buf8 = Array;
                exports2.Buf16 = Array;
                exports2.Buf32 = Array;
                exports2.assign(exports2, fnUntyped);
              }
            };
            exports2.setTyped(TYPED_OK);
          },
          {}
        ],
        2: [
          function(require2, module2, exports2) {
            "use strict";
            var utils = require2("./common");
            var STR_APPLY_OK = true;
            var STR_APPLY_UIA_OK = true;
            try {
              String.fromCharCode.apply(null, [0]);
            } catch (__357) {
              STR_APPLY_OK = false;
            }
            try {
              String.fromCharCode.apply(null, new Uint8Array(1));
            } catch (__357) {
              STR_APPLY_UIA_OK = false;
            }
            var _utf8len = new utils.Buf8(256);
            for (var q2 = 0; q2 < 256; q2++) {
              _utf8len[q2] = q2 >= 252 ? 6 : q2 >= 248 ? 5 : q2 >= 240 ? 4 : q2 >= 224 ? 3 : q2 >= 192 ? 2 : 1;
            }
            _utf8len[254] = _utf8len[254] = 1;
            exports2.string2buf = function(str3) {
              var buf, c6, c22, m_pos, i2, str_len = str3.length, buf_len = 0;
              for (m_pos = 0; m_pos < str_len; m_pos++) {
                c6 = str3.charCodeAt(m_pos);
                if ((c6 & 64512) === 55296 && m_pos + 1 < str_len) {
                  c22 = str3.charCodeAt(m_pos + 1);
                  if ((c22 & 64512) === 56320) {
                    c6 = 65536 + (c6 - 55296 << 10) + (c22 - 56320);
                    m_pos++;
                  }
                }
                buf_len += c6 < 128 ? 1 : c6 < 2048 ? 2 : c6 < 65536 ? 3 : 4;
              }
              buf = new utils.Buf8(buf_len);
              for (i2 = 0, m_pos = 0; i2 < buf_len; m_pos++) {
                c6 = str3.charCodeAt(m_pos);
                if ((c6 & 64512) === 55296 && m_pos + 1 < str_len) {
                  c22 = str3.charCodeAt(m_pos + 1);
                  if ((c22 & 64512) === 56320) {
                    c6 = 65536 + (c6 - 55296 << 10) + (c22 - 56320);
                    m_pos++;
                  }
                }
                if (c6 < 128) {
                  buf[i2++] = c6;
                } else if (c6 < 2048) {
                  buf[i2++] = 192 | c6 >>> 6;
                  buf[i2++] = 128 | c6 & 63;
                } else if (c6 < 65536) {
                  buf[i2++] = 224 | c6 >>> 12;
                  buf[i2++] = 128 | c6 >>> 6 & 63;
                  buf[i2++] = 128 | c6 & 63;
                } else {
                  buf[i2++] = 240 | c6 >>> 18;
                  buf[i2++] = 128 | c6 >>> 12 & 63;
                  buf[i2++] = 128 | c6 >>> 6 & 63;
                  buf[i2++] = 128 | c6 & 63;
                }
              }
              return buf;
            };
            function buf2binstring(buf, len2) {
              if (len2 < 65534) {
                if (buf.subarray && STR_APPLY_UIA_OK || !buf.subarray && STR_APPLY_OK) {
                  return String.fromCharCode.apply(
                    null,
                    utils.shrinkBuf(buf, len2)
                  );
                }
              }
              var result = "";
              for (var i2 = 0; i2 < len2; i2++) {
                result += String.fromCharCode(buf[i2]);
              }
              return result;
            }
            exports2.buf2binstring = function(buf) {
              return buf2binstring(buf, buf.length);
            };
            exports2.binstring2buf = function(str3) {
              var buf = new utils.Buf8(str3.length);
              for (var i2 = 0, len2 = buf.length; i2 < len2; i2++) {
                buf[i2] = str3.charCodeAt(i2);
              }
              return buf;
            };
            exports2.buf2string = function(buf, max4) {
              var i2, out, c6, c_len;
              var len2 = max4 || buf.length;
              var utf16buf = new Array(len2 * 2);
              for (out = 0, i2 = 0; i2 < len2; ) {
                c6 = buf[i2++];
                if (c6 < 128) {
                  utf16buf[out++] = c6;
                  continue;
                }
                c_len = _utf8len[c6];
                if (c_len > 4) {
                  utf16buf[out++] = 65533;
                  i2 += c_len - 1;
                  continue;
                }
                c6 &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7;
                while (c_len > 1 && i2 < len2) {
                  c6 = c6 << 6 | buf[i2++] & 63;
                  c_len--;
                }
                if (c_len > 1) {
                  utf16buf[out++] = 65533;
                  continue;
                }
                if (c6 < 65536) {
                  utf16buf[out++] = c6;
                } else {
                  c6 -= 65536;
                  utf16buf[out++] = 55296 | c6 >> 10 & 1023;
                  utf16buf[out++] = 56320 | c6 & 1023;
                }
              }
              return buf2binstring(utf16buf, out);
            };
            exports2.utf8border = function(buf, max4) {
              var pos;
              max4 = max4 || buf.length;
              if (max4 > buf.length) {
                max4 = buf.length;
              }
              pos = max4 - 1;
              while (pos >= 0 && (buf[pos] & 192) === 128) {
                pos--;
              }
              if (pos < 0) {
                return max4;
              }
              if (pos === 0) {
                return max4;
              }
              return pos + _utf8len[buf[pos]] > max4 ? pos : max4;
            };
          },
          { "./common": 1 }
        ],
        3: [
          function(require2, module2, exports2) {
            "use strict";
            function adler32(adler, buf, len2, pos) {
              var s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n2 = 0;
              while (len2 !== 0) {
                n2 = len2 > 2e3 ? 2e3 : len2;
                len2 -= n2;
                do {
                  s1 = s1 + buf[pos++] | 0;
                  s2 = s2 + s1 | 0;
                } while (--n2);
                s1 %= 65521;
                s2 %= 65521;
              }
              return s1 | s2 << 16 | 0;
            }
            module2.exports = adler32;
          },
          {}
        ],
        4: [
          function(require2, module2, exports2) {
            "use strict";
            module2.exports = {
              /* Allowed flush values; see deflate() and inflate() below for details */
              Z_NO_FLUSH: 0,
              Z_PARTIAL_FLUSH: 1,
              Z_SYNC_FLUSH: 2,
              Z_FULL_FLUSH: 3,
              Z_FINISH: 4,
              Z_BLOCK: 5,
              Z_TREES: 6,
              /* Return codes for the compression/decompression functions. Negative values
               * are errors, positive values are used for special but normal events.
               */
              Z_OK: 0,
              Z_STREAM_END: 1,
              Z_NEED_DICT: 2,
              Z_ERRNO: -1,
              Z_STREAM_ERROR: -2,
              Z_DATA_ERROR: -3,
              //Z_MEM_ERROR:     -4,
              Z_BUF_ERROR: -5,
              //Z_VERSION_ERROR: -6,
              /* compression levels */
              Z_NO_COMPRESSION: 0,
              Z_BEST_SPEED: 1,
              Z_BEST_COMPRESSION: 9,
              Z_DEFAULT_COMPRESSION: -1,
              Z_FILTERED: 1,
              Z_HUFFMAN_ONLY: 2,
              Z_RLE: 3,
              Z_FIXED: 4,
              Z_DEFAULT_STRATEGY: 0,
              /* Possible values of the data_type field (though see inflate()) */
              Z_BINARY: 0,
              Z_TEXT: 1,
              //Z_ASCII:                1, // = Z_TEXT (deprecated)
              Z_UNKNOWN: 2,
              /* The deflate compression method */
              Z_DEFLATED: 8
              //Z_NULL:                 null // Use -1 or null inline, depending on var type
            };
          },
          {}
        ],
        5: [
          function(require2, module2, exports2) {
            "use strict";
            function makeTable() {
              var c6, table = [];
              for (var n2 = 0; n2 < 256; n2++) {
                c6 = n2;
                for (var k2 = 0; k2 < 8; k2++) {
                  c6 = c6 & 1 ? 3988292384 ^ c6 >>> 1 : c6 >>> 1;
                }
                table[n2] = c6;
              }
              return table;
            }
            var crcTable = makeTable();
            function crc32(crc, buf, len2, pos) {
              var t3 = crcTable, end = pos + len2;
              crc ^= -1;
              for (var i2 = pos; i2 < end; i2++) {
                crc = crc >>> 8 ^ t3[(crc ^ buf[i2]) & 255];
              }
              return crc ^ -1;
            }
            module2.exports = crc32;
          },
          {}
        ],
        6: [
          function(require2, module2, exports2) {
            "use strict";
            function GZheader() {
              this.text = 0;
              this.time = 0;
              this.xflags = 0;
              this.os = 0;
              this.extra = null;
              this.extra_len = 0;
              this.name = "";
              this.comment = "";
              this.hcrc = 0;
              this.done = false;
            }
            module2.exports = GZheader;
          },
          {}
        ],
        7: [
          function(require2, module2, exports2) {
            "use strict";
            var BAD = 30;
            var TYPE = 12;
            module2.exports = function inflate_fast(strm, start2) {
              var state2;
              var _in;
              var last;
              var _out;
              var beg;
              var end;
              var dmax;
              var wsize;
              var whave;
              var wnext;
              var s_window;
              var hold;
              var bits;
              var lcode;
              var dcode;
              var lmask;
              var dmask;
              var here;
              var op;
              var len2;
              var dist2;
              var from;
              var from_source;
              var input, output;
              state2 = strm.state;
              _in = strm.next_in;
              input = strm.input;
              last = _in + (strm.avail_in - 5);
              _out = strm.next_out;
              output = strm.output;
              beg = _out - (start2 - strm.avail_out);
              end = _out + (strm.avail_out - 257);
              dmax = state2.dmax;
              wsize = state2.wsize;
              whave = state2.whave;
              wnext = state2.wnext;
              s_window = state2.window;
              hold = state2.hold;
              bits = state2.bits;
              lcode = state2.lencode;
              dcode = state2.distcode;
              lmask = (1 << state2.lenbits) - 1;
              dmask = (1 << state2.distbits) - 1;
              top: do {
                if (bits < 15) {
                  hold += input[_in++] << bits;
                  bits += 8;
                  hold += input[_in++] << bits;
                  bits += 8;
                }
                here = lcode[hold & lmask];
                dolen: for (; ; ) {
                  op = here >>> 24;
                  hold >>>= op;
                  bits -= op;
                  op = here >>> 16 & 255;
                  if (op === 0) {
                    output[_out++] = here & 65535;
                  } else if (op & 16) {
                    len2 = here & 65535;
                    op &= 15;
                    if (op) {
                      if (bits < op) {
                        hold += input[_in++] << bits;
                        bits += 8;
                      }
                      len2 += hold & (1 << op) - 1;
                      hold >>>= op;
                      bits -= op;
                    }
                    if (bits < 15) {
                      hold += input[_in++] << bits;
                      bits += 8;
                      hold += input[_in++] << bits;
                      bits += 8;
                    }
                    here = dcode[hold & dmask];
                    dodist: for (; ; ) {
                      op = here >>> 24;
                      hold >>>= op;
                      bits -= op;
                      op = here >>> 16 & 255;
                      if (op & 16) {
                        dist2 = here & 65535;
                        op &= 15;
                        if (bits < op) {
                          hold += input[_in++] << bits;
                          bits += 8;
                          if (bits < op) {
                            hold += input[_in++] << bits;
                            bits += 8;
                          }
                        }
                        dist2 += hold & (1 << op) - 1;
                        if (dist2 > dmax) {
                          strm.msg = "invalid distance too far back";
                          state2.mode = BAD;
                          break top;
                        }
                        hold >>>= op;
                        bits -= op;
                        op = _out - beg;
                        if (dist2 > op) {
                          op = dist2 - op;
                          if (op > whave) {
                            if (state2.sane) {
                              strm.msg = "invalid distance too far back";
                              state2.mode = BAD;
                              break top;
                            }
                          }
                          from = 0;
                          from_source = s_window;
                          if (wnext === 0) {
                            from += wsize - op;
                            if (op < len2) {
                              len2 -= op;
                              do {
                                output[_out++] = s_window[from++];
                              } while (--op);
                              from = _out - dist2;
                              from_source = output;
                            }
                          } else if (wnext < op) {
                            from += wsize + wnext - op;
                            op -= wnext;
                            if (op < len2) {
                              len2 -= op;
                              do {
                                output[_out++] = s_window[from++];
                              } while (--op);
                              from = 0;
                              if (wnext < len2) {
                                op = wnext;
                                len2 -= op;
                                do {
                                  output[_out++] = s_window[from++];
                                } while (--op);
                                from = _out - dist2;
                                from_source = output;
                              }
                            }
                          } else {
                            from += wnext - op;
                            if (op < len2) {
                              len2 -= op;
                              do {
                                output[_out++] = s_window[from++];
                              } while (--op);
                              from = _out - dist2;
                              from_source = output;
                            }
                          }
                          while (len2 > 2) {
                            output[_out++] = from_source[from++];
                            output[_out++] = from_source[from++];
                            output[_out++] = from_source[from++];
                            len2 -= 3;
                          }
                          if (len2) {
                            output[_out++] = from_source[from++];
                            if (len2 > 1) {
                              output[_out++] = from_source[from++];
                            }
                          }
                        } else {
                          from = _out - dist2;
                          do {
                            output[_out++] = output[from++];
                            output[_out++] = output[from++];
                            output[_out++] = output[from++];
                            len2 -= 3;
                          } while (len2 > 2);
                          if (len2) {
                            output[_out++] = output[from++];
                            if (len2 > 1) {
                              output[_out++] = output[from++];
                            }
                          }
                        }
                      } else if ((op & 64) === 0) {
                        here = dcode[(here & 65535) + (hold & (1 << op) - 1)];
                        continue dodist;
                      } else {
                        strm.msg = "invalid distance code";
                        state2.mode = BAD;
                        break top;
                      }
                      break;
                    }
                  } else if ((op & 64) === 0) {
                    here = lcode[(here & 65535) + (hold & (1 << op) - 1)];
                    continue dolen;
                  } else if (op & 32) {
                    state2.mode = TYPE;
                    break top;
                  } else {
                    strm.msg = "invalid literal/length code";
                    state2.mode = BAD;
                    break top;
                  }
                  break;
                }
              } while (_in < last && _out < end);
              len2 = bits >> 3;
              _in -= len2;
              bits -= len2 << 3;
              hold &= (1 << bits) - 1;
              strm.next_in = _in;
              strm.next_out = _out;
              strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last);
              strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end);
              state2.hold = hold;
              state2.bits = bits;
              return;
            };
          },
          {}
        ],
        8: [
          function(require2, module2, exports2) {
            "use strict";
            var utils = require2("../utils/common");
            var adler32 = require2("./adler32");
            var crc32 = require2("./crc32");
            var inflate_fast = require2("./inffast");
            var inflate_table = require2("./inftrees");
            var CODES = 0;
            var LENS = 1;
            var DISTS = 2;
            var Z_FINISH = 4;
            var Z_BLOCK = 5;
            var Z_TREES = 6;
            var Z_OK = 0;
            var Z_STREAM_END = 1;
            var Z_NEED_DICT = 2;
            var Z_STREAM_ERROR = -2;
            var Z_DATA_ERROR = -3;
            var Z_MEM_ERROR = -4;
            var Z_BUF_ERROR = -5;
            var Z_DEFLATED = 8;
            var HEAD = 1;
            var FLAGS = 2;
            var TIME = 3;
            var OS = 4;
            var EXLEN = 5;
            var EXTRA = 6;
            var NAME = 7;
            var COMMENT = 8;
            var HCRC = 9;
            var DICTID = 10;
            var DICT = 11;
            var TYPE = 12;
            var TYPEDO = 13;
            var STORED = 14;
            var COPY_ = 15;
            var COPY = 16;
            var TABLE = 17;
            var LENLENS = 18;
            var CODELENS = 19;
            var LEN_ = 20;
            var LEN = 21;
            var LENEXT = 22;
            var DIST = 23;
            var DISTEXT = 24;
            var MATCH = 25;
            var LIT = 26;
            var CHECK = 27;
            var LENGTH = 28;
            var DONE = 29;
            var BAD = 30;
            var MEM = 31;
            var SYNC = 32;
            var ENOUGH_LENS = 852;
            var ENOUGH_DISTS = 592;
            var MAX_WBITS = 15;
            var DEF_WBITS = MAX_WBITS;
            function zswap32(q2) {
              return (q2 >>> 24 & 255) + (q2 >>> 8 & 65280) + ((q2 & 65280) << 8) + ((q2 & 255) << 24);
            }
            function InflateState() {
              this.mode = 0;
              this.last = false;
              this.wrap = 0;
              this.havedict = false;
              this.flags = 0;
              this.dmax = 0;
              this.check = 0;
              this.total = 0;
              this.head = null;
              this.wbits = 0;
              this.wsize = 0;
              this.whave = 0;
              this.wnext = 0;
              this.window = null;
              this.hold = 0;
              this.bits = 0;
              this.length = 0;
              this.offset = 0;
              this.extra = 0;
              this.lencode = null;
              this.distcode = null;
              this.lenbits = 0;
              this.distbits = 0;
              this.ncode = 0;
              this.nlen = 0;
              this.ndist = 0;
              this.have = 0;
              this.next = null;
              this.lens = new utils.Buf16(
                320
              );
              this.work = new utils.Buf16(
                288
              );
              this.lendyn = null;
              this.distdyn = null;
              this.sane = 0;
              this.back = 0;
              this.was = 0;
            }
            function inflateResetKeep(strm) {
              var state2;
              if (!strm || !strm.state) {
                return Z_STREAM_ERROR;
              }
              state2 = strm.state;
              strm.total_in = strm.total_out = state2.total = 0;
              strm.msg = "";
              if (state2.wrap) {
                strm.adler = state2.wrap & 1;
              }
              state2.mode = HEAD;
              state2.last = 0;
              state2.havedict = 0;
              state2.dmax = 32768;
              state2.head = null;
              state2.hold = 0;
              state2.bits = 0;
              state2.lencode = state2.lendyn = new utils.Buf32(
                ENOUGH_LENS
              );
              state2.distcode = state2.distdyn = new utils.Buf32(
                ENOUGH_DISTS
              );
              state2.sane = 1;
              state2.back = -1;
              return Z_OK;
            }
            function inflateReset(strm) {
              var state2;
              if (!strm || !strm.state) {
                return Z_STREAM_ERROR;
              }
              state2 = strm.state;
              state2.wsize = 0;
              state2.whave = 0;
              state2.wnext = 0;
              return inflateResetKeep(strm);
            }
            function inflateReset2(strm, windowBits) {
              var wrap;
              var state2;
              if (!strm || !strm.state) {
                return Z_STREAM_ERROR;
              }
              state2 = strm.state;
              if (windowBits < 0) {
                wrap = 0;
                windowBits = -windowBits;
              } else {
                wrap = (windowBits >> 4) + 1;
                if (windowBits < 48) {
                  windowBits &= 15;
                }
              }
              if (windowBits && (windowBits < 8 || windowBits > 15)) {
                return Z_STREAM_ERROR;
              }
              if (state2.window !== null && state2.wbits !== windowBits) {
                state2.window = null;
              }
              state2.wrap = wrap;
              state2.wbits = windowBits;
              return inflateReset(strm);
            }
            function inflateInit2(strm, windowBits) {
              var ret;
              var state2;
              if (!strm) {
                return Z_STREAM_ERROR;
              }
              state2 = new InflateState();
              strm.state = state2;
              state2.window = null;
              ret = inflateReset2(strm, windowBits);
              if (ret !== Z_OK) {
                strm.state = null;
              }
              return ret;
            }
            function inflateInit(strm) {
              return inflateInit2(strm, DEF_WBITS);
            }
            var virgin = true;
            var lenfix, distfix;
            function fixedtables(state2) {
              if (virgin) {
                var sym;
                lenfix = new utils.Buf32(512);
                distfix = new utils.Buf32(32);
                sym = 0;
                while (sym < 144) {
                  state2.lens[sym++] = 8;
                }
                while (sym < 256) {
                  state2.lens[sym++] = 9;
                }
                while (sym < 280) {
                  state2.lens[sym++] = 7;
                }
                while (sym < 288) {
                  state2.lens[sym++] = 8;
                }
                inflate_table(
                  LENS,
                  state2.lens,
                  0,
                  288,
                  lenfix,
                  0,
                  state2.work,
                  { bits: 9 }
                );
                sym = 0;
                while (sym < 32) {
                  state2.lens[sym++] = 5;
                }
                inflate_table(
                  DISTS,
                  state2.lens,
                  0,
                  32,
                  distfix,
                  0,
                  state2.work,
                  { bits: 5 }
                );
                virgin = false;
              }
              state2.lencode = lenfix;
              state2.lenbits = 9;
              state2.distcode = distfix;
              state2.distbits = 5;
            }
            function updatewindow(strm, src, end, copy3) {
              var dist2;
              var state2 = strm.state;
              if (state2.window === null) {
                state2.wsize = 1 << state2.wbits;
                state2.wnext = 0;
                state2.whave = 0;
                state2.window = new utils.Buf8(state2.wsize);
              }
              if (copy3 >= state2.wsize) {
                utils.arraySet(
                  state2.window,
                  src,
                  end - state2.wsize,
                  state2.wsize,
                  0
                );
                state2.wnext = 0;
                state2.whave = state2.wsize;
              } else {
                dist2 = state2.wsize - state2.wnext;
                if (dist2 > copy3) {
                  dist2 = copy3;
                }
                utils.arraySet(
                  state2.window,
                  src,
                  end - copy3,
                  dist2,
                  state2.wnext
                );
                copy3 -= dist2;
                if (copy3) {
                  utils.arraySet(
                    state2.window,
                    src,
                    end - copy3,
                    copy3,
                    0
                  );
                  state2.wnext = copy3;
                  state2.whave = state2.wsize;
                } else {
                  state2.wnext += dist2;
                  if (state2.wnext === state2.wsize) {
                    state2.wnext = 0;
                  }
                  if (state2.whave < state2.wsize) {
                    state2.whave += dist2;
                  }
                }
              }
              return 0;
            }
            function inflate(strm, flush2) {
              var state2;
              var input, output;
              var next;
              var put;
              var have, left;
              var hold;
              var bits;
              var _in, _out;
              var copy3;
              var from;
              var from_source;
              var here = 0;
              var here_bits, here_op, here_val;
              var last_bits, last_op, last_val;
              var len2;
              var ret;
              var hbuf = new utils.Buf8(
                4
              );
              var opts;
              var n2;
              var order = (
                /* permutation of code lengths */
                [
                  16,
                  17,
                  18,
                  0,
                  8,
                  7,
                  9,
                  6,
                  10,
                  5,
                  11,
                  4,
                  12,
                  3,
                  13,
                  2,
                  14,
                  1,
                  15
                ]
              );
              if (!strm || !strm.state || !strm.output || !strm.input && strm.avail_in !== 0) {
                return Z_STREAM_ERROR;
              }
              state2 = strm.state;
              if (state2.mode === TYPE) {
                state2.mode = TYPEDO;
              }
              put = strm.next_out;
              output = strm.output;
              left = strm.avail_out;
              next = strm.next_in;
              input = strm.input;
              have = strm.avail_in;
              hold = state2.hold;
              bits = state2.bits;
              _in = have;
              _out = left;
              ret = Z_OK;
              inf_leave: for (; ; ) {
                switch (state2.mode) {
                  case HEAD:
                    if (state2.wrap === 0) {
                      state2.mode = TYPEDO;
                      break;
                    }
                    while (bits < 16) {
                      if (have === 0) {
                        break inf_leave;
                      }
                      have--;
                      hold += input[next++] << bits;
                      bits += 8;
                    }
                    if (state2.wrap & 2 && hold === 35615) {
                      state2.check = 0;
                      hbuf[0] = hold & 255;
                      hbuf[1] = hold >>> 8 & 255;
                      state2.check = crc32(
                        state2.check,
                        hbuf,
                        2,
                        0
                      );
                      hold = 0;
                      bits = 0;
                      state2.mode = FLAGS;
                      break;
                    }
                    state2.flags = 0;
                    if (state2.head) {
                      state2.head.done = false;
                    }
                    if (!(state2.wrap & 1) || (((hold & 255) << 8) + (hold >> 8)) % 31) {
                      strm.msg = "incorrect header check";
                      state2.mode = BAD;
                      break;
                    }
                    if ((hold & 15) !== Z_DEFLATED) {
                      strm.msg = "unknown compression method";
                      state2.mode = BAD;
                      break;
                    }
                    hold >>>= 4;
                    bits -= 4;
                    len2 = (hold & 15) + 8;
                    if (state2.wbits === 0) {
                      state2.wbits = len2;
                    } else if (len2 > state2.wbits) {
                      strm.msg = "invalid window size";
                      state2.mode = BAD;
                      break;
                    }
                    state2.dmax = 1 << len2;
                    strm.adler = state2.check = 1;
                    state2.mode = hold & 512 ? DICTID : TYPE;
                    hold = 0;
                    bits = 0;
                    break;
                  case FLAGS:
                    while (bits < 16) {
                      if (have === 0) {
                        break inf_leave;
                      }
                      have--;
                      hold += input[next++] << bits;
                      bits += 8;
                    }
                    state2.flags = hold;
                    if ((state2.flags & 255) !== Z_DEFLATED) {
                      strm.msg = "unknown compression method";
                      state2.mode = BAD;
                      break;
                    }
                    if (state2.flags & 57344) {
                      strm.msg = "unknown header flags set";
                      state2.mode = BAD;
                      break;
                    }
                    if (state2.head) {
                      state2.head.text = hold >> 8 & 1;
                    }
                    if (state2.flags & 512) {
                      hbuf[0] = hold & 255;
                      hbuf[1] = hold >>> 8 & 255;
                      state2.check = crc32(
                        state2.check,
                        hbuf,
                        2,
                        0
                      );
                    }
                    hold = 0;
                    bits = 0;
                    state2.mode = TIME;
                  /* falls through */
                  case TIME:
                    while (bits < 32) {
                      if (have === 0) {
                        break inf_leave;
                      }
                      have--;
                      hold += input[next++] << bits;
                      bits += 8;
                    }
                    if (state2.head) {
                      state2.head.time = hold;
                    }
                    if (state2.flags & 512) {
                      hbuf[0] = hold & 255;
                      hbuf[1] = hold >>> 8 & 255;
                      hbuf[2] = hold >>> 16 & 255;
                      hbuf[3] = hold >>> 24 & 255;
                      state2.check = crc32(
                        state2.check,
                        hbuf,
                        4,
                        0
                      );
                    }
                    hold = 0;
                    bits = 0;
                    state2.mode = OS;
                  /* falls through */
                  case OS:
                    while (bits < 16) {
                      if (have === 0) {
                        break inf_leave;
                      }
                      have--;
                      hold += input[next++] << bits;
                      bits += 8;
                    }
                    if (state2.head) {
                      state2.head.xflags = hold & 255;
                      state2.head.os = hold >> 8;
                    }
                    if (state2.flags & 512) {
                      hbuf[0] = hold & 255;
                      hbuf[1] = hold >>> 8 & 255;
                      state2.check = crc32(
                        state2.check,
                        hbuf,
                        2,
                        0
                      );
                    }
                    hold = 0;
                    bits = 0;
                    state2.mode = EXLEN;
                  /* falls through */
                  case EXLEN:
                    if (state2.flags & 1024) {
                      while (bits < 16) {
                        if (have === 0) {
                          break inf_leave;
                        }
                        have--;
                        hold += input[next++] << bits;
                        bits += 8;
                      }
                      state2.length = hold;
                      if (state2.head) {
                        state2.head.extra_len = hold;
                      }
                      if (state2.flags & 512) {
                        hbuf[0] = hold & 255;
                        hbuf[1] = hold >>> 8 & 255;
                        state2.check = crc32(
                          state2.check,
                          hbuf,
                          2,
                          0
                        );
                      }
                      hold = 0;
                      bits = 0;
                    } else if (state2.head) {
                      state2.head.extra = null;
                    }
                    state2.mode = EXTRA;
                  /* falls through */
                  case EXTRA:
                    if (state2.flags & 1024) {
                      copy3 = state2.length;
                      if (copy3 > have) {
                        copy3 = have;
                      }
                      if (copy3) {
                        if (state2.head) {
                          len2 = state2.head.extra_len - state2.length;
                          if (!state2.head.extra) {
                            state2.head.extra = new Array(
                              state2.head.extra_len
                            );
                          }
                          utils.arraySet(
                            state2.head.extra,
                            input,
                            next,
                            // extra field is limited to 65536 bytes
                            // - no need for additional size check
                            copy3,
                            /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
                            len2
                          );
                        }
                        if (state2.flags & 512) {
                          state2.check = crc32(
                            state2.check,
                            input,
                            copy3,
                            next
                          );
                        }
                        have -= copy3;
                        next += copy3;
                        state2.length -= copy3;
                      }
                      if (state2.length) {
                        break inf_leave;
                      }
                    }
                    state2.length = 0;
                    state2.mode = NAME;
                  /* falls through */
                  case NAME:
                    if (state2.flags & 2048) {
                      if (have === 0) {
                        break inf_leave;
                      }
                      copy3 = 0;
                      do {
                        len2 = input[next + copy3++];
                        if (state2.head && len2 && state2.length < 65536) {
                          state2.head.name += String.fromCharCode(len2);
                        }
                      } while (len2 && copy3 < have);
                      if (state2.flags & 512) {
                        state2.check = crc32(
                          state2.check,
                          input,
                          copy3,
                          next
                        );
                      }
                      have -= copy3;
                      next += copy3;
                      if (len2) {
                        break inf_leave;
                      }
                    } else if (state2.head) {
                      state2.head.name = null;
                    }
                    state2.length = 0;
                    state2.mode = COMMENT;
                  /* falls through */
                  case COMMENT:
                    if (state2.flags & 4096) {
                      if (have === 0) {
                        break inf_leave;
                      }
                      copy3 = 0;
                      do {
                        len2 = input[next + copy3++];
                        if (state2.head && len2 && state2.length < 65536) {
                          state2.head.comment += String.fromCharCode(len2);
                        }
                      } while (len2 && copy3 < have);
                      if (state2.flags & 512) {
                        state2.check = crc32(
                          state2.check,
                          input,
                          copy3,
                          next
                        );
                      }
                      have -= copy3;
                      next += copy3;
                      if (len2) {
                        break inf_leave;
                      }
                    } else if (state2.head) {
                      state2.head.comment = null;
                    }
                    state2.mode = HCRC;
                  /* falls through */
                  case HCRC:
                    if (state2.flags & 512) {
                      while (bits < 16) {
                        if (have === 0) {
                          break inf_leave;
                        }
                        have--;
                        hold += input[next++] << bits;
                        bits += 8;
                      }
                      if (hold !== (state2.check & 65535)) {
                        strm.msg = "header crc mismatch";
                        state2.mode = BAD;
                        break;
                      }
                      hold = 0;
                      bits = 0;
                    }
                    if (state2.head) {
                      state2.head.hcrc = state2.flags >> 9 & 1;
                      state2.head.done = true;
                    }
                    strm.adler = state2.check = 0;
                    state2.mode = TYPE;
                    break;
                  case DICTID:
                    while (bits < 32) {
                      if (have === 0) {
                        break inf_leave;
                      }
                      have--;
                      hold += input[next++] << bits;
                      bits += 8;
                    }
                    strm.adler = state2.check = zswap32(hold);
                    hold = 0;
                    bits = 0;
                    state2.mode = DICT;
                  /* falls through */
                  case DICT:
                    if (state2.havedict === 0) {
                      strm.next_out = put;
                      strm.avail_out = left;
                      strm.next_in = next;
                      strm.avail_in = have;
                      state2.hold = hold;
                      state2.bits = bits;
                      return Z_NEED_DICT;
                    }
                    strm.adler = state2.check = 1;
                    state2.mode = TYPE;
                  /* falls through */
                  case TYPE:
                    if (flush2 === Z_BLOCK || flush2 === Z_TREES) {
                      break inf_leave;
                    }
                  /* falls through */
                  case TYPEDO:
                    if (state2.last) {
                      hold >>>= bits & 7;
                      bits -= bits & 7;
                      state2.mode = CHECK;
                      break;
                    }
                    while (bits < 3) {
                      if (have === 0) {
                        break inf_leave;
                      }
                      have--;
                      hold += input[next++] << bits;
                      bits += 8;
                    }
                    state2.last = hold & 1;
                    hold >>>= 1;
                    bits -= 1;
                    switch (hold & 3) {
                      case 0:
                        state2.mode = STORED;
                        break;
                      case 1:
                        fixedtables(state2);
                        state2.mode = LEN_;
                        if (flush2 === Z_TREES) {
                          hold >>>= 2;
                          bits -= 2;
                          break inf_leave;
                        }
                        break;
                      case 2:
                        state2.mode = TABLE;
                        break;
                      case 3:
                        strm.msg = "invalid block type";
                        state2.mode = BAD;
                    }
                    hold >>>= 2;
                    bits -= 2;
                    break;
                  case STORED:
                    hold >>>= bits & 7;
                    bits -= bits & 7;
                    while (bits < 32) {
                      if (have === 0) {
                        break inf_leave;
                      }
                      have--;
                      hold += input[next++] << bits;
                      bits += 8;
                    }
                    if ((hold & 65535) !== (hold >>> 16 ^ 65535)) {
                      strm.msg = "invalid stored block lengths";
                      state2.mode = BAD;
                      break;
                    }
                    state2.length = hold & 65535;
                    hold = 0;
                    bits = 0;
                    state2.mode = COPY_;
                    if (flush2 === Z_TREES) {
                      break inf_leave;
                    }
                  /* falls through */
                  case COPY_:
                    state2.mode = COPY;
                  /* falls through */
                  case COPY:
                    copy3 = state2.length;
                    if (copy3) {
                      if (copy3 > have) {
                        copy3 = have;
                      }
                      if (copy3 > left) {
                        copy3 = left;
                      }
                      if (copy3 === 0) {
                        break inf_leave;
                      }
                      utils.arraySet(
                        output,
                        input,
                        next,
                        copy3,
                        put
                      );
                      have -= copy3;
                      next += copy3;
                      left -= copy3;
                      put += copy3;
                      state2.length -= copy3;
                      break;
                    }
                    state2.mode = TYPE;
                    break;
                  case TABLE:
                    while (bits < 14) {
                      if (have === 0) {
                        break inf_leave;
                      }
                      have--;
                      hold += input[next++] << bits;
                      bits += 8;
                    }
                    state2.nlen = (hold & 31) + 257;
                    hold >>>= 5;
                    bits -= 5;
                    state2.ndist = (hold & 31) + 1;
                    hold >>>= 5;
                    bits -= 5;
                    state2.ncode = (hold & 15) + 4;
                    hold >>>= 4;
                    bits -= 4;
                    if (state2.nlen > 286 || state2.ndist > 30) {
                      strm.msg = "too many length or distance symbols";
                      state2.mode = BAD;
                      break;
                    }
                    state2.have = 0;
                    state2.mode = LENLENS;
                  /* falls through */
                  case LENLENS:
                    while (state2.have < state2.ncode) {
                      while (bits < 3) {
                        if (have === 0) {
                          break inf_leave;
                        }
                        have--;
                        hold += input[next++] << bits;
                        bits += 8;
                      }
                      state2.lens[order[state2.have++]] = hold & 7;
                      hold >>>= 3;
                      bits -= 3;
                    }
                    while (state2.have < 19) {
                      state2.lens[order[state2.have++]] = 0;
                    }
                    state2.lencode = state2.lendyn;
                    state2.lenbits = 7;
                    opts = { bits: state2.lenbits };
                    ret = inflate_table(
                      CODES,
                      state2.lens,
                      0,
                      19,
                      state2.lencode,
                      0,
                      state2.work,
                      opts
                    );
                    state2.lenbits = opts.bits;
                    if (ret) {
                      strm.msg = "invalid code lengths set";
                      state2.mode = BAD;
                      break;
                    }
                    state2.have = 0;
                    state2.mode = CODELENS;
                  /* falls through */
                  case CODELENS:
                    while (state2.have < state2.nlen + state2.ndist) {
                      for (; ; ) {
                        here = state2.lencode[hold & (1 << state2.lenbits) - 1];
                        here_bits = here >>> 24;
                        here_op = here >>> 16 & 255;
                        here_val = here & 65535;
                        if (here_bits <= bits) {
                          break;
                        }
                        if (have === 0) {
                          break inf_leave;
                        }
                        have--;
                        hold += input[next++] << bits;
                        bits += 8;
                      }
                      if (here_val < 16) {
                        hold >>>= here_bits;
                        bits -= here_bits;
                        state2.lens[state2.have++] = here_val;
                      } else {
                        if (here_val === 16) {
                          n2 = here_bits + 2;
                          while (bits < n2) {
                            if (have === 0) {
                              break inf_leave;
                            }
                            have--;
                            hold += input[next++] << bits;
                            bits += 8;
                          }
                          hold >>>= here_bits;
                          bits -= here_bits;
                          if (state2.have === 0) {
                            strm.msg = "invalid bit length repeat";
                            state2.mode = BAD;
                            break;
                          }
                          len2 = state2.lens[state2.have - 1];
                          copy3 = 3 + (hold & 3);
                          hold >>>= 2;
                          bits -= 2;
                        } else if (here_val === 17) {
                          n2 = here_bits + 3;
                          while (bits < n2) {
                            if (have === 0) {
                              break inf_leave;
                            }
                            have--;
                            hold += input[next++] << bits;
                            bits += 8;
                          }
                          hold >>>= here_bits;
                          bits -= here_bits;
                          len2 = 0;
                          copy3 = 3 + (hold & 7);
                          hold >>>= 3;
                          bits -= 3;
                        } else {
                          n2 = here_bits + 7;
                          while (bits < n2) {
                            if (have === 0) {
                              break inf_leave;
                            }
                            have--;
                            hold += input[next++] << bits;
                            bits += 8;
                          }
                          hold >>>= here_bits;
                          bits -= here_bits;
                          len2 = 0;
                          copy3 = 11 + (hold & 127);
                          hold >>>= 7;
                          bits -= 7;
                        }
                        if (state2.have + copy3 > state2.nlen + state2.ndist) {
                          strm.msg = "invalid bit length repeat";
                          state2.mode = BAD;
                          break;
                        }
                        while (copy3--) {
                          state2.lens[state2.have++] = len2;
                        }
                      }
                    }
                    if (state2.mode === BAD) {
                      break;
                    }
                    if (state2.lens[256] === 0) {
                      strm.msg = "invalid code -- missing end-of-block";
                      state2.mode = BAD;
                      break;
                    }
                    state2.lenbits = 9;
                    opts = { bits: state2.lenbits };
                    ret = inflate_table(
                      LENS,
                      state2.lens,
                      0,
                      state2.nlen,
                      state2.lencode,
                      0,
                      state2.work,
                      opts
                    );
                    state2.lenbits = opts.bits;
                    if (ret) {
                      strm.msg = "invalid literal/lengths set";
                      state2.mode = BAD;
                      break;
                    }
                    state2.distbits = 6;
                    state2.distcode = state2.distdyn;
                    opts = { bits: state2.distbits };
                    ret = inflate_table(
                      DISTS,
                      state2.lens,
                      state2.nlen,
                      state2.ndist,
                      state2.distcode,
                      0,
                      state2.work,
                      opts
                    );
                    state2.distbits = opts.bits;
                    if (ret) {
                      strm.msg = "invalid distances set";
                      state2.mode = BAD;
                      break;
                    }
                    state2.mode = LEN_;
                    if (flush2 === Z_TREES) {
                      break inf_leave;
                    }
                  /* falls through */
                  case LEN_:
                    state2.mode = LEN;
                  /* falls through */
                  case LEN:
                    if (have >= 6 && left >= 258) {
                      strm.next_out = put;
                      strm.avail_out = left;
                      strm.next_in = next;
                      strm.avail_in = have;
                      state2.hold = hold;
                      state2.bits = bits;
                      inflate_fast(strm, _out);
                      put = strm.next_out;
                      output = strm.output;
                      left = strm.avail_out;
                      next = strm.next_in;
                      input = strm.input;
                      have = strm.avail_in;
                      hold = state2.hold;
                      bits = state2.bits;
                      if (state2.mode === TYPE) {
                        state2.back = -1;
                      }
                      break;
                    }
                    state2.back = 0;
                    for (; ; ) {
                      here = state2.lencode[hold & (1 << state2.lenbits) - 1];
                      here_bits = here >>> 24;
                      here_op = here >>> 16 & 255;
                      here_val = here & 65535;
                      if (here_bits <= bits) {
                        break;
                      }
                      if (have === 0) {
                        break inf_leave;
                      }
                      have--;
                      hold += input[next++] << bits;
                      bits += 8;
                    }
                    if (here_op && (here_op & 240) === 0) {
                      last_bits = here_bits;
                      last_op = here_op;
                      last_val = here_val;
                      for (; ; ) {
                        here = state2.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
                        here_bits = here >>> 24;
                        here_op = here >>> 16 & 255;
                        here_val = here & 65535;
                        if (last_bits + here_bits <= bits) {
                          break;
                        }
                        if (have === 0) {
                          break inf_leave;
                        }
                        have--;
                        hold += input[next++] << bits;
                        bits += 8;
                      }
                      hold >>>= last_bits;
                      bits -= last_bits;
                      state2.back += last_bits;
                    }
                    hold >>>= here_bits;
                    bits -= here_bits;
                    state2.back += here_bits;
                    state2.length = here_val;
                    if (here_op === 0) {
                      state2.mode = LIT;
                      break;
                    }
                    if (here_op & 32) {
                      state2.back = -1;
                      state2.mode = TYPE;
                      break;
                    }
                    if (here_op & 64) {
                      strm.msg = "invalid literal/length code";
                      state2.mode = BAD;
                      break;
                    }
                    state2.extra = here_op & 15;
                    state2.mode = LENEXT;
                  /* falls through */
                  case LENEXT:
                    if (state2.extra) {
                      n2 = state2.extra;
                      while (bits < n2) {
                        if (have === 0) {
                          break inf_leave;
                        }
                        have--;
                        hold += input[next++] << bits;
                        bits += 8;
                      }
                      state2.length += hold & (1 << state2.extra) - 1;
                      hold >>>= state2.extra;
                      bits -= state2.extra;
                      state2.back += state2.extra;
                    }
                    state2.was = state2.length;
                    state2.mode = DIST;
                  /* falls through */
                  case DIST:
                    for (; ; ) {
                      here = state2.distcode[hold & (1 << state2.distbits) - 1];
                      here_bits = here >>> 24;
                      here_op = here >>> 16 & 255;
                      here_val = here & 65535;
                      if (here_bits <= bits) {
                        break;
                      }
                      if (have === 0) {
                        break inf_leave;
                      }
                      have--;
                      hold += input[next++] << bits;
                      bits += 8;
                    }
                    if ((here_op & 240) === 0) {
                      last_bits = here_bits;
                      last_op = here_op;
                      last_val = here_val;
                      for (; ; ) {
                        here = state2.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
                        here_bits = here >>> 24;
                        here_op = here >>> 16 & 255;
                        here_val = here & 65535;
                        if (last_bits + here_bits <= bits) {
                          break;
                        }
                        if (have === 0) {
                          break inf_leave;
                        }
                        have--;
                        hold += input[next++] << bits;
                        bits += 8;
                      }
                      hold >>>= last_bits;
                      bits -= last_bits;
                      state2.back += last_bits;
                    }
                    hold >>>= here_bits;
                    bits -= here_bits;
                    state2.back += here_bits;
                    if (here_op & 64) {
                      strm.msg = "invalid distance code";
                      state2.mode = BAD;
                      break;
                    }
                    state2.offset = here_val;
                    state2.extra = here_op & 15;
                    state2.mode = DISTEXT;
                  /* falls through */
                  case DISTEXT:
                    if (state2.extra) {
                      n2 = state2.extra;
                      while (bits < n2) {
                        if (have === 0) {
                          break inf_leave;
                        }
                        have--;
                        hold += input[next++] << bits;
                        bits += 8;
                      }
                      state2.offset += hold & (1 << state2.extra) - 1;
                      hold >>>= state2.extra;
                      bits -= state2.extra;
                      state2.back += state2.extra;
                    }
                    if (state2.offset > state2.dmax) {
                      strm.msg = "invalid distance too far back";
                      state2.mode = BAD;
                      break;
                    }
                    state2.mode = MATCH;
                  /* falls through */
                  case MATCH:
                    if (left === 0) {
                      break inf_leave;
                    }
                    copy3 = _out - left;
                    if (state2.offset > copy3) {
                      copy3 = state2.offset - copy3;
                      if (copy3 > state2.whave) {
                        if (state2.sane) {
                          strm.msg = "invalid distance too far back";
                          state2.mode = BAD;
                          break;
                        }
                      }
                      if (copy3 > state2.wnext) {
                        copy3 -= state2.wnext;
                        from = state2.wsize - copy3;
                      } else {
                        from = state2.wnext - copy3;
                      }
                      if (copy3 > state2.length) {
                        copy3 = state2.length;
                      }
                      from_source = state2.window;
                    } else {
                      from_source = output;
                      from = put - state2.offset;
                      copy3 = state2.length;
                    }
                    if (copy3 > left) {
                      copy3 = left;
                    }
                    left -= copy3;
                    state2.length -= copy3;
                    do {
                      output[put++] = from_source[from++];
                    } while (--copy3);
                    if (state2.length === 0) {
                      state2.mode = LEN;
                    }
                    break;
                  case LIT:
                    if (left === 0) {
                      break inf_leave;
                    }
                    output[put++] = state2.length;
                    left--;
                    state2.mode = LEN;
                    break;
                  case CHECK:
                    if (state2.wrap) {
                      while (bits < 32) {
                        if (have === 0) {
                          break inf_leave;
                        }
                        have--;
                        hold |= input[next++] << bits;
                        bits += 8;
                      }
                      _out -= left;
                      strm.total_out += _out;
                      state2.total += _out;
                      if (_out) {
                        strm.adler = state2.check = /*UPDATE(state.check, put - _out, _out);*/
                        state2.flags ? crc32(
                          state2.check,
                          output,
                          _out,
                          put - _out
                        ) : adler32(
                          state2.check,
                          output,
                          _out,
                          put - _out
                        );
                      }
                      _out = left;
                      if ((state2.flags ? hold : zswap32(hold)) !== state2.check) {
                        strm.msg = "incorrect data check";
                        state2.mode = BAD;
                        break;
                      }
                      hold = 0;
                      bits = 0;
                    }
                    state2.mode = LENGTH;
                  /* falls through */
                  case LENGTH:
                    if (state2.wrap && state2.flags) {
                      while (bits < 32) {
                        if (have === 0) {
                          break inf_leave;
                        }
                        have--;
                        hold += input[next++] << bits;
                        bits += 8;
                      }
                      if (hold !== (state2.total & 4294967295)) {
                        strm.msg = "incorrect length check";
                        state2.mode = BAD;
                        break;
                      }
                      hold = 0;
                      bits = 0;
                    }
                    state2.mode = DONE;
                  /* falls through */
                  case DONE:
                    ret = Z_STREAM_END;
                    break inf_leave;
                  case BAD:
                    ret = Z_DATA_ERROR;
                    break inf_leave;
                  case MEM:
                    return Z_MEM_ERROR;
                  case SYNC:
                  /* falls through */
                  default:
                    return Z_STREAM_ERROR;
                }
              }
              strm.next_out = put;
              strm.avail_out = left;
              strm.next_in = next;
              strm.avail_in = have;
              state2.hold = hold;
              state2.bits = bits;
              if (state2.wsize || _out !== strm.avail_out && state2.mode < BAD && (state2.mode < CHECK || flush2 !== Z_FINISH)) {
                if (updatewindow(
                  strm,
                  strm.output,
                  strm.next_out,
                  _out - strm.avail_out
                )) {
                  state2.mode = MEM;
                  return Z_MEM_ERROR;
                }
              }
              _in -= strm.avail_in;
              _out -= strm.avail_out;
              strm.total_in += _in;
              strm.total_out += _out;
              state2.total += _out;
              if (state2.wrap && _out) {
                strm.adler = state2.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
                state2.flags ? crc32(
                  state2.check,
                  output,
                  _out,
                  strm.next_out - _out
                ) : adler32(
                  state2.check,
                  output,
                  _out,
                  strm.next_out - _out
                );
              }
              strm.data_type = state2.bits + (state2.last ? 64 : 0) + (state2.mode === TYPE ? 128 : 0) + (state2.mode === LEN_ || state2.mode === COPY_ ? 256 : 0);
              if ((_in === 0 && _out === 0 || flush2 === Z_FINISH) && ret === Z_OK) {
                ret = Z_BUF_ERROR;
              }
              return ret;
            }
            function inflateEnd(strm) {
              if (!strm || !strm.state) {
                return Z_STREAM_ERROR;
              }
              var state2 = strm.state;
              if (state2.window) {
                state2.window = null;
              }
              strm.state = null;
              return Z_OK;
            }
            function inflateGetHeader(strm, head2) {
              var state2;
              if (!strm || !strm.state) {
                return Z_STREAM_ERROR;
              }
              state2 = strm.state;
              if ((state2.wrap & 2) === 0) {
                return Z_STREAM_ERROR;
              }
              state2.head = head2;
              head2.done = false;
              return Z_OK;
            }
            function inflateSetDictionary(strm, dictionary) {
              var dictLength = dictionary.length;
              var state2;
              var dictid;
              var ret;
              if (!strm || !strm.state) {
                return Z_STREAM_ERROR;
              }
              state2 = strm.state;
              if (state2.wrap !== 0 && state2.mode !== DICT) {
                return Z_STREAM_ERROR;
              }
              if (state2.mode === DICT) {
                dictid = 1;
                dictid = adler32(
                  dictid,
                  dictionary,
                  dictLength,
                  0
                );
                if (dictid !== state2.check) {
                  return Z_DATA_ERROR;
                }
              }
              ret = updatewindow(
                strm,
                dictionary,
                dictLength,
                dictLength
              );
              if (ret) {
                state2.mode = MEM;
                return Z_MEM_ERROR;
              }
              state2.havedict = 1;
              return Z_OK;
            }
            exports2.inflateReset = inflateReset;
            exports2.inflateReset2 = inflateReset2;
            exports2.inflateResetKeep = inflateResetKeep;
            exports2.inflateInit = inflateInit;
            exports2.inflateInit2 = inflateInit2;
            exports2.inflate = inflate;
            exports2.inflateEnd = inflateEnd;
            exports2.inflateGetHeader = inflateGetHeader;
            exports2.inflateSetDictionary = inflateSetDictionary;
            exports2.inflateInfo = "pako inflate (from Nodeca project)";
          },
          {
            "../utils/common": 1,
            "./adler32": 3,
            "./crc32": 5,
            "./inffast": 7,
            "./inftrees": 9
          }
        ],
        9: [
          function(require2, module2, exports2) {
            "use strict";
            var utils = require2("../utils/common");
            var MAXBITS = 15;
            var ENOUGH_LENS = 852;
            var ENOUGH_DISTS = 592;
            var CODES = 0;
            var LENS = 1;
            var DISTS = 2;
            var lbase = [
              /* Length codes 257..285 base */
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              13,
              15,
              17,
              19,
              23,
              27,
              31,
              35,
              43,
              51,
              59,
              67,
              83,
              99,
              115,
              131,
              163,
              195,
              227,
              258,
              0,
              0
            ];
            var lext = [
              /* Length codes 257..285 extra */
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              16,
              17,
              17,
              17,
              17,
              18,
              18,
              18,
              18,
              19,
              19,
              19,
              19,
              20,
              20,
              20,
              20,
              21,
              21,
              21,
              21,
              16,
              72,
              78
            ];
            var dbase = [
              /* Distance codes 0..29 base */
              1,
              2,
              3,
              4,
              5,
              7,
              9,
              13,
              17,
              25,
              33,
              49,
              65,
              97,
              129,
              193,
              257,
              385,
              513,
              769,
              1025,
              1537,
              2049,
              3073,
              4097,
              6145,
              8193,
              12289,
              16385,
              24577,
              0,
              0
            ];
            var dext = [
              /* Distance codes 0..29 extra */
              16,
              16,
              16,
              16,
              17,
              17,
              18,
              18,
              19,
              19,
              20,
              20,
              21,
              21,
              22,
              22,
              23,
              23,
              24,
              24,
              25,
              25,
              26,
              26,
              27,
              27,
              28,
              28,
              29,
              29,
              64,
              64
            ];
            module2.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {
              var bits = opts.bits;
              var len2 = 0;
              var sym = 0;
              var min4 = 0, max4 = 0;
              var root = 0;
              var curr = 0;
              var drop = 0;
              var left = 0;
              var used = 0;
              var huff = 0;
              var incr;
              var fill;
              var low;
              var mask;
              var next;
              var base = null;
              var base_index = 0;
              var end;
              var count = new utils.Buf16(MAXBITS + 1);
              var offs = new utils.Buf16(MAXBITS + 1);
              var extra = null;
              var extra_index = 0;
              var here_bits, here_op, here_val;
              for (len2 = 0; len2 <= MAXBITS; len2++) {
                count[len2] = 0;
              }
              for (sym = 0; sym < codes; sym++) {
                count[lens[lens_index + sym]]++;
              }
              root = bits;
              for (max4 = MAXBITS; max4 >= 1; max4--) {
                if (count[max4] !== 0) {
                  break;
                }
              }
              if (root > max4) {
                root = max4;
              }
              if (max4 === 0) {
                table[table_index++] = 1 << 24 | 64 << 16 | 0;
                table[table_index++] = 1 << 24 | 64 << 16 | 0;
                opts.bits = 1;
                return 0;
              }
              for (min4 = 1; min4 < max4; min4++) {
                if (count[min4] !== 0) {
                  break;
                }
              }
              if (root < min4) {
                root = min4;
              }
              left = 1;
              for (len2 = 1; len2 <= MAXBITS; len2++) {
                left <<= 1;
                left -= count[len2];
                if (left < 0) {
                  return -1;
                }
              }
              if (left > 0 && (type === CODES || max4 !== 1)) {
                return -1;
              }
              offs[1] = 0;
              for (len2 = 1; len2 < MAXBITS; len2++) {
                offs[len2 + 1] = offs[len2] + count[len2];
              }
              for (sym = 0; sym < codes; sym++) {
                if (lens[lens_index + sym] !== 0) {
                  work[offs[lens[lens_index + sym]]++] = sym;
                }
              }
              if (type === CODES) {
                base = extra = work;
                end = 19;
              } else if (type === LENS) {
                base = lbase;
                base_index -= 257;
                extra = lext;
                extra_index -= 257;
                end = 256;
              } else {
                base = dbase;
                extra = dext;
                end = -1;
              }
              huff = 0;
              sym = 0;
              len2 = min4;
              next = table_index;
              curr = root;
              drop = 0;
              low = -1;
              used = 1 << root;
              mask = used - 1;
              if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) {
                return 1;
              }
              for (; ; ) {
                here_bits = len2 - drop;
                if (work[sym] < end) {
                  here_op = 0;
                  here_val = work[sym];
                } else if (work[sym] > end) {
                  here_op = extra[extra_index + work[sym]];
                  here_val = base[base_index + work[sym]];
                } else {
                  here_op = 32 + 64;
                  here_val = 0;
                }
                incr = 1 << len2 - drop;
                fill = 1 << curr;
                min4 = fill;
                do {
                  fill -= incr;
                  table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0;
                } while (fill !== 0);
                incr = 1 << len2 - 1;
                while (huff & incr) {
                  incr >>= 1;
                }
                if (incr !== 0) {
                  huff &= incr - 1;
                  huff += incr;
                } else {
                  huff = 0;
                }
                sym++;
                if (--count[len2] === 0) {
                  if (len2 === max4) {
                    break;
                  }
                  len2 = lens[lens_index + work[sym]];
                }
                if (len2 > root && (huff & mask) !== low) {
                  if (drop === 0) {
                    drop = root;
                  }
                  next += min4;
                  curr = len2 - drop;
                  left = 1 << curr;
                  while (curr + drop < max4) {
                    left -= count[curr + drop];
                    if (left <= 0) {
                      break;
                    }
                    curr++;
                    left <<= 1;
                  }
                  used += 1 << curr;
                  if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) {
                    return 1;
                  }
                  low = huff & mask;
                  table[low] = root << 24 | curr << 16 | next - table_index | 0;
                }
              }
              if (huff !== 0) {
                table[next + huff] = len2 - drop << 24 | 64 << 16 | 0;
              }
              opts.bits = root;
              return 0;
            };
          },
          { "../utils/common": 1 }
        ],
        10: [
          function(require2, module2, exports2) {
            "use strict";
            module2.exports = {
              2: "need dictionary",
              1: "stream end",
              0: "",
              "-1": "file error",
              "-2": "stream error",
              "-3": "data error",
              "-4": "insufficient memory",
              "-5": "buffer error",
              "-6": "incompatible version"
            };
          },
          {}
        ],
        11: [
          function(require2, module2, exports2) {
            "use strict";
            function ZStream() {
              this.input = null;
              this.next_in = 0;
              this.avail_in = 0;
              this.total_in = 0;
              this.output = null;
              this.next_out = 0;
              this.avail_out = 0;
              this.total_out = 0;
              this.msg = "";
              this.state = null;
              this.data_type = 2;
              this.adler = 0;
            }
            module2.exports = ZStream;
          },
          {}
        ],
        "/lib/inflate.js": [
          function(require2, module2, exports2) {
            "use strict";
            var zlib_inflate = require2("./zlib/inflate");
            var utils = require2("./utils/common");
            var strings = require2("./utils/strings");
            var c6 = require2("./zlib/constants");
            var msg = require2("./zlib/messages");
            var ZStream = require2("./zlib/zstream");
            var GZheader = require2("./zlib/gzheader");
            var toString = Object.prototype.toString;
            function Inflate(options) {
              if (!(this instanceof Inflate))
                return new Inflate(options);
              this.options = utils.assign(
                {
                  chunkSize: 16384,
                  windowBits: 0,
                  to: ""
                },
                options || {}
              );
              var opt = this.options;
              if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) {
                opt.windowBits = -opt.windowBits;
                if (opt.windowBits === 0) {
                  opt.windowBits = -15;
                }
              }
              if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) {
                opt.windowBits += 32;
              }
              if (opt.windowBits > 15 && opt.windowBits < 48) {
                if ((opt.windowBits & 15) === 0) {
                  opt.windowBits |= 15;
                }
              }
              this.err = 0;
              this.msg = "";
              this.ended = false;
              this.chunks = [];
              this.strm = new ZStream();
              this.strm.avail_out = 0;
              var status = zlib_inflate.inflateInit2(
                this.strm,
                opt.windowBits
              );
              if (status !== c6.Z_OK) {
                throw new Error(msg[status]);
              }
              this.header = new GZheader();
              zlib_inflate.inflateGetHeader(this.strm, this.header);
              if (opt.dictionary) {
                if (typeof opt.dictionary === "string") {
                  opt.dictionary = strings.string2buf(
                    opt.dictionary
                  );
                } else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") {
                  opt.dictionary = new Uint8Array(
                    opt.dictionary
                  );
                }
                if (opt.raw) {
                  status = zlib_inflate.inflateSetDictionary(
                    this.strm,
                    opt.dictionary
                  );
                  if (status !== c6.Z_OK) {
                    throw new Error(msg[status]);
                  }
                }
              }
            }
            Inflate.prototype.push = function(data, mode) {
              var strm = this.strm;
              var chunkSize = this.options.chunkSize;
              var dictionary = this.options.dictionary;
              var status, _mode;
              var next_out_utf8, tail, utf8str;
              var allowBufError = false;
              if (this.ended) {
                return false;
              }
              _mode = mode === ~~mode ? mode : mode === true ? c6.Z_FINISH : c6.Z_NO_FLUSH;
              if (typeof data === "string") {
                strm.input = strings.binstring2buf(data);
              } else if (toString.call(data) === "[object ArrayBuffer]") {
                strm.input = new Uint8Array(data);
              } else {
                strm.input = data;
              }
              strm.next_in = 0;
              strm.avail_in = strm.input.length;
              do {
                if (strm.avail_out === 0) {
                  strm.output = new utils.Buf8(chunkSize);
                  strm.next_out = 0;
                  strm.avail_out = chunkSize;
                }
                status = zlib_inflate.inflate(
                  strm,
                  c6.Z_NO_FLUSH
                );
                if (status === c6.Z_NEED_DICT && dictionary) {
                  status = zlib_inflate.inflateSetDictionary(
                    this.strm,
                    dictionary
                  );
                }
                if (status === c6.Z_BUF_ERROR && allowBufError === true) {
                  status = c6.Z_OK;
                  allowBufError = false;
                }
                if (status !== c6.Z_STREAM_END && status !== c6.Z_OK) {
                  this.onEnd(status);
                  this.ended = true;
                  return false;
                }
                if (strm.next_out) {
                  if (strm.avail_out === 0 || status === c6.Z_STREAM_END || strm.avail_in === 0 && (_mode === c6.Z_FINISH || _mode === c6.Z_SYNC_FLUSH)) {
                    if (this.options.to === "string") {
                      next_out_utf8 = strings.utf8border(
                        strm.output,
                        strm.next_out
                      );
                      tail = strm.next_out - next_out_utf8;
                      utf8str = strings.buf2string(
                        strm.output,
                        next_out_utf8
                      );
                      strm.next_out = tail;
                      strm.avail_out = chunkSize - tail;
                      if (tail) {
                        utils.arraySet(
                          strm.output,
                          strm.output,
                          next_out_utf8,
                          tail,
                          0
                        );
                      }
                      this.onData(utf8str);
                    } else {
                      this.onData(
                        utils.shrinkBuf(
                          strm.output,
                          strm.next_out
                        )
                      );
                    }
                  }
                }
                if (strm.avail_in === 0 && strm.avail_out === 0) {
                  allowBufError = true;
                }
              } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c6.Z_STREAM_END);
              if (status === c6.Z_STREAM_END) {
                _mode = c6.Z_FINISH;
              }
              if (_mode === c6.Z_FINISH) {
                status = zlib_inflate.inflateEnd(this.strm);
                this.onEnd(status);
                this.ended = true;
                return status === c6.Z_OK;
              }
              if (_mode === c6.Z_SYNC_FLUSH) {
                this.onEnd(c6.Z_OK);
                strm.avail_out = 0;
                return true;
              }
              return true;
            };
            Inflate.prototype.onData = function(chunk2) {
              this.chunks.push(chunk2);
            };
            Inflate.prototype.onEnd = function(status) {
              if (status === c6.Z_OK) {
                if (this.options.to === "string") {
                  this.result = this.chunks.join("");
                } else {
                  this.result = utils.flattenChunks(
                    this.chunks
                  );
                }
              }
              this.chunks = [];
              this.err = status;
              this.msg = this.strm.msg;
            };
            function inflate(input, options) {
              var inflator = new Inflate(options);
              inflator.push(input, true);
              if (inflator.err) {
                throw inflator.msg || msg[inflator.err];
              }
              return inflator.result;
            }
            function inflateRaw(input, options) {
              options = options || {};
              options.raw = true;
              return inflate(input, options);
            }
            exports2.Inflate = Inflate;
            exports2.inflate = inflate;
            exports2.inflateRaw = inflateRaw;
            exports2.ungzip = inflate;
          },
          {
            "./utils/common": 1,
            "./utils/strings": 2,
            "./zlib/constants": 4,
            "./zlib/gzheader": 6,
            "./zlib/inflate": 8,
            "./zlib/messages": 10,
            "./zlib/zstream": 11
          }
        ]
      },
      {},
      []
    )("/lib/inflate.js");
  })();

  // packages/global-styles-ui/build-module/font-library/lib/lib-font.browser.mjs
  var fetchFunction = globalThis.fetch;
  var Event2 = class {
    constructor(type, detail = {}, msg) {
      this.type = type;
      this.detail = detail;
      this.msg = msg;
      Object.defineProperty(this, `__mayPropagate`, {
        enumerable: false,
        writable: true
      });
      this.__mayPropagate = true;
    }
    preventDefault() {
    }
    stopPropagation() {
      this.__mayPropagate = false;
    }
    valueOf() {
      return this;
    }
    toString() {
      return this.msg ? `[${this.type} event]: ${this.msg}` : `[${this.type} event]`;
    }
  };
  var EventManager = class {
    constructor() {
      this.listeners = {};
    }
    addEventListener(type, listener, useCapture) {
      let bin = this.listeners[type] || [];
      if (useCapture) bin.unshift(listener);
      else bin.push(listener);
      this.listeners[type] = bin;
    }
    removeEventListener(type, listener) {
      let bin = this.listeners[type] || [];
      let pos = bin.findIndex((e2) => e2 === listener);
      if (pos > -1) {
        bin.splice(pos, 1);
        this.listeners[type] = bin;
      }
    }
    dispatch(event) {
      let bin = this.listeners[event.type];
      if (bin) {
        for (let l3 = 0, e2 = bin.length; l3 < e2; l3++) {
          if (!event.__mayPropagate) break;
          bin[l3](event);
        }
      }
    }
  };
  var startDate = (/* @__PURE__ */ new Date(`1904-01-01T00:00:00+0000`)).getTime();
  function asText(data) {
    return Array.from(data).map((v3) => String.fromCharCode(v3)).join(``);
  }
  var Parser2 = class {
    constructor(dict, dataview, name2) {
      this.name = (name2 || dict.tag || ``).trim();
      this.length = dict.length;
      this.start = dict.offset;
      this.offset = 0;
      this.data = dataview;
      [
        `getInt8`,
        `getUint8`,
        `getInt16`,
        `getUint16`,
        `getInt32`,
        `getUint32`,
        `getBigInt64`,
        `getBigUint64`
      ].forEach((name3) => {
        let fn = name3.replace(/get(Big)?/, "").toLowerCase();
        let increment = parseInt(name3.replace(/[^\d]/g, "")) / 8;
        Object.defineProperty(this, fn, {
          get: () => this.getValue(name3, increment)
        });
      });
    }
    get currentPosition() {
      return this.start + this.offset;
    }
    set currentPosition(position) {
      this.start = position;
      this.offset = 0;
    }
    skip(n2 = 0, bits = 8) {
      this.offset += n2 * bits / 8;
    }
    getValue(type, increment) {
      let pos = this.start + this.offset;
      this.offset += increment;
      try {
        return this.data[type](pos);
      } catch (e2) {
        console.error(`parser`, type, increment, this);
        console.error(`parser`, this.start, this.offset);
        throw e2;
      }
    }
    flags(n2) {
      if (n2 === 8 || n2 === 16 || n2 === 32 || n2 === 64) {
        return this[`uint${n2}`].toString(2).padStart(n2, 0).split(``).map((v3) => v3 === "1");
      }
      console.error(
        `Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long`
      );
      console.trace();
    }
    get tag() {
      const t3 = this.uint32;
      return asText([
        t3 >> 24 & 255,
        t3 >> 16 & 255,
        t3 >> 8 & 255,
        t3 & 255
      ]);
    }
    get fixed() {
      let major = this.int16;
      let minor = Math.round(1e3 * this.uint16 / 65356);
      return major + minor / 1e3;
    }
    get legacyFixed() {
      let major = this.uint16;
      let minor = this.uint16.toString(16).padStart(4, 0);
      return parseFloat(`${major}.${minor}`);
    }
    get uint24() {
      return (this.uint8 << 16) + (this.uint8 << 8) + this.uint8;
    }
    get uint128() {
      let value = 0;
      for (let i2 = 0; i2 < 5; i2++) {
        let byte = this.uint8;
        value = value * 128 + (byte & 127);
        if (byte < 128) break;
      }
      return value;
    }
    get longdatetime() {
      return new Date(startDate + 1e3 * parseInt(this.int64.toString()));
    }
    get fword() {
      return this.int16;
    }
    get ufword() {
      return this.uint16;
    }
    get Offset16() {
      return this.uint16;
    }
    get Offset32() {
      return this.uint32;
    }
    get F2DOT14() {
      const bits = p.uint16;
      const integer = [0, 1, -2, -1][bits >> 14];
      const fraction = bits & 16383;
      return integer + fraction / 16384;
    }
    verifyLength() {
      if (this.offset != this.length) {
        console.error(
          `unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`
        );
      }
    }
    readBytes(n2 = 0, position = 0, bits = 8, signed = false) {
      n2 = n2 || this.length;
      if (n2 === 0) return [];
      if (position) this.currentPosition = position;
      const fn = `${signed ? `` : `u`}int${bits}`, slice2 = [];
      while (n2--) slice2.push(this[fn]);
      return slice2;
    }
  };
  var ParsedData = class {
    constructor(parser) {
      const pGetter = { enumerable: false, get: () => parser };
      Object.defineProperty(this, `parser`, pGetter);
      const start2 = parser.currentPosition;
      const startGetter = { enumerable: false, get: () => start2 };
      Object.defineProperty(this, `start`, startGetter);
    }
    load(struct) {
      Object.keys(struct).forEach((p22) => {
        let props = Object.getOwnPropertyDescriptor(struct, p22);
        if (props.get) {
          this[p22] = props.get.bind(this);
        } else if (props.value !== void 0) {
          this[p22] = props.value;
        }
      });
      if (this.parser.length) {
        this.parser.verifyLength();
      }
    }
  };
  var SimpleTable = class extends ParsedData {
    constructor(dict, dataview, name2) {
      const { parser, start: start2 } = super(
        new Parser2(dict, dataview, name2)
      );
      const pGetter = { enumerable: false, get: () => parser };
      Object.defineProperty(this, `p`, pGetter);
      const startGetter = { enumerable: false, get: () => start2 };
      Object.defineProperty(this, `tableStart`, startGetter);
    }
  };
  function lazy$1(object, property, getter) {
    let val;
    Object.defineProperty(object, property, {
      get: () => {
        if (val) return val;
        val = getter();
        return val;
      },
      enumerable: true
    });
  }
  var SFNT = class extends SimpleTable {
    constructor(font2, dataview, createTable2) {
      const { p: p22 } = super({ offset: 0, length: 12 }, dataview, `sfnt`);
      this.version = p22.uint32;
      this.numTables = p22.uint16;
      this.searchRange = p22.uint16;
      this.entrySelector = p22.uint16;
      this.rangeShift = p22.uint16;
      p22.verifyLength();
      this.directory = [...new Array(this.numTables)].map(
        (_) => new TableRecord(p22)
      );
      this.tables = {};
      this.directory.forEach((entry) => {
        const getter = () => createTable2(
          this.tables,
          {
            tag: entry.tag,
            offset: entry.offset,
            length: entry.length
          },
          dataview
        );
        lazy$1(this.tables, entry.tag.trim(), getter);
      });
    }
  };
  var TableRecord = class {
    constructor(p22) {
      this.tag = p22.tag;
      this.checksum = p22.uint32;
      this.offset = p22.uint32;
      this.length = p22.uint32;
    }
  };
  var gzipDecode = inflate_default.inflate || void 0;
  var nativeGzipDecode = void 0;
  var WOFF$1 = class extends SimpleTable {
    constructor(font2, dataview, createTable2) {
      const { p: p22 } = super({ offset: 0, length: 44 }, dataview, `woff`);
      this.signature = p22.tag;
      this.flavor = p22.uint32;
      this.length = p22.uint32;
      this.numTables = p22.uint16;
      p22.uint16;
      this.totalSfntSize = p22.uint32;
      this.majorVersion = p22.uint16;
      this.minorVersion = p22.uint16;
      this.metaOffset = p22.uint32;
      this.metaLength = p22.uint32;
      this.metaOrigLength = p22.uint32;
      this.privOffset = p22.uint32;
      this.privLength = p22.uint32;
      p22.verifyLength();
      this.directory = [...new Array(this.numTables)].map(
        (_) => new WoffTableDirectoryEntry(p22)
      );
      buildWoffLazyLookups(this, dataview, createTable2);
    }
  };
  var WoffTableDirectoryEntry = class {
    constructor(p22) {
      this.tag = p22.tag;
      this.offset = p22.uint32;
      this.compLength = p22.uint32;
      this.origLength = p22.uint32;
      this.origChecksum = p22.uint32;
    }
  };
  function buildWoffLazyLookups(woff, dataview, createTable2) {
    woff.tables = {};
    woff.directory.forEach((entry) => {
      lazy$1(woff.tables, entry.tag.trim(), () => {
        let offset4 = 0;
        let view = dataview;
        if (entry.compLength !== entry.origLength) {
          const data = dataview.buffer.slice(
            entry.offset,
            entry.offset + entry.compLength
          );
          let unpacked;
          if (gzipDecode) {
            unpacked = gzipDecode(new Uint8Array(data));
          } else if (nativeGzipDecode) {
            unpacked = nativeGzipDecode(new Uint8Array(data));
          } else {
            const msg = `no brotli decoder available to decode WOFF2 font`;
            if (font.onerror) font.onerror(msg);
            throw new Error(msg);
          }
          view = new DataView(unpacked.buffer);
        } else {
          offset4 = entry.offset;
        }
        return createTable2(
          woff.tables,
          { tag: entry.tag, offset: offset4, length: entry.origLength },
          view
        );
      });
    });
  }
  var brotliDecode = unbrotli_default;
  var nativeBrotliDecode = void 0;
  var WOFF2$1 = class extends SimpleTable {
    constructor(font2, dataview, createTable2) {
      const { p: p22 } = super({ offset: 0, length: 48 }, dataview, `woff2`);
      this.signature = p22.tag;
      this.flavor = p22.uint32;
      this.length = p22.uint32;
      this.numTables = p22.uint16;
      p22.uint16;
      this.totalSfntSize = p22.uint32;
      this.totalCompressedSize = p22.uint32;
      this.majorVersion = p22.uint16;
      this.minorVersion = p22.uint16;
      this.metaOffset = p22.uint32;
      this.metaLength = p22.uint32;
      this.metaOrigLength = p22.uint32;
      this.privOffset = p22.uint32;
      this.privLength = p22.uint32;
      p22.verifyLength();
      this.directory = [...new Array(this.numTables)].map(
        (_) => new Woff2TableDirectoryEntry(p22)
      );
      let dictOffset = p22.currentPosition;
      this.directory[0].offset = 0;
      this.directory.forEach((e2, i2) => {
        let next = this.directory[i2 + 1];
        if (next) {
          next.offset = e2.offset + (e2.transformLength !== void 0 ? e2.transformLength : e2.origLength);
        }
      });
      let decoded;
      let buffer = dataview.buffer.slice(dictOffset);
      if (brotliDecode) {
        decoded = brotliDecode(new Uint8Array(buffer));
      } else if (nativeBrotliDecode) {
        decoded = new Uint8Array(nativeBrotliDecode(buffer));
      } else {
        const msg = `no brotli decoder available to decode WOFF2 font`;
        if (font2.onerror) font2.onerror(msg);
        throw new Error(msg);
      }
      buildWoff2LazyLookups(this, decoded, createTable2);
    }
  };
  var Woff2TableDirectoryEntry = class {
    constructor(p22) {
      this.flags = p22.uint8;
      const tagNumber = this.tagNumber = this.flags & 63;
      if (tagNumber === 63) {
        this.tag = p22.tag;
      } else {
        this.tag = getWOFF2Tag(tagNumber);
      }
      const transformVersion = this.transformVersion = (this.flags & 192) >> 6;
      let hasTransforms = transformVersion !== 0;
      if (this.tag === `glyf` || this.tag === `loca`) {
        hasTransforms = this.transformVersion !== 3;
      }
      this.origLength = p22.uint128;
      if (hasTransforms) {
        this.transformLength = p22.uint128;
      }
    }
  };
  function buildWoff2LazyLookups(woff2, decoded, createTable2) {
    woff2.tables = {};
    woff2.directory.forEach((entry) => {
      lazy$1(woff2.tables, entry.tag.trim(), () => {
        const start2 = entry.offset;
        const end = start2 + (entry.transformLength ? entry.transformLength : entry.origLength);
        const data = new DataView(decoded.slice(start2, end).buffer);
        try {
          return createTable2(
            woff2.tables,
            { tag: entry.tag, offset: 0, length: entry.origLength },
            data
          );
        } catch (e2) {
          console.error(e2);
        }
      });
    });
  }
  function getWOFF2Tag(flag) {
    return [
      `cmap`,
      `head`,
      `hhea`,
      `hmtx`,
      `maxp`,
      `name`,
      `OS/2`,
      `post`,
      `cvt `,
      `fpgm`,
      `glyf`,
      `loca`,
      `prep`,
      `CFF `,
      `VORG`,
      `EBDT`,
      `EBLC`,
      `gasp`,
      `hdmx`,
      `kern`,
      `LTSH`,
      `PCLT`,
      `VDMX`,
      `vhea`,
      `vmtx`,
      `BASE`,
      `GDEF`,
      `GPOS`,
      `GSUB`,
      `EBSC`,
      `JSTF`,
      `MATH`,
      `CBDT`,
      `CBLC`,
      `COLR`,
      `CPAL`,
      `SVG `,
      `sbix`,
      `acnt`,
      `avar`,
      `bdat`,
      `bloc`,
      `bsln`,
      `cvar`,
      `fdsc`,
      `feat`,
      `fmtx`,
      `fvar`,
      `gvar`,
      `hsty`,
      `just`,
      `lcar`,
      `mort`,
      `morx`,
      `opbd`,
      `prop`,
      `trak`,
      `Zapf`,
      `Silf`,
      `Glat`,
      `Gloc`,
      `Feat`,
      `Sill`
    ][flag & 63];
  }
  var tableClasses = {};
  var tableClassesLoaded = false;
  Promise.all([
    Promise.resolve().then(function() {
      return cmap$1;
    }),
    Promise.resolve().then(function() {
      return head$1;
    }),
    Promise.resolve().then(function() {
      return hhea$1;
    }),
    Promise.resolve().then(function() {
      return hmtx$1;
    }),
    Promise.resolve().then(function() {
      return maxp$1;
    }),
    Promise.resolve().then(function() {
      return name$1;
    }),
    Promise.resolve().then(function() {
      return OS2$1;
    }),
    Promise.resolve().then(function() {
      return post$1;
    }),
    Promise.resolve().then(function() {
      return BASE$1;
    }),
    Promise.resolve().then(function() {
      return GDEF$1;
    }),
    Promise.resolve().then(function() {
      return GSUB$1;
    }),
    Promise.resolve().then(function() {
      return GPOS$1;
    }),
    Promise.resolve().then(function() {
      return SVG$1;
    }),
    Promise.resolve().then(function() {
      return fvar$1;
    }),
    Promise.resolve().then(function() {
      return cvt$1;
    }),
    Promise.resolve().then(function() {
      return fpgm$1;
    }),
    Promise.resolve().then(function() {
      return gasp$1;
    }),
    Promise.resolve().then(function() {
      return glyf$1;
    }),
    Promise.resolve().then(function() {
      return loca$1;
    }),
    Promise.resolve().then(function() {
      return prep$1;
    }),
    Promise.resolve().then(function() {
      return CFF$1;
    }),
    Promise.resolve().then(function() {
      return CFF2$1;
    }),
    Promise.resolve().then(function() {
      return VORG$1;
    }),
    Promise.resolve().then(function() {
      return EBLC$1;
    }),
    Promise.resolve().then(function() {
      return EBDT$1;
    }),
    Promise.resolve().then(function() {
      return EBSC$1;
    }),
    Promise.resolve().then(function() {
      return CBLC$1;
    }),
    Promise.resolve().then(function() {
      return CBDT$1;
    }),
    Promise.resolve().then(function() {
      return sbix$1;
    }),
    Promise.resolve().then(function() {
      return COLR$1;
    }),
    Promise.resolve().then(function() {
      return CPAL$1;
    }),
    Promise.resolve().then(function() {
      return DSIG$1;
    }),
    Promise.resolve().then(function() {
      return hdmx$1;
    }),
    Promise.resolve().then(function() {
      return kern$1;
    }),
    Promise.resolve().then(function() {
      return LTSH$1;
    }),
    Promise.resolve().then(function() {
      return MERG$1;
    }),
    Promise.resolve().then(function() {
      return meta$1;
    }),
    Promise.resolve().then(function() {
      return PCLT$1;
    }),
    Promise.resolve().then(function() {
      return VDMX$1;
    }),
    Promise.resolve().then(function() {
      return vhea$1;
    }),
    Promise.resolve().then(function() {
      return vmtx$1;
    })
  ]).then((data) => {
    data.forEach((e2) => {
      let name2 = Object.keys(e2)[0];
      tableClasses[name2] = e2[name2];
    });
    tableClassesLoaded = true;
  });
  function createTable(tables, dict, dataview) {
    let name2 = dict.tag.replace(/[^\w\d]/g, ``);
    let Type = tableClasses[name2];
    if (Type) return new Type(dict, dataview, tables);
    console.warn(
      `lib-font has no definition for ${name2}. The table was skipped.`
    );
    return {};
  }
  function loadTableClasses() {
    let count = 0;
    function checkLoaded(resolve, reject) {
      if (!tableClassesLoaded) {
        if (count > 10) {
          return reject(new Error(`loading took too long`));
        }
        count++;
        return setTimeout(() => checkLoaded(resolve), 250);
      }
      resolve(createTable);
    }
    return new Promise((resolve, reject) => checkLoaded(resolve));
  }
  function getFontCSSFormat(path, errorOnStyle) {
    let pos = path.lastIndexOf(`.`);
    let ext = (path.substring(pos + 1) || ``).toLowerCase();
    let format7 = {
      ttf: `truetype`,
      otf: `opentype`,
      woff: `woff`,
      woff2: `woff2`
    }[ext];
    if (format7) return format7;
    let msg = {
      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.`,
      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.`,
      fon: `The .fon format is not supported: this is an ancient Windows bitmap font format.`,
      ttc: `Based on the current CSS specification, font collections are not (yet?) supported.`
    }[ext];
    if (!msg) msg = `${path} is not a known webfont format.`;
    if (errorOnStyle) {
      throw new Error(msg);
    } else {
      console.warn(`Could not load font: ${msg}`);
    }
  }
  async function setupFontFace(name2, url, options = {}) {
    if (!globalThis.document) return;
    let format7 = getFontCSSFormat(url, options.errorOnStyle);
    if (!format7) return;
    let style = document.createElement(`style`);
    style.className = `injected-by-Font-js`;
    let rules = [];
    if (options.styleRules) {
      rules = Object.entries(options.styleRules).map(
        ([key, value]) => `${key}: ${value};`
      );
    }
    style.textContent = `
@font-face {
    font-family: "${name2}";
    ${rules.join(
      `
	`
    )}
    src: url("${url}") format("${format7}");
}`;
    globalThis.document.head.appendChild(style);
    return style;
  }
  var TTF = [0, 1, 0, 0];
  var OTF = [79, 84, 84, 79];
  var WOFF = [119, 79, 70, 70];
  var WOFF2 = [119, 79, 70, 50];
  function match2(ar1, ar2) {
    if (ar1.length !== ar2.length) return;
    for (let i2 = 0; i2 < ar1.length; i2++) {
      if (ar1[i2] !== ar2[i2]) return;
    }
    return true;
  }
  function validFontFormat(dataview) {
    const LEAD_BYTES = [
      dataview.getUint8(0),
      dataview.getUint8(1),
      dataview.getUint8(2),
      dataview.getUint8(3)
    ];
    if (match2(LEAD_BYTES, TTF) || match2(LEAD_BYTES, OTF)) return `SFNT`;
    if (match2(LEAD_BYTES, WOFF)) return `WOFF`;
    if (match2(LEAD_BYTES, WOFF2)) return `WOFF2`;
  }
  function checkFetchResponseStatus(response) {
    if (!response.ok) {
      throw new Error(
        `HTTP ${response.status} - ${response.statusText}`
      );
    }
    return response;
  }
  var Font = class extends EventManager {
    constructor(name2, options = {}) {
      super();
      this.name = name2;
      this.options = options;
      this.metrics = false;
    }
    get src() {
      return this.__src;
    }
    set src(src) {
      this.__src = src;
      (async () => {
        if (globalThis.document && !this.options.skipStyleSheet) {
          await setupFontFace(this.name, src, this.options);
        }
        this.loadFont(src);
      })();
    }
    async loadFont(url, filename) {
      fetch(url).then(
        (response) => checkFetchResponseStatus(response) && response.arrayBuffer()
      ).then(
        (buffer) => this.fromDataBuffer(buffer, filename || url)
      ).catch((err) => {
        const evt = new Event2(
          `error`,
          err,
          `Failed to load font at ${filename || url}`
        );
        this.dispatch(evt);
        if (this.onerror) this.onerror(evt);
      });
    }
    async fromDataBuffer(buffer, filenameOrUrL) {
      this.fontData = new DataView(buffer);
      let type = validFontFormat(this.fontData);
      if (!type) {
        throw new Error(
          `${filenameOrUrL} is either an unsupported font format, or not a font at all.`
        );
      }
      await this.parseBasicData(type);
      const evt = new Event2("load", { font: this });
      this.dispatch(evt);
      if (this.onload) this.onload(evt);
    }
    async parseBasicData(type) {
      return loadTableClasses().then((createTable2) => {
        if (type === `SFNT`) {
          this.opentype = new SFNT(this, this.fontData, createTable2);
        }
        if (type === `WOFF`) {
          this.opentype = new WOFF$1(this, this.fontData, createTable2);
        }
        if (type === `WOFF2`) {
          this.opentype = new WOFF2$1(this, this.fontData, createTable2);
        }
        return this.opentype;
      });
    }
    getGlyphId(char) {
      return this.opentype.tables.cmap.getGlyphId(char);
    }
    reverse(glyphid) {
      return this.opentype.tables.cmap.reverse(glyphid);
    }
    supports(char) {
      return this.getGlyphId(char) !== 0;
    }
    supportsVariation(variation) {
      return this.opentype.tables.cmap.supportsVariation(variation) !== false;
    }
    measureText(text, size4 = 16) {
      if (this.__unloaded)
        throw new Error(
          "Cannot measure text: font was unloaded. Please reload before calling measureText()"
        );
      let d2 = document.createElement("div");
      d2.textContent = text;
      d2.style.fontFamily = this.name;
      d2.style.fontSize = `${size4}px`;
      d2.style.color = `transparent`;
      d2.style.background = `transparent`;
      d2.style.top = `0`;
      d2.style.left = `0`;
      d2.style.position = `absolute`;
      document.body.appendChild(d2);
      let bbox = d2.getBoundingClientRect();
      document.body.removeChild(d2);
      const OS22 = this.opentype.tables["OS/2"];
      bbox.fontSize = size4;
      bbox.ascender = OS22.sTypoAscender;
      bbox.descender = OS22.sTypoDescender;
      return bbox;
    }
    unload() {
      if (this.styleElement.parentNode) {
        this.styleElement.parentNode.removeElement(this.styleElement);
        const evt = new Event2("unload", { font: this });
        this.dispatch(evt);
        if (this.onunload) this.onunload(evt);
      }
      this._unloaded = true;
    }
    load() {
      if (this.__unloaded) {
        delete this.__unloaded;
        document.head.appendChild(this.styleElement);
        const evt = new Event2("load", { font: this });
        this.dispatch(evt);
        if (this.onload) this.onload(evt);
      }
    }
  };
  globalThis.Font = Font;
  var Subtable = class extends ParsedData {
    constructor(p22, plaformID, encodingID) {
      super(p22);
      this.plaformID = plaformID;
      this.encodingID = encodingID;
    }
  };
  var Format0 = class extends Subtable {
    constructor(p22, platformID, encodingID) {
      super(p22, platformID, encodingID);
      this.format = 0;
      this.length = p22.uint16;
      this.language = p22.uint16;
      this.glyphIdArray = [...new Array(256)].map((_) => p22.uint8);
    }
    supports(charCode) {
      if (charCode.charCodeAt) {
        charCode = -1;
        console.warn(
          `supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.`
        );
      }
      return 0 <= charCode && charCode <= 255;
    }
    reverse(glyphID) {
      console.warn(`reverse not implemented for cmap subtable format 0`);
      return {};
    }
    getSupportedCharCodes() {
      return [{ start: 1, end: 256 }];
    }
  };
  var Format2 = class extends Subtable {
    constructor(p22, platformID, encodingID) {
      super(p22, platformID, encodingID);
      this.format = 2;
      this.length = p22.uint16;
      this.language = p22.uint16;
      this.subHeaderKeys = [...new Array(256)].map((_) => p22.uint16);
      const subHeaderCount = Math.max(...this.subHeaderKeys);
      const subHeaderOffset = p22.currentPosition;
      lazy$1(this, `subHeaders`, () => {
        p22.currentPosition = subHeaderOffset;
        return [...new Array(subHeaderCount)].map(
          (_) => new SubHeader(p22)
        );
      });
      const glyphIndexOffset = subHeaderOffset + subHeaderCount * 8;
      lazy$1(this, `glyphIndexArray`, () => {
        p22.currentPosition = glyphIndexOffset;
        return [...new Array(subHeaderCount)].map((_) => p22.uint16);
      });
    }
    supports(charCode) {
      if (charCode.charCodeAt) {
        charCode = -1;
        console.warn(
          `supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented.`
        );
      }
      const low = charCode && 255;
      const high = charCode && 65280;
      const subHeaderKey = this.subHeaders[high];
      const subheader = this.subHeaders[subHeaderKey];
      const first = subheader.firstCode;
      const last = first + subheader.entryCount;
      return first <= low && low <= last;
    }
    reverse(glyphID) {
      console.warn(`reverse not implemented for cmap subtable format 2`);
      return {};
    }
    getSupportedCharCodes(preservePropNames = false) {
      if (preservePropNames) {
        return this.subHeaders.map((h2) => ({
          firstCode: h2.firstCode,
          lastCode: h2.lastCode
        }));
      }
      return this.subHeaders.map((h2) => ({
        start: h2.firstCode,
        end: h2.lastCode
      }));
    }
  };
  var SubHeader = class {
    constructor(p22) {
      this.firstCode = p22.uint16;
      this.entryCount = p22.uint16;
      this.lastCode = this.first + this.entryCount;
      this.idDelta = p22.int16;
      this.idRangeOffset = p22.uint16;
    }
  };
  var Format4 = class extends Subtable {
    constructor(p22, platformID, encodingID) {
      super(p22, platformID, encodingID);
      this.format = 4;
      this.length = p22.uint16;
      this.language = p22.uint16;
      this.segCountX2 = p22.uint16;
      this.segCount = this.segCountX2 / 2;
      this.searchRange = p22.uint16;
      this.entrySelector = p22.uint16;
      this.rangeShift = p22.uint16;
      const endCodePosition = p22.currentPosition;
      lazy$1(
        this,
        `endCode`,
        () => p22.readBytes(this.segCount, endCodePosition, 16)
      );
      const startCodePosition = endCodePosition + 2 + this.segCountX2;
      lazy$1(
        this,
        `startCode`,
        () => p22.readBytes(this.segCount, startCodePosition, 16)
      );
      const idDeltaPosition = startCodePosition + this.segCountX2;
      lazy$1(
        this,
        `idDelta`,
        () => p22.readBytes(this.segCount, idDeltaPosition, 16, true)
      );
      const idRangePosition = idDeltaPosition + this.segCountX2;
      lazy$1(
        this,
        `idRangeOffset`,
        () => p22.readBytes(this.segCount, idRangePosition, 16)
      );
      const glyphIdArrayPosition = idRangePosition + this.segCountX2;
      const glyphIdArrayLength = this.length - (glyphIdArrayPosition - this.tableStart);
      lazy$1(
        this,
        `glyphIdArray`,
        () => p22.readBytes(glyphIdArrayLength, glyphIdArrayPosition, 16)
      );
      lazy$1(
        this,
        `segments`,
        () => this.buildSegments(idRangePosition, glyphIdArrayPosition, p22)
      );
    }
    buildSegments(idRangePosition, glyphIdArrayPosition, p22) {
      const build = (_, i2) => {
        let startCode = this.startCode[i2], endCode = this.endCode[i2], idDelta = this.idDelta[i2], idRangeOffset = this.idRangeOffset[i2], idRangeOffsetPointer = idRangePosition + 2 * i2, glyphIDs = [];
        if (idRangeOffset === 0) {
          for (let i22 = startCode + idDelta, e2 = endCode + idDelta; i22 <= e2; i22++) {
            glyphIDs.push(i22);
          }
        } else {
          for (let i22 = 0, e2 = endCode - startCode; i22 <= e2; i22++) {
            p22.currentPosition = idRangeOffsetPointer + idRangeOffset + i22 * 2;
            glyphIDs.push(p22.uint16);
          }
        }
        return {
          startCode,
          endCode,
          idDelta,
          idRangeOffset,
          glyphIDs
        };
      };
      return [...new Array(this.segCount)].map(build);
    }
    reverse(glyphID) {
      let s2 = this.segments.find((v3) => v3.glyphIDs.includes(glyphID));
      if (!s2) return {};
      const code = s2.startCode + s2.glyphIDs.indexOf(glyphID);
      return { code, unicode: String.fromCodePoint(code) };
    }
    getGlyphId(charCode) {
      if (charCode.charCodeAt) charCode = charCode.charCodeAt(0);
      if (55296 <= charCode && charCode <= 57343) return 0;
      if ((charCode & 65534) === 65534 || (charCode & 65535) === 65535)
        return 0;
      let segment2 = this.segments.find(
        (s2) => s2.startCode <= charCode && charCode <= s2.endCode
      );
      if (!segment2) return 0;
      return segment2.glyphIDs[charCode - segment2.startCode];
    }
    supports(charCode) {
      return this.getGlyphId(charCode) !== 0;
    }
    getSupportedCharCodes(preservePropNames = false) {
      if (preservePropNames) return this.segments;
      return this.segments.map((v3) => ({
        start: v3.startCode,
        end: v3.endCode
      }));
    }
  };
  var Format6 = class extends Subtable {
    constructor(p22, platformID, encodingID) {
      super(p22, platformID, encodingID);
      this.format = 6;
      this.length = p22.uint16;
      this.language = p22.uint16;
      this.firstCode = p22.uint16;
      this.entryCount = p22.uint16;
      this.lastCode = this.firstCode + this.entryCount - 1;
      const getter = () => [...new Array(this.entryCount)].map((_) => p22.uint16);
      lazy$1(this, `glyphIdArray`, getter);
    }
    supports(charCode) {
      if (charCode.charCodeAt) {
        charCode = -1;
        console.warn(
          `supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.`
        );
      }
      if (charCode < this.firstCode) return {};
      if (charCode > this.firstCode + this.entryCount) return {};
      const code = charCode - this.firstCode;
      return { code, unicode: String.fromCodePoint(code) };
    }
    reverse(glyphID) {
      let pos = this.glyphIdArray.indexOf(glyphID);
      if (pos > -1) return this.firstCode + pos;
    }
    getSupportedCharCodes(preservePropNames = false) {
      if (preservePropNames) {
        return [{ firstCode: this.firstCode, lastCode: this.lastCode }];
      }
      return [{ start: this.firstCode, end: this.lastCode }];
    }
  };
  var Format8 = class extends Subtable {
    constructor(p22, platformID, encodingID) {
      super(p22, platformID, encodingID);
      this.format = 8;
      p22.uint16;
      this.length = p22.uint32;
      this.language = p22.uint32;
      this.is32 = [...new Array(8192)].map((_) => p22.uint8);
      this.numGroups = p22.uint32;
      const getter = () => [...new Array(this.numGroups)].map(
        (_) => new SequentialMapGroup$1(p22)
      );
      lazy$1(this, `groups`, getter);
    }
    supports(charCode) {
      if (charCode.charCodeAt) {
        charCode = -1;
        console.warn(
          `supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.`
        );
      }
      return this.groups.findIndex(
        (s2) => s2.startcharCode <= charCode && charCode <= s2.endcharCode
      ) !== -1;
    }
    reverse(glyphID) {
      console.warn(`reverse not implemented for cmap subtable format 8`);
      return {};
    }
    getSupportedCharCodes(preservePropNames = false) {
      if (preservePropNames) return this.groups;
      return this.groups.map((v3) => ({
        start: v3.startcharCode,
        end: v3.endcharCode
      }));
    }
  };
  var SequentialMapGroup$1 = class {
    constructor(p22) {
      this.startcharCode = p22.uint32;
      this.endcharCode = p22.uint32;
      this.startGlyphID = p22.uint32;
    }
  };
  var Format10 = class extends Subtable {
    constructor(p22, platformID, encodingID) {
      super(p22, platformID, encodingID);
      this.format = 10;
      p22.uint16;
      this.length = p22.uint32;
      this.language = p22.uint32;
      this.startCharCode = p22.uint32;
      this.numChars = p22.uint32;
      this.endCharCode = this.startCharCode + this.numChars;
      const getter = () => [...new Array(this.numChars)].map((_) => p22.uint16);
      lazy$1(this, `glyphs`, getter);
    }
    supports(charCode) {
      if (charCode.charCodeAt) {
        charCode = -1;
        console.warn(
          `supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.`
        );
      }
      if (charCode < this.startCharCode) return false;
      if (charCode > this.startCharCode + this.numChars) return false;
      return charCode - this.startCharCode;
    }
    reverse(glyphID) {
      console.warn(`reverse not implemented for cmap subtable format 10`);
      return {};
    }
    getSupportedCharCodes(preservePropNames = false) {
      if (preservePropNames) {
        return [
          {
            startCharCode: this.startCharCode,
            endCharCode: this.endCharCode
          }
        ];
      }
      return [{ start: this.startCharCode, end: this.endCharCode }];
    }
  };
  var Format12 = class extends Subtable {
    constructor(p22, platformID, encodingID) {
      super(p22, platformID, encodingID);
      this.format = 12;
      p22.uint16;
      this.length = p22.uint32;
      this.language = p22.uint32;
      this.numGroups = p22.uint32;
      const getter = () => [...new Array(this.numGroups)].map(
        (_) => new SequentialMapGroup(p22)
      );
      lazy$1(this, `groups`, getter);
    }
    supports(charCode) {
      if (charCode.charCodeAt) charCode = charCode.charCodeAt(0);
      if (55296 <= charCode && charCode <= 57343) return 0;
      if ((charCode & 65534) === 65534 || (charCode & 65535) === 65535)
        return 0;
      return this.groups.findIndex(
        (s2) => s2.startCharCode <= charCode && charCode <= s2.endCharCode
      ) !== -1;
    }
    reverse(glyphID) {
      for (let group of this.groups) {
        let start2 = group.startGlyphID;
        if (start2 > glyphID) continue;
        if (start2 === glyphID) return group.startCharCode;
        let end = start2 + (group.endCharCode - group.startCharCode);
        if (end < glyphID) continue;
        const code = group.startCharCode + (glyphID - start2);
        return { code, unicode: String.fromCodePoint(code) };
      }
      return {};
    }
    getSupportedCharCodes(preservePropNames = false) {
      if (preservePropNames) return this.groups;
      return this.groups.map((v3) => ({
        start: v3.startCharCode,
        end: v3.endCharCode
      }));
    }
  };
  var SequentialMapGroup = class {
    constructor(p22) {
      this.startCharCode = p22.uint32;
      this.endCharCode = p22.uint32;
      this.startGlyphID = p22.uint32;
    }
  };
  var Format13 = class extends Subtable {
    constructor(p22, platformID, encodingID) {
      super(p22, platformID, encodingID);
      this.format = 13;
      p22.uint16;
      this.length = p22.uint32;
      this.language = p22.uint32;
      this.numGroups = p22.uint32;
      const getter = [...new Array(this.numGroups)].map(
        (_) => new ConstantMapGroup(p22)
      );
      lazy$1(this, `groups`, getter);
    }
    supports(charCode) {
      if (charCode.charCodeAt) charCode = charCode.charCodeAt(0);
      return this.groups.findIndex(
        (s2) => s2.startCharCode <= charCode && charCode <= s2.endCharCode
      ) !== -1;
    }
    reverse(glyphID) {
      console.warn(`reverse not implemented for cmap subtable format 13`);
      return {};
    }
    getSupportedCharCodes(preservePropNames = false) {
      if (preservePropNames) return this.groups;
      return this.groups.map((v3) => ({
        start: v3.startCharCode,
        end: v3.endCharCode
      }));
    }
  };
  var ConstantMapGroup = class {
    constructor(p22) {
      this.startCharCode = p22.uint32;
      this.endCharCode = p22.uint32;
      this.glyphID = p22.uint32;
    }
  };
  var Format14 = class extends Subtable {
    constructor(p22, platformID, encodingID) {
      super(p22, platformID, encodingID);
      this.subTableStart = p22.currentPosition;
      this.format = 14;
      this.length = p22.uint32;
      this.numVarSelectorRecords = p22.uint32;
      lazy$1(
        this,
        `varSelectors`,
        () => [...new Array(this.numVarSelectorRecords)].map(
          (_) => new VariationSelector(p22)
        )
      );
    }
    supports() {
      console.warn(`supports not implemented for cmap subtable format 14`);
      return 0;
    }
    getSupportedCharCodes() {
      console.warn(
        `getSupportedCharCodes not implemented for cmap subtable format 14`
      );
      return [];
    }
    reverse(glyphID) {
      console.warn(`reverse not implemented for cmap subtable format 14`);
      return {};
    }
    supportsVariation(variation) {
      let v3 = this.varSelector.find(
        (uvs) => uvs.varSelector === variation
      );
      return v3 ? v3 : false;
    }
    getSupportedVariations() {
      return this.varSelectors.map((v3) => v3.varSelector);
    }
  };
  var VariationSelector = class {
    constructor(p22) {
      this.varSelector = p22.uint24;
      this.defaultUVSOffset = p22.Offset32;
      this.nonDefaultUVSOffset = p22.Offset32;
    }
  };
  function createSubTable(parser, platformID, encodingID) {
    const format7 = parser.uint16;
    if (format7 === 0) return new Format0(parser, platformID, encodingID);
    if (format7 === 2) return new Format2(parser, platformID, encodingID);
    if (format7 === 4) return new Format4(parser, platformID, encodingID);
    if (format7 === 6) return new Format6(parser, platformID, encodingID);
    if (format7 === 8) return new Format8(parser, platformID, encodingID);
    if (format7 === 10) return new Format10(parser, platformID, encodingID);
    if (format7 === 12) return new Format12(parser, platformID, encodingID);
    if (format7 === 13) return new Format13(parser, platformID, encodingID);
    if (format7 === 14) return new Format14(parser, platformID, encodingID);
    return {};
  }
  var cmap = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.uint16;
      this.numTables = p22.uint16;
      this.encodingRecords = [...new Array(this.numTables)].map(
        (_) => new EncodingRecord(p22, this.tableStart)
      );
    }
    getSubTable(tableID) {
      return this.encodingRecords[tableID].table;
    }
    getSupportedEncodings() {
      return this.encodingRecords.map((r4) => ({
        platformID: r4.platformID,
        encodingId: r4.encodingID
      }));
    }
    getSupportedCharCodes(platformID, encodingID) {
      const recordID = this.encodingRecords.findIndex(
        (r4) => r4.platformID === platformID && r4.encodingID === encodingID
      );
      if (recordID === -1) return false;
      const subtable = this.getSubTable(recordID);
      return subtable.getSupportedCharCodes();
    }
    reverse(glyphid) {
      for (let i2 = 0; i2 < this.numTables; i2++) {
        let code = this.getSubTable(i2).reverse(glyphid);
        if (code) return code;
      }
    }
    getGlyphId(char) {
      let last = 0;
      this.encodingRecords.some((_, tableID) => {
        let t3 = this.getSubTable(tableID);
        if (!t3.getGlyphId) return false;
        last = t3.getGlyphId(char);
        return last !== 0;
      });
      return last;
    }
    supports(char) {
      return this.encodingRecords.some((_, tableID) => {
        const t3 = this.getSubTable(tableID);
        return t3.supports && t3.supports(char) !== false;
      });
    }
    supportsVariation(variation) {
      return this.encodingRecords.some((_, tableID) => {
        const t3 = this.getSubTable(tableID);
        return t3.supportsVariation && t3.supportsVariation(variation) !== false;
      });
    }
  };
  var EncodingRecord = class {
    constructor(p22, tableStart) {
      const platformID = this.platformID = p22.uint16;
      const encodingID = this.encodingID = p22.uint16;
      const offset4 = this.offset = p22.Offset32;
      lazy$1(this, `table`, () => {
        p22.currentPosition = tableStart + offset4;
        return createSubTable(p22, platformID, encodingID);
      });
    }
  };
  var cmap$1 = Object.freeze({ __proto__: null, cmap });
  var head = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.load({
        majorVersion: p22.uint16,
        minorVersion: p22.uint16,
        fontRevision: p22.fixed,
        checkSumAdjustment: p22.uint32,
        magicNumber: p22.uint32,
        flags: p22.flags(16),
        unitsPerEm: p22.uint16,
        created: p22.longdatetime,
        modified: p22.longdatetime,
        xMin: p22.int16,
        yMin: p22.int16,
        xMax: p22.int16,
        yMax: p22.int16,
        macStyle: p22.flags(16),
        lowestRecPPEM: p22.uint16,
        fontDirectionHint: p22.uint16,
        indexToLocFormat: p22.uint16,
        glyphDataFormat: p22.uint16
      });
    }
  };
  var head$1 = Object.freeze({ __proto__: null, head });
  var hhea = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.majorVersion = p22.uint16;
      this.minorVersion = p22.uint16;
      this.ascender = p22.fword;
      this.descender = p22.fword;
      this.lineGap = p22.fword;
      this.advanceWidthMax = p22.ufword;
      this.minLeftSideBearing = p22.fword;
      this.minRightSideBearing = p22.fword;
      this.xMaxExtent = p22.fword;
      this.caretSlopeRise = p22.int16;
      this.caretSlopeRun = p22.int16;
      this.caretOffset = p22.int16;
      p22.int16;
      p22.int16;
      p22.int16;
      p22.int16;
      this.metricDataFormat = p22.int16;
      this.numberOfHMetrics = p22.uint16;
      p22.verifyLength();
    }
  };
  var hhea$1 = Object.freeze({ __proto__: null, hhea });
  var hmtx = class extends SimpleTable {
    constructor(dict, dataview, tables) {
      const { p: p22 } = super(dict, dataview);
      const numberOfHMetrics = tables.hhea.numberOfHMetrics;
      const numGlyphs = tables.maxp.numGlyphs;
      const metricsStart = p22.currentPosition;
      lazy$1(this, `hMetrics`, () => {
        p22.currentPosition = metricsStart;
        return [...new Array(numberOfHMetrics)].map(
          (_) => new LongHorMetric(p22.uint16, p22.int16)
        );
      });
      if (numberOfHMetrics < numGlyphs) {
        const lsbStart = metricsStart + numberOfHMetrics * 4;
        lazy$1(this, `leftSideBearings`, () => {
          p22.currentPosition = lsbStart;
          return [...new Array(numGlyphs - numberOfHMetrics)].map(
            (_) => p22.int16
          );
        });
      }
    }
  };
  var LongHorMetric = class {
    constructor(w3, b2) {
      this.advanceWidth = w3;
      this.lsb = b2;
    }
  };
  var hmtx$1 = Object.freeze({ __proto__: null, hmtx });
  var maxp = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.legacyFixed;
      this.numGlyphs = p22.uint16;
      if (this.version === 1) {
        this.maxPoints = p22.uint16;
        this.maxContours = p22.uint16;
        this.maxCompositePoints = p22.uint16;
        this.maxCompositeContours = p22.uint16;
        this.maxZones = p22.uint16;
        this.maxTwilightPoints = p22.uint16;
        this.maxStorage = p22.uint16;
        this.maxFunctionDefs = p22.uint16;
        this.maxInstructionDefs = p22.uint16;
        this.maxStackElements = p22.uint16;
        this.maxSizeOfInstructions = p22.uint16;
        this.maxComponentElements = p22.uint16;
        this.maxComponentDepth = p22.uint16;
      }
      p22.verifyLength();
    }
  };
  var maxp$1 = Object.freeze({ __proto__: null, maxp });
  var name = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.format = p22.uint16;
      this.count = p22.uint16;
      this.stringOffset = p22.Offset16;
      this.nameRecords = [...new Array(this.count)].map(
        (_) => new NameRecord(p22, this)
      );
      if (this.format === 1) {
        this.langTagCount = p22.uint16;
        this.langTagRecords = [...new Array(this.langTagCount)].map(
          (_) => new LangTagRecord(p22.uint16, p22.Offset16)
        );
      }
      this.stringStart = this.tableStart + this.stringOffset;
    }
    get(nameID) {
      let record = this.nameRecords.find(
        (record2) => record2.nameID === nameID
      );
      if (record) return record.string;
    }
  };
  var LangTagRecord = class {
    constructor(length2, offset4) {
      this.length = length2;
      this.offset = offset4;
    }
  };
  var NameRecord = class {
    constructor(p22, nameTable) {
      this.platformID = p22.uint16;
      this.encodingID = p22.uint16;
      this.languageID = p22.uint16;
      this.nameID = p22.uint16;
      this.length = p22.uint16;
      this.offset = p22.Offset16;
      lazy$1(this, `string`, () => {
        p22.currentPosition = nameTable.stringStart + this.offset;
        return decodeString(p22, this);
      });
    }
  };
  function decodeString(p22, record) {
    const { platformID, length: length2 } = record;
    if (length2 === 0) return ``;
    if (platformID === 0 || platformID === 3) {
      const str22 = [];
      for (let i2 = 0, e2 = length2 / 2; i2 < e2; i2++)
        str22[i2] = String.fromCharCode(p22.uint16);
      return str22.join(``);
    }
    const bytes = p22.readBytes(length2);
    const str3 = [];
    bytes.forEach(function(b2, i2) {
      str3[i2] = String.fromCharCode(b2);
    });
    return str3.join(``);
  }
  var name$1 = Object.freeze({ __proto__: null, name });
  var OS2 = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.uint16;
      this.xAvgCharWidth = p22.int16;
      this.usWeightClass = p22.uint16;
      this.usWidthClass = p22.uint16;
      this.fsType = p22.uint16;
      this.ySubscriptXSize = p22.int16;
      this.ySubscriptYSize = p22.int16;
      this.ySubscriptXOffset = p22.int16;
      this.ySubscriptYOffset = p22.int16;
      this.ySuperscriptXSize = p22.int16;
      this.ySuperscriptYSize = p22.int16;
      this.ySuperscriptXOffset = p22.int16;
      this.ySuperscriptYOffset = p22.int16;
      this.yStrikeoutSize = p22.int16;
      this.yStrikeoutPosition = p22.int16;
      this.sFamilyClass = p22.int16;
      this.panose = [...new Array(10)].map((_) => p22.uint8);
      this.ulUnicodeRange1 = p22.flags(32);
      this.ulUnicodeRange2 = p22.flags(32);
      this.ulUnicodeRange3 = p22.flags(32);
      this.ulUnicodeRange4 = p22.flags(32);
      this.achVendID = p22.tag;
      this.fsSelection = p22.uint16;
      this.usFirstCharIndex = p22.uint16;
      this.usLastCharIndex = p22.uint16;
      this.sTypoAscender = p22.int16;
      this.sTypoDescender = p22.int16;
      this.sTypoLineGap = p22.int16;
      this.usWinAscent = p22.uint16;
      this.usWinDescent = p22.uint16;
      if (this.version === 0) return p22.verifyLength();
      this.ulCodePageRange1 = p22.flags(32);
      this.ulCodePageRange2 = p22.flags(32);
      if (this.version === 1) return p22.verifyLength();
      this.sxHeight = p22.int16;
      this.sCapHeight = p22.int16;
      this.usDefaultChar = p22.uint16;
      this.usBreakChar = p22.uint16;
      this.usMaxContext = p22.uint16;
      if (this.version <= 4) return p22.verifyLength();
      this.usLowerOpticalPointSize = p22.uint16;
      this.usUpperOpticalPointSize = p22.uint16;
      if (this.version === 5) return p22.verifyLength();
    }
  };
  var OS2$1 = Object.freeze({ __proto__: null, OS2 });
  var post = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.legacyFixed;
      this.italicAngle = p22.fixed;
      this.underlinePosition = p22.fword;
      this.underlineThickness = p22.fword;
      this.isFixedPitch = p22.uint32;
      this.minMemType42 = p22.uint32;
      this.maxMemType42 = p22.uint32;
      this.minMemType1 = p22.uint32;
      this.maxMemType1 = p22.uint32;
      if (this.version === 1 || this.version === 3) return p22.verifyLength();
      this.numGlyphs = p22.uint16;
      if (this.version === 2) {
        this.glyphNameIndex = [...new Array(this.numGlyphs)].map(
          (_) => p22.uint16
        );
        this.namesOffset = p22.currentPosition;
        this.glyphNameOffsets = [1];
        for (let i2 = 0; i2 < this.numGlyphs; i2++) {
          let index3 = this.glyphNameIndex[i2];
          if (index3 < macStrings.length) {
            this.glyphNameOffsets.push(this.glyphNameOffsets[i2]);
            continue;
          }
          let bytelength = p22.int8;
          p22.skip(bytelength);
          this.glyphNameOffsets.push(
            this.glyphNameOffsets[i2] + bytelength + 1
          );
        }
      }
      if (this.version === 2.5) {
        this.offset = [...new Array(this.numGlyphs)].map(
          (_) => p22.int8
        );
      }
    }
    getGlyphName(glyphid) {
      if (this.version !== 2) {
        console.warn(
          `post table version ${this.version} does not support glyph name lookups`
        );
        return ``;
      }
      let index3 = this.glyphNameIndex[glyphid];
      if (index3 < 258) return macStrings[index3];
      let offset4 = this.glyphNameOffsets[glyphid];
      let next = this.glyphNameOffsets[glyphid + 1];
      let len2 = next - offset4 - 1;
      if (len2 === 0) return `.notdef.`;
      this.parser.currentPosition = this.namesOffset + offset4;
      const data = this.parser.readBytes(
        len2,
        this.namesOffset + offset4,
        8,
        true
      );
      return data.map((b2) => String.fromCharCode(b2)).join(``);
    }
  };
  var macStrings = [
    `.notdef`,
    `.null`,
    `nonmarkingreturn`,
    `space`,
    `exclam`,
    `quotedbl`,
    `numbersign`,
    `dollar`,
    `percent`,
    `ampersand`,
    `quotesingle`,
    `parenleft`,
    `parenright`,
    `asterisk`,
    `plus`,
    `comma`,
    `hyphen`,
    `period`,
    `slash`,
    `zero`,
    `one`,
    `two`,
    `three`,
    `four`,
    `five`,
    `six`,
    `seven`,
    `eight`,
    `nine`,
    `colon`,
    `semicolon`,
    `less`,
    `equal`,
    `greater`,
    `question`,
    `at`,
    `A`,
    `B`,
    `C`,
    `D`,
    `E`,
    `F`,
    `G`,
    `H`,
    `I`,
    `J`,
    `K`,
    `L`,
    `M`,
    `N`,
    `O`,
    `P`,
    `Q`,
    `R`,
    `S`,
    `T`,
    `U`,
    `V`,
    `W`,
    `X`,
    `Y`,
    `Z`,
    `bracketleft`,
    `backslash`,
    `bracketright`,
    `asciicircum`,
    `underscore`,
    `grave`,
    `a`,
    `b`,
    `c`,
    `d`,
    `e`,
    `f`,
    `g`,
    `h`,
    `i`,
    `j`,
    `k`,
    `l`,
    `m`,
    `n`,
    `o`,
    `p`,
    `q`,
    `r`,
    `s`,
    `t`,
    `u`,
    `v`,
    `w`,
    `x`,
    `y`,
    `z`,
    `braceleft`,
    `bar`,
    `braceright`,
    `asciitilde`,
    `Adieresis`,
    `Aring`,
    `Ccedilla`,
    `Eacute`,
    `Ntilde`,
    `Odieresis`,
    `Udieresis`,
    `aacute`,
    `agrave`,
    `acircumflex`,
    `adieresis`,
    `atilde`,
    `aring`,
    `ccedilla`,
    `eacute`,
    `egrave`,
    `ecircumflex`,
    `edieresis`,
    `iacute`,
    `igrave`,
    `icircumflex`,
    `idieresis`,
    `ntilde`,
    `oacute`,
    `ograve`,
    `ocircumflex`,
    `odieresis`,
    `otilde`,
    `uacute`,
    `ugrave`,
    `ucircumflex`,
    `udieresis`,
    `dagger`,
    `degree`,
    `cent`,
    `sterling`,
    `section`,
    `bullet`,
    `paragraph`,
    `germandbls`,
    `registered`,
    `copyright`,
    `trademark`,
    `acute`,
    `dieresis`,
    `notequal`,
    `AE`,
    `Oslash`,
    `infinity`,
    `plusminus`,
    `lessequal`,
    `greaterequal`,
    `yen`,
    `mu`,
    `partialdiff`,
    `summation`,
    `product`,
    `pi`,
    `integral`,
    `ordfeminine`,
    `ordmasculine`,
    `Omega`,
    `ae`,
    `oslash`,
    `questiondown`,
    `exclamdown`,
    `logicalnot`,
    `radical`,
    `florin`,
    `approxequal`,
    `Delta`,
    `guillemotleft`,
    `guillemotright`,
    `ellipsis`,
    `nonbreakingspace`,
    `Agrave`,
    `Atilde`,
    `Otilde`,
    `OE`,
    `oe`,
    `endash`,
    `emdash`,
    `quotedblleft`,
    `quotedblright`,
    `quoteleft`,
    `quoteright`,
    `divide`,
    `lozenge`,
    `ydieresis`,
    `Ydieresis`,
    `fraction`,
    `currency`,
    `guilsinglleft`,
    `guilsinglright`,
    `fi`,
    `fl`,
    `daggerdbl`,
    `periodcentered`,
    `quotesinglbase`,
    `quotedblbase`,
    `perthousand`,
    `Acircumflex`,
    `Ecircumflex`,
    `Aacute`,
    `Edieresis`,
    `Egrave`,
    `Iacute`,
    `Icircumflex`,
    `Idieresis`,
    `Igrave`,
    `Oacute`,
    `Ocircumflex`,
    `apple`,
    `Ograve`,
    `Uacute`,
    `Ucircumflex`,
    `Ugrave`,
    `dotlessi`,
    `circumflex`,
    `tilde`,
    `macron`,
    `breve`,
    `dotaccent`,
    `ring`,
    `cedilla`,
    `hungarumlaut`,
    `ogonek`,
    `caron`,
    `Lslash`,
    `lslash`,
    `Scaron`,
    `scaron`,
    `Zcaron`,
    `zcaron`,
    `brokenbar`,
    `Eth`,
    `eth`,
    `Yacute`,
    `yacute`,
    `Thorn`,
    `thorn`,
    `minus`,
    `multiply`,
    `onesuperior`,
    `twosuperior`,
    `threesuperior`,
    `onehalf`,
    `onequarter`,
    `threequarters`,
    `franc`,
    `Gbreve`,
    `gbreve`,
    `Idotaccent`,
    `Scedilla`,
    `scedilla`,
    `Cacute`,
    `cacute`,
    `Ccaron`,
    `ccaron`,
    `dcroat`
  ];
  var post$1 = Object.freeze({ __proto__: null, post });
  var BASE = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.majorVersion = p22.uint16;
      this.minorVersion = p22.uint16;
      this.horizAxisOffset = p22.Offset16;
      this.vertAxisOffset = p22.Offset16;
      lazy$1(
        this,
        `horizAxis`,
        () => new AxisTable(
          { offset: dict.offset + this.horizAxisOffset },
          dataview
        )
      );
      lazy$1(
        this,
        `vertAxis`,
        () => new AxisTable(
          { offset: dict.offset + this.vertAxisOffset },
          dataview
        )
      );
      if (this.majorVersion === 1 && this.minorVersion === 1) {
        this.itemVarStoreOffset = p22.Offset32;
        lazy$1(
          this,
          `itemVarStore`,
          () => new AxisTable(
            { offset: dict.offset + this.itemVarStoreOffset },
            dataview
          )
        );
      }
    }
  };
  var AxisTable = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview, `AxisTable`);
      this.baseTagListOffset = p22.Offset16;
      this.baseScriptListOffset = p22.Offset16;
      lazy$1(
        this,
        `baseTagList`,
        () => new BaseTagListTable(
          { offset: dict.offset + this.baseTagListOffset },
          dataview
        )
      );
      lazy$1(
        this,
        `baseScriptList`,
        () => new BaseScriptListTable(
          { offset: dict.offset + this.baseScriptListOffset },
          dataview
        )
      );
    }
  };
  var BaseTagListTable = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview, `BaseTagListTable`);
      this.baseTagCount = p22.uint16;
      this.baselineTags = [...new Array(this.baseTagCount)].map(
        (_) => p22.tag
      );
    }
  };
  var BaseScriptListTable = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview, `BaseScriptListTable`);
      this.baseScriptCount = p22.uint16;
      const recordStart = p22.currentPosition;
      lazy$1(this, `baseScriptRecords`, () => {
        p22.currentPosition = recordStart;
        return [...new Array(this.baseScriptCount)].map(
          (_) => new BaseScriptRecord(this.start, p22)
        );
      });
    }
  };
  var BaseScriptRecord = class {
    constructor(baseScriptListTableStart, p22) {
      this.baseScriptTag = p22.tag;
      this.baseScriptOffset = p22.Offset16;
      lazy$1(this, `baseScriptTable`, () => {
        p22.currentPosition = baseScriptListTableStart + this.baseScriptOffset;
        return new BaseScriptTable(p22);
      });
    }
  };
  var BaseScriptTable = class {
    constructor(p22) {
      this.start = p22.currentPosition;
      this.baseValuesOffset = p22.Offset16;
      this.defaultMinMaxOffset = p22.Offset16;
      this.baseLangSysCount = p22.uint16;
      this.baseLangSysRecords = [...new Array(this.baseLangSysCount)].map(
        (_) => new BaseLangSysRecord(this.start, p22)
      );
      lazy$1(this, `baseValues`, () => {
        p22.currentPosition = this.start + this.baseValuesOffset;
        return new BaseValuesTable(p22);
      });
      lazy$1(this, `defaultMinMax`, () => {
        p22.currentPosition = this.start + this.defaultMinMaxOffset;
        return new MinMaxTable(p22);
      });
    }
  };
  var BaseLangSysRecord = class {
    constructor(baseScriptTableStart, p22) {
      this.baseLangSysTag = p22.tag;
      this.minMaxOffset = p22.Offset16;
      lazy$1(this, `minMax`, () => {
        p22.currentPosition = baseScriptTableStart + this.minMaxOffset;
        return new MinMaxTable(p22);
      });
    }
  };
  var BaseValuesTable = class {
    constructor(p22) {
      this.parser = p22;
      this.start = p22.currentPosition;
      this.defaultBaselineIndex = p22.uint16;
      this.baseCoordCount = p22.uint16;
      this.baseCoords = [...new Array(this.baseCoordCount)].map(
        (_) => p22.Offset16
      );
    }
    getTable(id) {
      this.parser.currentPosition = this.start + this.baseCoords[id];
      return new BaseCoordTable(this.parser);
    }
  };
  var MinMaxTable = class {
    constructor(p22) {
      this.minCoord = p22.Offset16;
      this.maxCoord = p22.Offset16;
      this.featMinMaxCount = p22.uint16;
      const recordStart = p22.currentPosition;
      lazy$1(this, `featMinMaxRecords`, () => {
        p22.currentPosition = recordStart;
        return [...new Array(this.featMinMaxCount)].map(
          (_) => new FeatMinMaxRecord(p22)
        );
      });
    }
  };
  var FeatMinMaxRecord = class {
    constructor(p22) {
      this.featureTableTag = p22.tag;
      this.minCoord = p22.Offset16;
      this.maxCoord = p22.Offset16;
    }
  };
  var BaseCoordTable = class {
    constructor(p22) {
      this.baseCoordFormat = p22.uint16;
      this.coordinate = p22.int16;
      if (this.baseCoordFormat === 2) {
        this.referenceGlyph = p22.uint16;
        this.baseCoordPoint = p22.uint16;
      }
      if (this.baseCoordFormat === 3) {
        this.deviceTable = p22.Offset16;
      }
    }
  };
  var BASE$1 = Object.freeze({ __proto__: null, BASE });
  var ClassDefinition = class {
    constructor(p22) {
      this.classFormat = p22.uint16;
      if (this.classFormat === 1) {
        this.startGlyphID = p22.uint16;
        this.glyphCount = p22.uint16;
        this.classValueArray = [...new Array(this.glyphCount)].map(
          (_) => p22.uint16
        );
      }
      if (this.classFormat === 2) {
        this.classRangeCount = p22.uint16;
        this.classRangeRecords = [
          ...new Array(this.classRangeCount)
        ].map((_) => new ClassRangeRecord(p22));
      }
    }
  };
  var ClassRangeRecord = class {
    constructor(p22) {
      this.startGlyphID = p22.uint16;
      this.endGlyphID = p22.uint16;
      this.class = p22.uint16;
    }
  };
  var CoverageTable = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.coverageFormat = p22.uint16;
      if (this.coverageFormat === 1) {
        this.glyphCount = p22.uint16;
        this.glyphArray = [...new Array(this.glyphCount)].map(
          (_) => p22.uint16
        );
      }
      if (this.coverageFormat === 2) {
        this.rangeCount = p22.uint16;
        this.rangeRecords = [...new Array(this.rangeCount)].map(
          (_) => new CoverageRangeRecord(p22)
        );
      }
    }
  };
  var CoverageRangeRecord = class {
    constructor(p22) {
      this.startGlyphID = p22.uint16;
      this.endGlyphID = p22.uint16;
      this.startCoverageIndex = p22.uint16;
    }
  };
  var ItemVariationStoreTable = class {
    constructor(table, p22) {
      this.table = table;
      this.parser = p22;
      this.start = p22.currentPosition;
      this.format = p22.uint16;
      this.variationRegionListOffset = p22.Offset32;
      this.itemVariationDataCount = p22.uint16;
      this.itemVariationDataOffsets = [
        ...new Array(this.itemVariationDataCount)
      ].map((_) => p22.Offset32);
    }
  };
  var GDEF = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.majorVersion = p22.uint16;
      this.minorVersion = p22.uint16;
      this.glyphClassDefOffset = p22.Offset16;
      lazy$1(this, `glyphClassDefs`, () => {
        if (this.glyphClassDefOffset === 0) return void 0;
        p22.currentPosition = this.tableStart + this.glyphClassDefOffset;
        return new ClassDefinition(p22);
      });
      this.attachListOffset = p22.Offset16;
      lazy$1(this, `attachList`, () => {
        if (this.attachListOffset === 0) return void 0;
        p22.currentPosition = this.tableStart + this.attachListOffset;
        return new AttachList(p22);
      });
      this.ligCaretListOffset = p22.Offset16;
      lazy$1(this, `ligCaretList`, () => {
        if (this.ligCaretListOffset === 0) return void 0;
        p22.currentPosition = this.tableStart + this.ligCaretListOffset;
        return new LigCaretList(p22);
      });
      this.markAttachClassDefOffset = p22.Offset16;
      lazy$1(this, `markAttachClassDef`, () => {
        if (this.markAttachClassDefOffset === 0) return void 0;
        p22.currentPosition = this.tableStart + this.markAttachClassDefOffset;
        return new ClassDefinition(p22);
      });
      if (this.minorVersion >= 2) {
        this.markGlyphSetsDefOffset = p22.Offset16;
        lazy$1(this, `markGlyphSetsDef`, () => {
          if (this.markGlyphSetsDefOffset === 0) return void 0;
          p22.currentPosition = this.tableStart + this.markGlyphSetsDefOffset;
          return new MarkGlyphSetsTable(p22);
        });
      }
      if (this.minorVersion === 3) {
        this.itemVarStoreOffset = p22.Offset32;
        lazy$1(this, `itemVarStore`, () => {
          if (this.itemVarStoreOffset === 0) return void 0;
          p22.currentPosition = this.tableStart + this.itemVarStoreOffset;
          return new ItemVariationStoreTable(p22);
        });
      }
    }
  };
  var AttachList = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.coverageOffset = p22.Offset16;
      this.glyphCount = p22.uint16;
      this.attachPointOffsets = [...new Array(this.glyphCount)].map(
        (_) => p22.Offset16
      );
    }
    getPoint(pointID) {
      this.parser.currentPosition = this.start + this.attachPointOffsets[pointID];
      return new AttachPoint(this.parser);
    }
  };
  var AttachPoint = class {
    constructor(p22) {
      this.pointCount = p22.uint16;
      this.pointIndices = [...new Array(this.pointCount)].map(
        (_) => p22.uint16
      );
    }
  };
  var LigCaretList = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.coverageOffset = p22.Offset16;
      lazy$1(this, `coverage`, () => {
        p22.currentPosition = this.start + this.coverageOffset;
        return new CoverageTable(p22);
      });
      this.ligGlyphCount = p22.uint16;
      this.ligGlyphOffsets = [...new Array(this.ligGlyphCount)].map(
        (_) => p22.Offset16
      );
    }
    getLigGlyph(ligGlyphID) {
      this.parser.currentPosition = this.start + this.ligGlyphOffsets[ligGlyphID];
      return new LigGlyph(this.parser);
    }
  };
  var LigGlyph = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.caretCount = p22.uint16;
      this.caretValueOffsets = [...new Array(this.caretCount)].map(
        (_) => p22.Offset16
      );
    }
    getCaretValue(caretID) {
      this.parser.currentPosition = this.start + this.caretValueOffsets[caretID];
      return new CaretValue(this.parser);
    }
  };
  var CaretValue = class {
    constructor(p22) {
      this.caretValueFormat = p22.uint16;
      if (this.caretValueFormat === 1) {
        this.coordinate = p22.int16;
      }
      if (this.caretValueFormat === 2) {
        this.caretValuePointIndex = p22.uint16;
      }
      if (this.caretValueFormat === 3) {
        this.coordinate = p22.int16;
        this.deviceOffset = p22.Offset16;
      }
    }
  };
  var MarkGlyphSetsTable = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.markGlyphSetTableFormat = p22.uint16;
      this.markGlyphSetCount = p22.uint16;
      this.coverageOffsets = [...new Array(this.markGlyphSetCount)].map(
        (_) => p22.Offset32
      );
    }
    getMarkGlyphSet(markGlyphSetID) {
      this.parser.currentPosition = this.start + this.coverageOffsets[markGlyphSetID];
      return new CoverageTable(this.parser);
    }
  };
  var GDEF$1 = Object.freeze({ __proto__: null, GDEF });
  var ScriptList = class extends ParsedData {
    static EMPTY = { scriptCount: 0, scriptRecords: [] };
    constructor(p22) {
      super(p22);
      this.scriptCount = p22.uint16;
      this.scriptRecords = [...new Array(this.scriptCount)].map(
        (_) => new ScriptRecord(p22)
      );
    }
  };
  var ScriptRecord = class {
    constructor(p22) {
      this.scriptTag = p22.tag;
      this.scriptOffset = p22.Offset16;
    }
  };
  var ScriptTable = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.defaultLangSys = p22.Offset16;
      this.langSysCount = p22.uint16;
      this.langSysRecords = [...new Array(this.langSysCount)].map(
        (_) => new LangSysRecord(p22)
      );
    }
  };
  var LangSysRecord = class {
    constructor(p22) {
      this.langSysTag = p22.tag;
      this.langSysOffset = p22.Offset16;
    }
  };
  var LangSysTable = class {
    constructor(p22) {
      this.lookupOrder = p22.Offset16;
      this.requiredFeatureIndex = p22.uint16;
      this.featureIndexCount = p22.uint16;
      this.featureIndices = [...new Array(this.featureIndexCount)].map(
        (_) => p22.uint16
      );
    }
  };
  var FeatureList = class extends ParsedData {
    static EMPTY = { featureCount: 0, featureRecords: [] };
    constructor(p22) {
      super(p22);
      this.featureCount = p22.uint16;
      this.featureRecords = [...new Array(this.featureCount)].map(
        (_) => new FeatureRecord(p22)
      );
    }
  };
  var FeatureRecord = class {
    constructor(p22) {
      this.featureTag = p22.tag;
      this.featureOffset = p22.Offset16;
    }
  };
  var FeatureTable = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.featureParams = p22.Offset16;
      this.lookupIndexCount = p22.uint16;
      this.lookupListIndices = [...new Array(this.lookupIndexCount)].map(
        (_) => p22.uint16
      );
    }
    getFeatureParams() {
      if (this.featureParams > 0) {
        const p22 = this.parser;
        p22.currentPosition = this.start + this.featureParams;
        const tag = this.featureTag;
        if (tag === `size`) return new Size(p22);
        if (tag.startsWith(`cc`)) return new CharacterVariant(p22);
        if (tag.startsWith(`ss`)) return new StylisticSet(p22);
      }
    }
  };
  var CharacterVariant = class {
    constructor(p22) {
      this.format = p22.uint16;
      this.featUiLabelNameId = p22.uint16;
      this.featUiTooltipTextNameId = p22.uint16;
      this.sampleTextNameId = p22.uint16;
      this.numNamedParameters = p22.uint16;
      this.firstParamUiLabelNameId = p22.uint16;
      this.charCount = p22.uint16;
      this.character = [...new Array(this.charCount)].map(
        (_) => p22.uint24
      );
    }
  };
  var Size = class {
    constructor(p22) {
      this.designSize = p22.uint16;
      this.subfamilyIdentifier = p22.uint16;
      this.subfamilyNameID = p22.uint16;
      this.smallEnd = p22.uint16;
      this.largeEnd = p22.uint16;
    }
  };
  var StylisticSet = class {
    constructor(p22) {
      this.version = p22.uint16;
      this.UINameID = p22.uint16;
    }
  };
  function undoCoverageOffsetParsing(instance) {
    instance.parser.currentPosition -= 2;
    delete instance.coverageOffset;
    delete instance.getCoverageTable;
  }
  var LookupType$1 = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.substFormat = p22.uint16;
      this.coverageOffset = p22.Offset16;
    }
    getCoverageTable() {
      let p22 = this.parser;
      p22.currentPosition = this.start + this.coverageOffset;
      return new CoverageTable(p22);
    }
  };
  var SubstLookupRecord = class {
    constructor(p22) {
      this.glyphSequenceIndex = p22.uint16;
      this.lookupListIndex = p22.uint16;
    }
  };
  var LookupType1$1 = class extends LookupType$1 {
    constructor(p22) {
      super(p22);
      this.deltaGlyphID = p22.int16;
    }
  };
  var LookupType2$1 = class extends LookupType$1 {
    constructor(p22) {
      super(p22);
      this.sequenceCount = p22.uint16;
      this.sequenceOffsets = [...new Array(this.sequenceCount)].map(
        (_) => p22.Offset16
      );
    }
    getSequence(index3) {
      let p22 = this.parser;
      p22.currentPosition = this.start + this.sequenceOffsets[index3];
      return new SequenceTable(p22);
    }
  };
  var SequenceTable = class {
    constructor(p22) {
      this.glyphCount = p22.uint16;
      this.substituteGlyphIDs = [...new Array(this.glyphCount)].map(
        (_) => p22.uint16
      );
    }
  };
  var LookupType3$1 = class extends LookupType$1 {
    constructor(p22) {
      super(p22);
      this.alternateSetCount = p22.uint16;
      this.alternateSetOffsets = [
        ...new Array(this.alternateSetCount)
      ].map((_) => p22.Offset16);
    }
    getAlternateSet(index3) {
      let p22 = this.parser;
      p22.currentPosition = this.start + this.alternateSetOffsets[index3];
      return new AlternateSetTable(p22);
    }
  };
  var AlternateSetTable = class {
    constructor(p22) {
      this.glyphCount = p22.uint16;
      this.alternateGlyphIDs = [...new Array(this.glyphCount)].map(
        (_) => p22.uint16
      );
    }
  };
  var LookupType4$1 = class extends LookupType$1 {
    constructor(p22) {
      super(p22);
      this.ligatureSetCount = p22.uint16;
      this.ligatureSetOffsets = [...new Array(this.ligatureSetCount)].map(
        (_) => p22.Offset16
      );
    }
    getLigatureSet(index3) {
      let p22 = this.parser;
      p22.currentPosition = this.start + this.ligatureSetOffsets[index3];
      return new LigatureSetTable(p22);
    }
  };
  var LigatureSetTable = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.ligatureCount = p22.uint16;
      this.ligatureOffsets = [...new Array(this.ligatureCount)].map(
        (_) => p22.Offset16
      );
    }
    getLigature(index3) {
      let p22 = this.parser;
      p22.currentPosition = this.start + this.ligatureOffsets[index3];
      return new LigatureTable(p22);
    }
  };
  var LigatureTable = class {
    constructor(p22) {
      this.ligatureGlyph = p22.uint16;
      this.componentCount = p22.uint16;
      this.componentGlyphIDs = [
        ...new Array(this.componentCount - 1)
      ].map((_) => p22.uint16);
    }
  };
  var LookupType5$1 = class extends LookupType$1 {
    constructor(p22) {
      super(p22);
      if (this.substFormat === 1) {
        this.subRuleSetCount = p22.uint16;
        this.subRuleSetOffsets = [
          ...new Array(this.subRuleSetCount)
        ].map((_) => p22.Offset16);
      }
      if (this.substFormat === 2) {
        this.classDefOffset = p22.Offset16;
        this.subClassSetCount = p22.uint16;
        this.subClassSetOffsets = [
          ...new Array(this.subClassSetCount)
        ].map((_) => p22.Offset16);
      }
      if (this.substFormat === 3) {
        undoCoverageOffsetParsing(this);
        this.glyphCount = p22.uint16;
        this.substitutionCount = p22.uint16;
        this.coverageOffsets = [...new Array(this.glyphCount)].map(
          (_) => p22.Offset16
        );
        this.substLookupRecords = [
          ...new Array(this.substitutionCount)
        ].map((_) => new SubstLookupRecord(p22));
      }
    }
    getSubRuleSet(index3) {
      if (this.substFormat !== 1)
        throw new Error(
          `lookup type 5.${this.substFormat} has no subrule sets.`
        );
      let p22 = this.parser;
      p22.currentPosition = this.start + this.subRuleSetOffsets[index3];
      return new SubRuleSetTable(p22);
    }
    getSubClassSet(index3) {
      if (this.substFormat !== 2)
        throw new Error(
          `lookup type 5.${this.substFormat} has no subclass sets.`
        );
      let p22 = this.parser;
      p22.currentPosition = this.start + this.subClassSetOffsets[index3];
      return new SubClassSetTable(p22);
    }
    getCoverageTable(index3) {
      if (this.substFormat !== 3 && !index3)
        return super.getCoverageTable();
      if (!index3)
        throw new Error(
          `lookup type 5.${this.substFormat} requires an coverage table index.`
        );
      let p22 = this.parser;
      p22.currentPosition = this.start + this.coverageOffsets[index3];
      return new CoverageTable(p22);
    }
  };
  var SubRuleSetTable = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.subRuleCount = p22.uint16;
      this.subRuleOffsets = [...new Array(this.subRuleCount)].map(
        (_) => p22.Offset16
      );
    }
    getSubRule(index3) {
      let p22 = this.parser;
      p22.currentPosition = this.start + this.subRuleOffsets[index3];
      return new SubRuleTable(p22);
    }
  };
  var SubRuleTable = class {
    constructor(p22) {
      this.glyphCount = p22.uint16;
      this.substitutionCount = p22.uint16;
      this.inputSequence = [...new Array(this.glyphCount - 1)].map(
        (_) => p22.uint16
      );
      this.substLookupRecords = [
        ...new Array(this.substitutionCount)
      ].map((_) => new SubstLookupRecord(p22));
    }
  };
  var SubClassSetTable = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.subClassRuleCount = p22.uint16;
      this.subClassRuleOffsets = [
        ...new Array(this.subClassRuleCount)
      ].map((_) => p22.Offset16);
    }
    getSubClass(index3) {
      let p22 = this.parser;
      p22.currentPosition = this.start + this.subClassRuleOffsets[index3];
      return new SubClassRuleTable(p22);
    }
  };
  var SubClassRuleTable = class extends SubRuleTable {
    constructor(p22) {
      super(p22);
    }
  };
  var LookupType6$1 = class extends LookupType$1 {
    constructor(p22) {
      super(p22);
      if (this.substFormat === 1) {
        this.chainSubRuleSetCount = p22.uint16;
        this.chainSubRuleSetOffsets = [
          ...new Array(this.chainSubRuleSetCount)
        ].map((_) => p22.Offset16);
      }
      if (this.substFormat === 2) {
        this.backtrackClassDefOffset = p22.Offset16;
        this.inputClassDefOffset = p22.Offset16;
        this.lookaheadClassDefOffset = p22.Offset16;
        this.chainSubClassSetCount = p22.uint16;
        this.chainSubClassSetOffsets = [
          ...new Array(this.chainSubClassSetCount)
        ].map((_) => p22.Offset16);
      }
      if (this.substFormat === 3) {
        undoCoverageOffsetParsing(this);
        this.backtrackGlyphCount = p22.uint16;
        this.backtrackCoverageOffsets = [
          ...new Array(this.backtrackGlyphCount)
        ].map((_) => p22.Offset16);
        this.inputGlyphCount = p22.uint16;
        this.inputCoverageOffsets = [
          ...new Array(this.inputGlyphCount)
        ].map((_) => p22.Offset16);
        this.lookaheadGlyphCount = p22.uint16;
        this.lookaheadCoverageOffsets = [
          ...new Array(this.lookaheadGlyphCount)
        ].map((_) => p22.Offset16);
        this.seqLookupCount = p22.uint16;
        this.seqLookupRecords = [
          ...new Array(this.substitutionCount)
        ].map((_) => new SequenceLookupRecord(p22));
      }
    }
    getChainSubRuleSet(index3) {
      if (this.substFormat !== 1)
        throw new Error(
          `lookup type 6.${this.substFormat} has no chainsubrule sets.`
        );
      let p22 = this.parser;
      p22.currentPosition = this.start + this.chainSubRuleSetOffsets[index3];
      return new ChainSubRuleSetTable(p22);
    }
    getChainSubClassSet(index3) {
      if (this.substFormat !== 2)
        throw new Error(
          `lookup type 6.${this.substFormat} has no chainsubclass sets.`
        );
      let p22 = this.parser;
      p22.currentPosition = this.start + this.chainSubClassSetOffsets[index3];
      return new ChainSubClassSetTable(p22);
    }
    getCoverageFromOffset(offset4) {
      if (this.substFormat !== 3)
        throw new Error(
          `lookup type 6.${this.substFormat} does not use contextual coverage offsets.`
        );
      let p22 = this.parser;
      p22.currentPosition = this.start + offset4;
      return new CoverageTable(p22);
    }
  };
  var ChainSubRuleSetTable = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.chainSubRuleCount = p22.uint16;
      this.chainSubRuleOffsets = [
        ...new Array(this.chainSubRuleCount)
      ].map((_) => p22.Offset16);
    }
    getSubRule(index3) {
      let p22 = this.parser;
      p22.currentPosition = this.start + this.chainSubRuleOffsets[index3];
      return new ChainSubRuleTable(p22);
    }
  };
  var ChainSubRuleTable = class {
    constructor(p22) {
      this.backtrackGlyphCount = p22.uint16;
      this.backtrackSequence = [
        ...new Array(this.backtrackGlyphCount)
      ].map((_) => p22.uint16);
      this.inputGlyphCount = p22.uint16;
      this.inputSequence = [...new Array(this.inputGlyphCount - 1)].map(
        (_) => p22.uint16
      );
      this.lookaheadGlyphCount = p22.uint16;
      this.lookAheadSequence = [
        ...new Array(this.lookAheadGlyphCount)
      ].map((_) => p22.uint16);
      this.substitutionCount = p22.uint16;
      this.substLookupRecords = [...new Array(this.SubstCount)].map(
        (_) => new SubstLookupRecord(p22)
      );
    }
  };
  var ChainSubClassSetTable = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.chainSubClassRuleCount = p22.uint16;
      this.chainSubClassRuleOffsets = [
        ...new Array(this.chainSubClassRuleCount)
      ].map((_) => p22.Offset16);
    }
    getSubClass(index3) {
      let p22 = this.parser;
      p22.currentPosition = this.start + this.chainSubRuleOffsets[index3];
      return new ChainSubClassRuleTable(p22);
    }
  };
  var ChainSubClassRuleTable = class {
    constructor(p22) {
      this.backtrackGlyphCount = p22.uint16;
      this.backtrackSequence = [
        ...new Array(this.backtrackGlyphCount)
      ].map((_) => p22.uint16);
      this.inputGlyphCount = p22.uint16;
      this.inputSequence = [...new Array(this.inputGlyphCount - 1)].map(
        (_) => p22.uint16
      );
      this.lookaheadGlyphCount = p22.uint16;
      this.lookAheadSequence = [
        ...new Array(this.lookAheadGlyphCount)
      ].map((_) => p22.uint16);
      this.substitutionCount = p22.uint16;
      this.substLookupRecords = [
        ...new Array(this.substitutionCount)
      ].map((_) => new SequenceLookupRecord(p22));
    }
  };
  var SequenceLookupRecord = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.sequenceIndex = p22.uint16;
      this.lookupListIndex = p22.uint16;
    }
  };
  var LookupType7$1 = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.substFormat = p22.uint16;
      this.extensionLookupType = p22.uint16;
      this.extensionOffset = p22.Offset32;
    }
  };
  var LookupType8$1 = class extends LookupType$1 {
    constructor(p22) {
      super(p22);
      this.backtrackGlyphCount = p22.uint16;
      this.backtrackCoverageOffsets = [
        ...new Array(this.backtrackGlyphCount)
      ].map((_) => p22.Offset16);
      this.lookaheadGlyphCount = p22.uint16;
      this.lookaheadCoverageOffsets = [
        new Array(this.lookaheadGlyphCount)
      ].map((_) => p22.Offset16);
      this.glyphCount = p22.uint16;
      this.substituteGlyphIDs = [...new Array(this.glyphCount)].map(
        (_) => p22.uint16
      );
    }
  };
  var GSUBtables = {
    buildSubtable: function(type, p22) {
      const subtable = new [
        void 0,
        LookupType1$1,
        LookupType2$1,
        LookupType3$1,
        LookupType4$1,
        LookupType5$1,
        LookupType6$1,
        LookupType7$1,
        LookupType8$1
      ][type](p22);
      subtable.type = type;
      return subtable;
    }
  };
  var LookupType = class extends ParsedData {
    constructor(p22) {
      super(p22);
    }
  };
  var LookupType1 = class extends LookupType {
    constructor(p22) {
      super(p22);
      console.log(`lookup type 1`);
    }
  };
  var LookupType2 = class extends LookupType {
    constructor(p22) {
      super(p22);
      console.log(`lookup type 2`);
    }
  };
  var LookupType3 = class extends LookupType {
    constructor(p22) {
      super(p22);
      console.log(`lookup type 3`);
    }
  };
  var LookupType4 = class extends LookupType {
    constructor(p22) {
      super(p22);
      console.log(`lookup type 4`);
    }
  };
  var LookupType5 = class extends LookupType {
    constructor(p22) {
      super(p22);
      console.log(`lookup type 5`);
    }
  };
  var LookupType6 = class extends LookupType {
    constructor(p22) {
      super(p22);
      console.log(`lookup type 6`);
    }
  };
  var LookupType7 = class extends LookupType {
    constructor(p22) {
      super(p22);
      console.log(`lookup type 7`);
    }
  };
  var LookupType8 = class extends LookupType {
    constructor(p22) {
      super(p22);
      console.log(`lookup type 8`);
    }
  };
  var LookupType9 = class extends LookupType {
    constructor(p22) {
      super(p22);
      console.log(`lookup type 9`);
    }
  };
  var GPOStables = {
    buildSubtable: function(type, p22) {
      const subtable = new [
        void 0,
        LookupType1,
        LookupType2,
        LookupType3,
        LookupType4,
        LookupType5,
        LookupType6,
        LookupType7,
        LookupType8,
        LookupType9
      ][type](p22);
      subtable.type = type;
      return subtable;
    }
  };
  var LookupList = class extends ParsedData {
    static EMPTY = { lookupCount: 0, lookups: [] };
    constructor(p22) {
      super(p22);
      this.lookupCount = p22.uint16;
      this.lookups = [...new Array(this.lookupCount)].map(
        (_) => p22.Offset16
      );
    }
  };
  var LookupTable = class extends ParsedData {
    constructor(p22, type) {
      super(p22);
      this.ctType = type;
      this.lookupType = p22.uint16;
      this.lookupFlag = p22.uint16;
      this.subTableCount = p22.uint16;
      this.subtableOffsets = [...new Array(this.subTableCount)].map(
        (_) => p22.Offset16
      );
      this.markFilteringSet = p22.uint16;
    }
    get rightToLeft() {
      return this.lookupFlag & true;
    }
    get ignoreBaseGlyphs() {
      return this.lookupFlag & true;
    }
    get ignoreLigatures() {
      return this.lookupFlag & true;
    }
    get ignoreMarks() {
      return this.lookupFlag & true;
    }
    get useMarkFilteringSet() {
      return this.lookupFlag & true;
    }
    get markAttachmentType() {
      return this.lookupFlag & true;
    }
    getSubTable(index3) {
      const builder = this.ctType === `GSUB` ? GSUBtables : GPOStables;
      this.parser.currentPosition = this.start + this.subtableOffsets[index3];
      return builder.buildSubtable(this.lookupType, this.parser);
    }
  };
  var CommonLayoutTable = class extends SimpleTable {
    constructor(dict, dataview, name2) {
      const { p: p22, tableStart } = super(dict, dataview, name2);
      this.majorVersion = p22.uint16;
      this.minorVersion = p22.uint16;
      this.scriptListOffset = p22.Offset16;
      this.featureListOffset = p22.Offset16;
      this.lookupListOffset = p22.Offset16;
      if (this.majorVersion === 1 && this.minorVersion === 1) {
        this.featureVariationsOffset = p22.Offset32;
      }
      const no_content = !(this.scriptListOffset || this.featureListOffset || this.lookupListOffset);
      lazy$1(this, `scriptList`, () => {
        if (no_content) return ScriptList.EMPTY;
        p22.currentPosition = tableStart + this.scriptListOffset;
        return new ScriptList(p22);
      });
      lazy$1(this, `featureList`, () => {
        if (no_content) return FeatureList.EMPTY;
        p22.currentPosition = tableStart + this.featureListOffset;
        return new FeatureList(p22);
      });
      lazy$1(this, `lookupList`, () => {
        if (no_content) return LookupList.EMPTY;
        p22.currentPosition = tableStart + this.lookupListOffset;
        return new LookupList(p22);
      });
      if (this.featureVariationsOffset) {
        lazy$1(this, `featureVariations`, () => {
          if (no_content) return FeatureVariations.EMPTY;
          p22.currentPosition = tableStart + this.featureVariationsOffset;
          return new FeatureVariations(p22);
        });
      }
    }
    getSupportedScripts() {
      return this.scriptList.scriptRecords.map((r4) => r4.scriptTag);
    }
    getScriptTable(scriptTag) {
      let record = this.scriptList.scriptRecords.find(
        (r4) => r4.scriptTag === scriptTag
      );
      this.parser.currentPosition = this.scriptList.start + record.scriptOffset;
      let table = new ScriptTable(this.parser);
      table.scriptTag = scriptTag;
      return table;
    }
    ensureScriptTable(arg) {
      if (typeof arg === "string") {
        return this.getScriptTable(arg);
      }
      return arg;
    }
    getSupportedLangSys(scriptTable) {
      scriptTable = this.ensureScriptTable(scriptTable);
      const hasDefault = scriptTable.defaultLangSys !== 0;
      const supported = scriptTable.langSysRecords.map(
        (l3) => l3.langSysTag
      );
      if (hasDefault) supported.unshift(`dflt`);
      return supported;
    }
    getDefaultLangSysTable(scriptTable) {
      scriptTable = this.ensureScriptTable(scriptTable);
      let offset4 = scriptTable.defaultLangSys;
      if (offset4 !== 0) {
        this.parser.currentPosition = scriptTable.start + offset4;
        let table = new LangSysTable(this.parser);
        table.langSysTag = ``;
        table.defaultForScript = scriptTable.scriptTag;
        return table;
      }
    }
    getLangSysTable(scriptTable, langSysTag = `dflt`) {
      if (langSysTag === `dflt`)
        return this.getDefaultLangSysTable(scriptTable);
      scriptTable = this.ensureScriptTable(scriptTable);
      let record = scriptTable.langSysRecords.find(
        (l3) => l3.langSysTag === langSysTag
      );
      this.parser.currentPosition = scriptTable.start + record.langSysOffset;
      let table = new LangSysTable(this.parser);
      table.langSysTag = langSysTag;
      return table;
    }
    getFeatures(langSysTable) {
      return langSysTable.featureIndices.map(
        (index3) => this.getFeature(index3)
      );
    }
    getFeature(indexOrTag) {
      let record;
      if (parseInt(indexOrTag) == indexOrTag) {
        record = this.featureList.featureRecords[indexOrTag];
      } else {
        record = this.featureList.featureRecords.find(
          (f2) => f2.featureTag === indexOrTag
        );
      }
      if (!record) return;
      this.parser.currentPosition = this.featureList.start + record.featureOffset;
      let table = new FeatureTable(this.parser);
      table.featureTag = record.featureTag;
      return table;
    }
    getLookups(featureTable) {
      return featureTable.lookupListIndices.map(
        (index3) => this.getLookup(index3)
      );
    }
    getLookup(lookupIndex, type) {
      let lookupOffset = this.lookupList.lookups[lookupIndex];
      this.parser.currentPosition = this.lookupList.start + lookupOffset;
      return new LookupTable(this.parser, type);
    }
  };
  var GSUB = class extends CommonLayoutTable {
    constructor(dict, dataview) {
      super(dict, dataview, `GSUB`);
    }
    getLookup(lookupIndex) {
      return super.getLookup(lookupIndex, `GSUB`);
    }
  };
  var GSUB$1 = Object.freeze({ __proto__: null, GSUB });
  var GPOS = class extends CommonLayoutTable {
    constructor(dict, dataview) {
      super(dict, dataview, `GPOS`);
    }
    getLookup(lookupIndex) {
      return super.getLookup(lookupIndex, `GPOS`);
    }
  };
  var GPOS$1 = Object.freeze({ __proto__: null, GPOS });
  var SVG96 = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.uint16;
      this.offsetToSVGDocumentList = p22.Offset32;
      p22.currentPosition = this.tableStart + this.offsetToSVGDocumentList;
      this.documentList = new SVGDocumentList(p22);
    }
  };
  var SVGDocumentList = class extends ParsedData {
    constructor(p22) {
      super(p22);
      this.numEntries = p22.uint16;
      this.documentRecords = [...new Array(this.numEntries)].map(
        (_) => new SVGDocumentRecord(p22)
      );
    }
    getDocument(documentID) {
      let record = this.documentRecords[documentID];
      if (!record) return "";
      let offset4 = this.start + record.svgDocOffset;
      this.parser.currentPosition = offset4;
      return this.parser.readBytes(record.svgDocLength);
    }
    getDocumentForGlyph(glyphID) {
      let id = this.documentRecords.findIndex(
        (d2) => d2.startGlyphID <= glyphID && glyphID <= d2.endGlyphID
      );
      if (id === -1) return "";
      return this.getDocument(id);
    }
  };
  var SVGDocumentRecord = class {
    constructor(p22) {
      this.startGlyphID = p22.uint16;
      this.endGlyphID = p22.uint16;
      this.svgDocOffset = p22.Offset32;
      this.svgDocLength = p22.uint32;
    }
  };
  var SVG$1 = Object.freeze({ __proto__: null, SVG: SVG96 });
  var fvar = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.majorVersion = p22.uint16;
      this.minorVersion = p22.uint16;
      this.axesArrayOffset = p22.Offset16;
      p22.uint16;
      this.axisCount = p22.uint16;
      this.axisSize = p22.uint16;
      this.instanceCount = p22.uint16;
      this.instanceSize = p22.uint16;
      const axisStart = this.tableStart + this.axesArrayOffset;
      lazy$1(this, `axes`, () => {
        p22.currentPosition = axisStart;
        return [...new Array(this.axisCount)].map(
          (_) => new VariationAxisRecord(p22)
        );
      });
      const instanceStart = axisStart + this.axisCount * this.axisSize;
      lazy$1(this, `instances`, () => {
        let instances = [];
        for (let i2 = 0; i2 < this.instanceCount; i2++) {
          p22.currentPosition = instanceStart + i2 * this.instanceSize;
          instances.push(
            new InstanceRecord(p22, this.axisCount, this.instanceSize)
          );
        }
        return instances;
      });
    }
    getSupportedAxes() {
      return this.axes.map((a2) => a2.tag);
    }
    getAxis(name2) {
      return this.axes.find((a2) => a2.tag === name2);
    }
  };
  var VariationAxisRecord = class {
    constructor(p22) {
      this.tag = p22.tag;
      this.minValue = p22.fixed;
      this.defaultValue = p22.fixed;
      this.maxValue = p22.fixed;
      this.flags = p22.flags(16);
      this.axisNameID = p22.uint16;
    }
  };
  var InstanceRecord = class {
    constructor(p22, axisCount, size4) {
      let start2 = p22.currentPosition;
      this.subfamilyNameID = p22.uint16;
      p22.uint16;
      this.coordinates = [...new Array(axisCount)].map(
        (_) => p22.fixed
      );
      if (p22.currentPosition - start2 < size4) {
        this.postScriptNameID = p22.uint16;
      }
    }
  };
  var fvar$1 = Object.freeze({ __proto__: null, fvar });
  var cvt = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      const n2 = dict.length / 2;
      lazy$1(
        this,
        `items`,
        () => [...new Array(n2)].map((_) => p22.fword)
      );
    }
  };
  var cvt$1 = Object.freeze({ __proto__: null, cvt });
  var fpgm = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      lazy$1(
        this,
        `instructions`,
        () => [...new Array(dict.length)].map((_) => p22.uint8)
      );
    }
  };
  var fpgm$1 = Object.freeze({ __proto__: null, fpgm });
  var gasp = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.uint16;
      this.numRanges = p22.uint16;
      const getter = () => [...new Array(this.numRanges)].map(
        (_) => new GASPRange(p22)
      );
      lazy$1(this, `gaspRanges`, getter);
    }
  };
  var GASPRange = class {
    constructor(p22) {
      this.rangeMaxPPEM = p22.uint16;
      this.rangeGaspBehavior = p22.uint16;
    }
  };
  var gasp$1 = Object.freeze({ __proto__: null, gasp });
  var glyf = class extends SimpleTable {
    constructor(dict, dataview) {
      super(dict, dataview);
    }
    getGlyphData(offset4, length2) {
      this.parser.currentPosition = this.tableStart + offset4;
      return this.parser.readBytes(length2);
    }
  };
  var glyf$1 = Object.freeze({ __proto__: null, glyf });
  var loca = class extends SimpleTable {
    constructor(dict, dataview, tables) {
      const { p: p22 } = super(dict, dataview);
      const n2 = tables.maxp.numGlyphs + 1;
      if (tables.head.indexToLocFormat === 0) {
        this.x2 = true;
        lazy$1(
          this,
          `offsets`,
          () => [...new Array(n2)].map((_) => p22.Offset16)
        );
      } else {
        lazy$1(
          this,
          `offsets`,
          () => [...new Array(n2)].map((_) => p22.Offset32)
        );
      }
    }
    getGlyphDataOffsetAndLength(glyphID) {
      let offset4 = this.offsets[glyphID] * this.x2 ? 2 : 1;
      let nextOffset = this.offsets[glyphID + 1] * this.x2 ? 2 : 1;
      return { offset: offset4, length: nextOffset - offset4 };
    }
  };
  var loca$1 = Object.freeze({ __proto__: null, loca });
  var prep = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      lazy$1(
        this,
        `instructions`,
        () => [...new Array(dict.length)].map((_) => p22.uint8)
      );
    }
  };
  var prep$1 = Object.freeze({ __proto__: null, prep });
  var CFF = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      lazy$1(this, `data`, () => p22.readBytes());
    }
  };
  var CFF$1 = Object.freeze({ __proto__: null, CFF });
  var CFF2 = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      lazy$1(this, `data`, () => p22.readBytes());
    }
  };
  var CFF2$1 = Object.freeze({ __proto__: null, CFF2 });
  var VORG = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.majorVersion = p22.uint16;
      this.minorVersion = p22.uint16;
      this.defaultVertOriginY = p22.int16;
      this.numVertOriginYMetrics = p22.uint16;
      lazy$1(
        this,
        `vertORiginYMetrics`,
        () => [...new Array(this.numVertOriginYMetrics)].map(
          (_) => new VertOriginYMetric(p22)
        )
      );
    }
  };
  var VertOriginYMetric = class {
    constructor(p22) {
      this.glyphIndex = p22.uint16;
      this.vertOriginY = p22.int16;
    }
  };
  var VORG$1 = Object.freeze({ __proto__: null, VORG });
  var BitmapSize = class {
    constructor(p22) {
      this.indexSubTableArrayOffset = p22.Offset32;
      this.indexTablesSize = p22.uint32;
      this.numberofIndexSubTables = p22.uint32;
      this.colorRef = p22.uint32;
      this.hori = new SbitLineMetrics(p22);
      this.vert = new SbitLineMetrics(p22);
      this.startGlyphIndex = p22.uint16;
      this.endGlyphIndex = p22.uint16;
      this.ppemX = p22.uint8;
      this.ppemY = p22.uint8;
      this.bitDepth = p22.uint8;
      this.flags = p22.int8;
    }
  };
  var BitmapScale = class {
    constructor(p22) {
      this.hori = new SbitLineMetrics(p22);
      this.vert = new SbitLineMetrics(p22);
      this.ppemX = p22.uint8;
      this.ppemY = p22.uint8;
      this.substitutePpemX = p22.uint8;
      this.substitutePpemY = p22.uint8;
    }
  };
  var SbitLineMetrics = class {
    constructor(p22) {
      this.ascender = p22.int8;
      this.descender = p22.int8;
      this.widthMax = p22.uint8;
      this.caretSlopeNumerator = p22.int8;
      this.caretSlopeDenominator = p22.int8;
      this.caretOffset = p22.int8;
      this.minOriginSB = p22.int8;
      this.minAdvanceSB = p22.int8;
      this.maxBeforeBL = p22.int8;
      this.minAfterBL = p22.int8;
      this.pad1 = p22.int8;
      this.pad2 = p22.int8;
    }
  };
  var EBLC = class extends SimpleTable {
    constructor(dict, dataview, name2) {
      const { p: p22 } = super(dict, dataview, name2);
      this.majorVersion = p22.uint16;
      this.minorVersion = p22.uint16;
      this.numSizes = p22.uint32;
      lazy$1(
        this,
        `bitMapSizes`,
        () => [...new Array(this.numSizes)].map(
          (_) => new BitmapSize(p22)
        )
      );
    }
  };
  var EBLC$1 = Object.freeze({ __proto__: null, EBLC });
  var EBDT = class extends SimpleTable {
    constructor(dict, dataview, name2) {
      const { p: p22 } = super(dict, dataview, name2);
      this.majorVersion = p22.uint16;
      this.minorVersion = p22.uint16;
    }
  };
  var EBDT$1 = Object.freeze({ __proto__: null, EBDT });
  var EBSC = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.majorVersion = p22.uint16;
      this.minorVersion = p22.uint16;
      this.numSizes = p22.uint32;
      lazy$1(
        this,
        `bitmapScales`,
        () => [...new Array(this.numSizes)].map(
          (_) => new BitmapScale(p22)
        )
      );
    }
  };
  var EBSC$1 = Object.freeze({ __proto__: null, EBSC });
  var CBLC = class extends EBLC {
    constructor(dict, dataview) {
      super(dict, dataview, `CBLC`);
    }
  };
  var CBLC$1 = Object.freeze({ __proto__: null, CBLC });
  var CBDT = class extends EBDT {
    constructor(dict, dataview) {
      super(dict, dataview, `CBDT`);
    }
  };
  var CBDT$1 = Object.freeze({ __proto__: null, CBDT });
  var sbix = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.uint16;
      this.flags = p22.flags(16);
      this.numStrikes = p22.uint32;
      lazy$1(
        this,
        `strikeOffsets`,
        () => [...new Array(this.numStrikes)].map((_) => p22.Offset32)
      );
    }
  };
  var sbix$1 = Object.freeze({ __proto__: null, sbix });
  var COLR = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.uint16;
      this.numBaseGlyphRecords = p22.uint16;
      this.baseGlyphRecordsOffset = p22.Offset32;
      this.layerRecordsOffset = p22.Offset32;
      this.numLayerRecords = p22.uint16;
    }
    getBaseGlyphRecord(glyphID) {
      let start2 = this.tableStart + this.baseGlyphRecordsOffset;
      this.parser.currentPosition = start2;
      let first = new BaseGlyphRecord(this.parser);
      let firstID = first.gID;
      let end = this.tableStart + this.layerRecordsOffset - 6;
      this.parser.currentPosition = end;
      let last = new BaseGlyphRecord(this.parser);
      let lastID = last.gID;
      if (firstID === glyphID) return first;
      if (lastID === glyphID) return last;
      while (true) {
        if (start2 === end) break;
        let mid = start2 + (end - start2) / 12;
        this.parser.currentPosition = mid;
        let middle = new BaseGlyphRecord(this.parser);
        let midID = middle.gID;
        if (midID === glyphID) return middle;
        else if (midID > glyphID) {
          end = mid;
        } else if (midID < glyphID) {
          start2 = mid;
        }
      }
      return false;
    }
    getLayers(glyphID) {
      let record = this.getBaseGlyphRecord(glyphID);
      this.parser.currentPosition = this.tableStart + this.layerRecordsOffset + 4 * record.firstLayerIndex;
      return [...new Array(record.numLayers)].map(
        (_) => new LayerRecord(p)
      );
    }
  };
  var BaseGlyphRecord = class {
    constructor(p22) {
      this.gID = p22.uint16;
      this.firstLayerIndex = p22.uint16;
      this.numLayers = p22.uint16;
    }
  };
  var LayerRecord = class {
    constructor(p22) {
      this.gID = p22.uint16;
      this.paletteIndex = p22.uint16;
    }
  };
  var COLR$1 = Object.freeze({ __proto__: null, COLR });
  var CPAL = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.uint16;
      this.numPaletteEntries = p22.uint16;
      const numPalettes = this.numPalettes = p22.uint16;
      this.numColorRecords = p22.uint16;
      this.offsetFirstColorRecord = p22.Offset32;
      this.colorRecordIndices = [...new Array(this.numPalettes)].map(
        (_) => p22.uint16
      );
      lazy$1(this, `colorRecords`, () => {
        p22.currentPosition = this.tableStart + this.offsetFirstColorRecord;
        return [...new Array(this.numColorRecords)].map(
          (_) => new ColorRecord(p22)
        );
      });
      if (this.version === 1) {
        this.offsetPaletteTypeArray = p22.Offset32;
        this.offsetPaletteLabelArray = p22.Offset32;
        this.offsetPaletteEntryLabelArray = p22.Offset32;
        lazy$1(this, `paletteTypeArray`, () => {
          p22.currentPosition = this.tableStart + this.offsetPaletteTypeArray;
          return new PaletteTypeArray(p22, numPalettes);
        });
        lazy$1(this, `paletteLabelArray`, () => {
          p22.currentPosition = this.tableStart + this.offsetPaletteLabelArray;
          return new PaletteLabelsArray(p22, numPalettes);
        });
        lazy$1(this, `paletteEntryLabelArray`, () => {
          p22.currentPosition = this.tableStart + this.offsetPaletteEntryLabelArray;
          return new PaletteEntryLabelArray(p22, numPalettes);
        });
      }
    }
  };
  var ColorRecord = class {
    constructor(p22) {
      this.blue = p22.uint8;
      this.green = p22.uint8;
      this.red = p22.uint8;
      this.alpha = p22.uint8;
    }
  };
  var PaletteTypeArray = class {
    constructor(p22, numPalettes) {
      this.paletteTypes = [...new Array(numPalettes)].map(
        (_) => p22.uint32
      );
    }
  };
  var PaletteLabelsArray = class {
    constructor(p22, numPalettes) {
      this.paletteLabels = [...new Array(numPalettes)].map(
        (_) => p22.uint16
      );
    }
  };
  var PaletteEntryLabelArray = class {
    constructor(p22, numPalettes) {
      this.paletteEntryLabels = [...new Array(numPalettes)].map(
        (_) => p22.uint16
      );
    }
  };
  var CPAL$1 = Object.freeze({ __proto__: null, CPAL });
  var DSIG = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.uint32;
      this.numSignatures = p22.uint16;
      this.flags = p22.uint16;
      this.signatureRecords = [...new Array(this.numSignatures)].map(
        (_) => new SignatureRecord(p22)
      );
    }
    getData(signatureID) {
      const record = this.signatureRecords[signatureID];
      this.parser.currentPosition = this.tableStart + record.offset;
      return new SignatureBlockFormat1(this.parser);
    }
  };
  var SignatureRecord = class {
    constructor(p22) {
      this.format = p22.uint32;
      this.length = p22.uint32;
      this.offset = p22.Offset32;
    }
  };
  var SignatureBlockFormat1 = class {
    constructor(p22) {
      p22.uint16;
      p22.uint16;
      this.signatureLength = p22.uint32;
      this.signature = p22.readBytes(this.signatureLength);
    }
  };
  var DSIG$1 = Object.freeze({ __proto__: null, DSIG });
  var hdmx = class extends SimpleTable {
    constructor(dict, dataview, tables) {
      const { p: p22 } = super(dict, dataview);
      const numGlyphs = tables.hmtx.numGlyphs;
      this.version = p22.uint16;
      this.numRecords = p22.int16;
      this.sizeDeviceRecord = p22.int32;
      this.records = [...new Array(numRecords)].map(
        (_) => new DeviceRecord(p22, numGlyphs)
      );
    }
  };
  var DeviceRecord = class {
    constructor(p22, numGlyphs) {
      this.pixelSize = p22.uint8;
      this.maxWidth = p22.uint8;
      this.widths = p22.readBytes(numGlyphs);
    }
  };
  var hdmx$1 = Object.freeze({ __proto__: null, hdmx });
  var kern = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.uint16;
      this.nTables = p22.uint16;
      lazy$1(this, `tables`, () => {
        let offset4 = this.tableStart + 4;
        const tables = [];
        for (let i2 = 0; i2 < this.nTables; i2++) {
          p22.currentPosition = offset4;
          let subtable = new KernSubTable(p22);
          tables.push(subtable);
          offset4 += subtable;
        }
        return tables;
      });
    }
  };
  var KernSubTable = class {
    constructor(p22) {
      this.version = p22.uint16;
      this.length = p22.uint16;
      this.coverage = p22.flags(8);
      this.format = p22.uint8;
      if (this.format === 0) {
        this.nPairs = p22.uint16;
        this.searchRange = p22.uint16;
        this.entrySelector = p22.uint16;
        this.rangeShift = p22.uint16;
        lazy$1(
          this,
          `pairs`,
          () => [...new Array(this.nPairs)].map((_) => new Pair(p22))
        );
      }
      if (this.format === 2) {
        console.warn(
          `Kern subtable format 2 is not supported: this parser currently only parses universal table data.`
        );
      }
    }
    get horizontal() {
      return this.coverage[0];
    }
    get minimum() {
      return this.coverage[1];
    }
    get crossstream() {
      return this.coverage[2];
    }
    get override() {
      return this.coverage[3];
    }
  };
  var Pair = class {
    constructor(p22) {
      this.left = p22.uint16;
      this.right = p22.uint16;
      this.value = p22.fword;
    }
  };
  var kern$1 = Object.freeze({ __proto__: null, kern });
  var LTSH = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.uint16;
      this.numGlyphs = p22.uint16;
      this.yPels = p22.readBytes(this.numGlyphs);
    }
  };
  var LTSH$1 = Object.freeze({ __proto__: null, LTSH });
  var MERG = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.uint16;
      this.mergeClassCount = p22.uint16;
      this.mergeDataOffset = p22.Offset16;
      this.classDefCount = p22.uint16;
      this.offsetToClassDefOffsets = p22.Offset16;
      lazy$1(
        this,
        `mergeEntryMatrix`,
        () => [...new Array(this.mergeClassCount)].map(
          (_) => p22.readBytes(this.mergeClassCount)
        )
      );
      console.warn(`Full MERG parsing is currently not supported.`);
      console.warn(
        `If you need this table parsed, please file an issue, or better yet, a PR.`
      );
    }
  };
  var MERG$1 = Object.freeze({ __proto__: null, MERG });
  var meta = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.uint32;
      this.flags = p22.uint32;
      p22.uint32;
      this.dataMapsCount = p22.uint32;
      this.dataMaps = [...new Array(this.dataMapsCount)].map(
        (_) => new DataMap(this.tableStart, p22)
      );
    }
  };
  var DataMap = class {
    constructor(tableStart, p22) {
      this.tableStart = tableStart;
      this.parser = p22;
      this.tag = p22.tag;
      this.dataOffset = p22.Offset32;
      this.dataLength = p22.uint32;
    }
    getData() {
      this.parser.currentField = this.tableStart + this.dataOffset;
      return this.parser.readBytes(this.dataLength);
    }
  };
  var meta$1 = Object.freeze({ __proto__: null, meta });
  var PCLT = class extends SimpleTable {
    constructor(dict, dataview) {
      super(dict, dataview);
      console.warn(
        `This font uses a PCLT table, which is currently not supported by this parser.`
      );
      console.warn(
        `If you need this table parsed, please file an issue, or better yet, a PR.`
      );
    }
  };
  var PCLT$1 = Object.freeze({ __proto__: null, PCLT });
  var VDMX = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.uint16;
      this.numRecs = p22.uint16;
      this.numRatios = p22.uint16;
      this.ratRanges = [...new Array(this.numRatios)].map(
        (_) => new RatioRange(p22)
      );
      this.offsets = [...new Array(this.numRatios)].map(
        (_) => p22.Offset16
      );
      this.VDMXGroups = [...new Array(this.numRecs)].map(
        (_) => new VDMXGroup(p22)
      );
    }
  };
  var RatioRange = class {
    constructor(p22) {
      this.bCharSet = p22.uint8;
      this.xRatio = p22.uint8;
      this.yStartRatio = p22.uint8;
      this.yEndRatio = p22.uint8;
    }
  };
  var VDMXGroup = class {
    constructor(p22) {
      this.recs = p22.uint16;
      this.startsz = p22.uint8;
      this.endsz = p22.uint8;
      this.records = [...new Array(this.recs)].map(
        (_) => new vTable(p22)
      );
    }
  };
  var vTable = class {
    constructor(p22) {
      this.yPelHeight = p22.uint16;
      this.yMax = p22.int16;
      this.yMin = p22.int16;
    }
  };
  var VDMX$1 = Object.freeze({ __proto__: null, VDMX });
  var vhea = class extends SimpleTable {
    constructor(dict, dataview) {
      const { p: p22 } = super(dict, dataview);
      this.version = p22.fixed;
      this.ascent = this.vertTypoAscender = p22.int16;
      this.descent = this.vertTypoDescender = p22.int16;
      this.lineGap = this.vertTypoLineGap = p22.int16;
      this.advanceHeightMax = p22.int16;
      this.minTopSideBearing = p22.int16;
      this.minBottomSideBearing = p22.int16;
      this.yMaxExtent = p22.int16;
      this.caretSlopeRise = p22.int16;
      this.caretSlopeRun = p22.int16;
      this.caretOffset = p22.int16;
      this.reserved = p22.int16;
      this.reserved = p22.int16;
      this.reserved = p22.int16;
      this.reserved = p22.int16;
      this.metricDataFormat = p22.int16;
      this.numOfLongVerMetrics = p22.uint16;
      p22.verifyLength();
    }
  };
  var vhea$1 = Object.freeze({ __proto__: null, vhea });
  var vmtx = class extends SimpleTable {
    constructor(dict, dataview, tables) {
      super(dict, dataview);
      const numOfLongVerMetrics = tables.vhea.numOfLongVerMetrics;
      const numGlyphs = tables.maxp.numGlyphs;
      const metricsStart = p.currentPosition;
      lazy(this, `vMetrics`, () => {
        p.currentPosition = metricsStart;
        return [...new Array(numOfLongVerMetrics)].map(
          (_) => new LongVertMetric(p.uint16, p.int16)
        );
      });
      if (numOfLongVerMetrics < numGlyphs) {
        const tsbStart = metricsStart + numOfLongVerMetrics * 4;
        lazy(this, `topSideBearings`, () => {
          p.currentPosition = tsbStart;
          return [...new Array(numGlyphs - numOfLongVerMetrics)].map(
            (_) => p.int16
          );
        });
      }
    }
  };
  var LongVertMetric = class {
    constructor(h2, b2) {
      this.advanceHeight = h2;
      this.topSideBearing = b2;
    }
  };
  var vmtx$1 = Object.freeze({ __proto__: null, vmtx });

  // packages/global-styles-ui/build-module/font-library/utils/make-families-from-faces.mjs
  function makeFamiliesFromFaces(fontFaces) {
    const fontFamiliesObject = fontFaces.reduce(
      (acc, item) => {
        if (!acc[item.fontFamily]) {
          acc[item.fontFamily] = {
            name: item.fontFamily,
            fontFamily: item.fontFamily,
            slug: kebabCase2(item.fontFamily.toLowerCase()),
            fontFace: []
          };
        }
        acc[item.fontFamily].fontFace.push(item);
        return acc;
      },
      {}
    );
    return Object.values(fontFamiliesObject);
  }

  // packages/global-styles-ui/build-module/font-library/upload-fonts.mjs
  var import_jsx_runtime421 = __toESM(require_jsx_runtime(), 1);
  function UploadFonts() {
    const { installFonts } = (0, import_element265.useContext)(FontLibraryContext);
    const [isUploading, setIsUploading] = (0, import_element265.useState)(false);
    const [notice, setNotice] = (0, import_element265.useState)(null);
    const handleDropZone = (files) => {
      handleFilesUpload(files);
    };
    const onFilesUpload = (event) => {
      handleFilesUpload(event.target.files);
    };
    const handleFilesUpload = async (files) => {
      if (!files) {
        return;
      }
      setNotice(null);
      setIsUploading(true);
      const uniqueFilenames = /* @__PURE__ */ new Set();
      const selectedFiles = [...files];
      let hasInvalidFiles = false;
      const checkFilesPromises = selectedFiles.map(async (file) => {
        const isFont = await isFontFile(file);
        if (!isFont) {
          hasInvalidFiles = true;
          return null;
        }
        if (uniqueFilenames.has(file.name)) {
          return null;
        }
        const fileExtension = (((file.name ?? "").split(".") ?? []).pop() ?? "").toLowerCase();
        if (ALLOWED_FILE_EXTENSIONS.includes(fileExtension)) {
          uniqueFilenames.add(file.name);
          return file;
        }
        return null;
      });
      const allowedFiles = (await Promise.all(checkFilesPromises)).filter((file) => null !== file);
      if (allowedFiles.length > 0) {
        loadFiles(allowedFiles);
      } else {
        const message2 = hasInvalidFiles ? (0, import_i18n174.__)("Sorry, you are not allowed to upload this file type.") : (0, import_i18n174.__)("No fonts found to install.");
        setNotice({
          type: "error",
          message: message2
        });
        setIsUploading(false);
      }
    };
    const loadFiles = async (files) => {
      const fontFacesLoaded = await Promise.all(
        files.map(async (fontFile) => {
          const fontFaceData = await getFontFaceMetadata(fontFile);
          await loadFontFaceInBrowser(
            fontFaceData,
            fontFaceData.file,
            "all"
          );
          return fontFaceData;
        })
      );
      handleInstall(fontFacesLoaded);
    };
    async function isFontFile(file) {
      const font2 = new Font("Uploaded Font");
      try {
        const buffer = await readFileAsArrayBuffer(file);
        await font2.fromDataBuffer(buffer, "font");
        return true;
      } catch {
        return false;
      }
    }
    async function readFileAsArrayBuffer(file) {
      return new Promise((resolve, reject) => {
        const reader = new window.FileReader();
        reader.readAsArrayBuffer(file);
        reader.onload = () => resolve(reader.result);
        reader.onerror = reject;
      });
    }
    const getFontFaceMetadata = async (fontFile) => {
      const buffer = await readFileAsArrayBuffer(fontFile);
      const fontObj = new Font("Uploaded Font");
      fontObj.fromDataBuffer(buffer, fontFile.name);
      const onloadEvent = await new Promise(
        (resolve) => fontObj.onload = resolve
      );
      const font2 = onloadEvent.detail.font;
      const { name: name2 } = font2.opentype.tables;
      const fontName = name2.get(16) || name2.get(1);
      const isItalic = name2.get(2).toLowerCase().includes("italic");
      const fontWeight = font2.opentype.tables["OS/2"].usWeightClass || "normal";
      const isVariable = !!font2.opentype.tables.fvar;
      const weightAxis = isVariable && font2.opentype.tables.fvar.axes.find(
        ({ tag }) => tag === "wght"
      );
      const weightRange = weightAxis ? `${weightAxis.minValue} ${weightAxis.maxValue}` : null;
      return {
        file: fontFile,
        fontFamily: fontName,
        fontStyle: isItalic ? "italic" : "normal",
        fontWeight: weightRange || fontWeight
      };
    };
    const handleInstall = async (fontFaces) => {
      const fontFamilies = makeFamiliesFromFaces(fontFaces);
      try {
        await installFonts(fontFamilies);
        setNotice({
          type: "success",
          message: (0, import_i18n174.__)("Fonts were installed successfully.")
        });
      } catch (error2) {
        const typedError = error2;
        setNotice({
          type: "error",
          message: typedError.message,
          errors: typedError?.installationErrors
        });
      }
      setIsUploading(false);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime421.jsxs)("div", { className: "font-library__tabpanel-layout", children: [
      /* @__PURE__ */ (0, import_jsx_runtime421.jsx)(import_components110.DropZone, { onFilesDrop: handleDropZone }),
      /* @__PURE__ */ (0, import_jsx_runtime421.jsxs)(import_components110.__experimentalVStack, { className: "font-library__local-fonts", justify: "start", children: [
        notice && /* @__PURE__ */ (0, import_jsx_runtime421.jsxs)(
          import_components110.Notice,
          {
            status: notice.type,
            __unstableHTML: true,
            onRemove: () => setNotice(null),
            children: [
              notice.message,
              notice.errors && /* @__PURE__ */ (0, import_jsx_runtime421.jsx)("ul", { children: notice.errors.map((error2, index3) => /* @__PURE__ */ (0, import_jsx_runtime421.jsx)("li", { children: error2 }, index3)) })
            ]
          }
        ),
        isUploading && /* @__PURE__ */ (0, import_jsx_runtime421.jsx)(import_components110.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime421.jsx)("div", { className: "font-library__upload-area", children: /* @__PURE__ */ (0, import_jsx_runtime421.jsx)(import_components110.ProgressBar, {}) }) }),
        !isUploading && /* @__PURE__ */ (0, import_jsx_runtime421.jsx)(
          import_components110.FormFileUpload,
          {
            accept: ALLOWED_FILE_EXTENSIONS.map(
              (ext) => `.${ext}`
            ).join(","),
            multiple: true,
            onChange: onFilesUpload,
            render: ({ openFileDialog }) => /* @__PURE__ */ (0, import_jsx_runtime421.jsx)(
              import_components110.Button,
              {
                __next40pxDefaultSize: true,
                className: "font-library__upload-area",
                onClick: openFileDialog,
                children: (0, import_i18n174.__)("Upload font")
              }
            )
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime421.jsx)(import_components110.__experimentalText, { className: "font-library__upload-area__text", children: (0, import_i18n174.__)(
          "Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2."
        ) })
      ] })
    ] });
  }
  var upload_fonts_default = UploadFonts;

  // packages/global-styles-ui/build-module/font-library/modal.mjs
  var import_jsx_runtime422 = __toESM(require_jsx_runtime(), 1);
  var { Tabs } = unlock6(import_components111.privateApis);
  var DEFAULT_TAB = {
    id: "installed-fonts",
    title: (0, import_i18n175._x)("Library", "Font library")
  };
  var UPLOAD_TAB = {
    id: "upload-fonts",
    title: (0, import_i18n175._x)("Upload", "noun")
  };
  var tabsFromCollections = (collections) => collections.map(({ slug, name: name2 }) => ({
    id: slug,
    title: collections.length === 1 && slug === "google-fonts" ? (0, import_i18n175.__)("Install Fonts") : name2
  }));
  function FontLibraryModal({
    onRequestClose,
    defaultTabId = "installed-fonts"
  }) {
    const { records: collections = [] } = (0, import_core_data45.useEntityRecords)("root", "fontCollection", {
      _fields: "slug,name,description"
    });
    const canUserCreate = (0, import_data56.useSelect)((select9) => {
      return select9(import_core_data45.store).canUser("create", {
        kind: "postType",
        name: "wp_font_family"
      });
    }, []);
    const tabs = [DEFAULT_TAB];
    if (canUserCreate) {
      tabs.push(UPLOAD_TAB);
      tabs.push(...tabsFromCollections(collections || []));
    }
    return /* @__PURE__ */ (0, import_jsx_runtime422.jsx)(
      import_components111.Modal,
      {
        title: (0, import_i18n175.__)("Fonts"),
        onRequestClose,
        isFullScreen: true,
        className: "font-library-modal",
        children: /* @__PURE__ */ (0, import_jsx_runtime422.jsxs)(Tabs, { defaultTabId, children: [
          /* @__PURE__ */ (0, import_jsx_runtime422.jsx)("div", { className: "font-library-modal__tablist-container", children: /* @__PURE__ */ (0, import_jsx_runtime422.jsx)(Tabs.TabList, { children: tabs.map(({ id, title }) => /* @__PURE__ */ (0, import_jsx_runtime422.jsx)(Tabs.Tab, { tabId: id, children: title }, id)) }) }),
          tabs.map(({ id }) => {
            let contents;
            switch (id) {
              case "upload-fonts":
                contents = /* @__PURE__ */ (0, import_jsx_runtime422.jsx)(upload_fonts_default, {});
                break;
              case "installed-fonts":
                contents = /* @__PURE__ */ (0, import_jsx_runtime422.jsx)(installed_fonts_default, {});
                break;
              default:
                contents = /* @__PURE__ */ (0, import_jsx_runtime422.jsx)(font_collection_default, { slug: id });
            }
            return /* @__PURE__ */ (0, import_jsx_runtime422.jsx)(
              Tabs.TabPanel,
              {
                tabId: id,
                focusable: false,
                className: "font-library-modal__tab-panel",
                children: contents
              },
              id
            );
          })
        ] })
      }
    );
  }
  var modal_default2 = FontLibraryModal;

  // packages/global-styles-ui/build-module/font-family-item.mjs
  var import_i18n176 = __toESM(require_i18n(), 1);
  var import_components112 = __toESM(require_components(), 1);
  var import_element266 = __toESM(require_element(), 1);
  var import_jsx_runtime423 = __toESM(require_jsx_runtime(), 1);
  function FontFamilyItem({ font: font2 }) {
    const { handleSetLibraryFontSelected, setModalTabOpen } = (0, import_element266.useContext)(FontLibraryContext);
    const variantsCount = font2?.fontFace?.length || 1;
    const handleClick = () => {
      handleSetLibraryFontSelected?.(font2);
      setModalTabOpen?.("installed-fonts");
    };
    const previewStyle = getFamilyPreviewStyle(font2);
    return /* @__PURE__ */ (0, import_jsx_runtime423.jsx)(import_components112.__experimentalItem, { onClick: handleClick, children: /* @__PURE__ */ (0, import_jsx_runtime423.jsxs)(import_components112.__experimentalHStack, { justify: "space-between", children: [
      /* @__PURE__ */ (0, import_jsx_runtime423.jsx)(import_components112.FlexItem, { style: previewStyle, children: font2.name }),
      /* @__PURE__ */ (0, import_jsx_runtime423.jsx)(import_components112.FlexItem, { className: "global-styles-ui-screen-typography__font-variants-count", children: (0, import_i18n176.sprintf)(
        /* translators: %d: Number of font variants. */
        (0, import_i18n176._n)("%d variant", "%d variants", variantsCount),
        variantsCount
      ) })
    ] }) });
  }
  var font_family_item_default = FontFamilyItem;

  // packages/global-styles-ui/build-module/font-families.mjs
  var import_jsx_runtime424 = __toESM(require_jsx_runtime(), 1);
  function mapFontsWithSource(fonts, source) {
    return fonts ? fonts.map((f2) => setUIValuesNeeded(f2, { source })) : [];
  }
  function FontFamiliesInner() {
    const { baseCustomFonts, modalTabOpen, setModalTabOpen } = (0, import_element267.useContext)(FontLibraryContext);
    const [fontFamilies] = useSetting("typography.fontFamilies");
    const [baseFontFamilies] = useSetting(
      "typography.fontFamilies",
      void 0,
      "base"
    );
    const themeFonts = mapFontsWithSource(fontFamilies?.theme, "theme");
    const customFonts = mapFontsWithSource(fontFamilies?.custom, "custom");
    const activeFonts = [...themeFonts, ...customFonts].sort(
      (a2, b2) => a2.name.localeCompare(b2.name)
    );
    const hasFonts = 0 < activeFonts.length;
    const hasInstalledFonts = hasFonts || baseFontFamilies?.theme?.length > 0 || (baseCustomFonts?.length ?? 0) > 0;
    return /* @__PURE__ */ (0, import_jsx_runtime424.jsxs)(import_jsx_runtime424.Fragment, { children: [
      !!modalTabOpen && /* @__PURE__ */ (0, import_jsx_runtime424.jsx)(
        modal_default2,
        {
          onRequestClose: () => setModalTabOpen?.(""),
          defaultTabId: modalTabOpen
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime424.jsxs)(import_components113.__experimentalVStack, { spacing: 2, children: [
        /* @__PURE__ */ (0, import_jsx_runtime424.jsxs)(import_components113.__experimentalHStack, { justify: "space-between", children: [
          /* @__PURE__ */ (0, import_jsx_runtime424.jsx)(Subtitle, { level: 3, children: (0, import_i18n177.__)("Fonts") }),
          /* @__PURE__ */ (0, import_jsx_runtime424.jsx)(
            import_components113.Button,
            {
              onClick: () => setModalTabOpen?.("installed-fonts"),
              label: (0, import_i18n177.__)("Manage fonts"),
              icon: settings_default,
              size: "small"
            }
          )
        ] }),
        activeFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime424.jsx)(import_jsx_runtime424.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime424.jsx)(import_components113.__experimentalItemGroup, { size: "large", isBordered: true, isSeparated: true, children: activeFonts.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime424.jsx)(
          font_family_item_default,
          {
            font: font2
          },
          font2.slug
        )) }) }),
        !hasFonts && /* @__PURE__ */ (0, import_jsx_runtime424.jsxs)(import_jsx_runtime424.Fragment, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime424.jsx)(import_components113.__experimentalText, { as: "p", children: hasInstalledFonts ? (0, import_i18n177.__)("No fonts activated.") : (0, import_i18n177.__)("No fonts installed.") }),
          /* @__PURE__ */ (0, import_jsx_runtime424.jsx)(
            import_components113.Button,
            {
              className: "global-styles-ui-font-families__manage-fonts",
              variant: "secondary",
              __next40pxDefaultSize: true,
              onClick: () => {
                setModalTabOpen?.(
                  hasInstalledFonts ? "installed-fonts" : "upload-fonts"
                );
              },
              children: hasInstalledFonts ? (0, import_i18n177.__)("Manage fonts") : (0, import_i18n177.__)("Add fonts")
            }
          )
        ] })
      ] })
    ] });
  }
  function FontFamilies({ ...props }) {
    return /* @__PURE__ */ (0, import_jsx_runtime424.jsx)(context_default, { children: /* @__PURE__ */ (0, import_jsx_runtime424.jsx)(FontFamiliesInner, { ...props }) });
  }

  // packages/global-styles-ui/build-module/font-sizes/font-sizes-count.mjs
  var import_i18n178 = __toESM(require_i18n(), 1);
  var import_components114 = __toESM(require_components(), 1);
  var import_jsx_runtime425 = __toESM(require_jsx_runtime(), 1);
  function FontSizes() {
    return /* @__PURE__ */ (0, import_jsx_runtime425.jsxs)(import_components114.__experimentalVStack, { spacing: 2, children: [
      /* @__PURE__ */ (0, import_jsx_runtime425.jsx)(import_components114.__experimentalHStack, { justify: "space-between", children: /* @__PURE__ */ (0, import_jsx_runtime425.jsx)(Subtitle, { level: 3, children: (0, import_i18n178.__)("Font Sizes") }) }),
      /* @__PURE__ */ (0, import_jsx_runtime425.jsx)(import_components114.__experimentalItemGroup, { isBordered: true, isSeparated: true, children: /* @__PURE__ */ (0, import_jsx_runtime425.jsx)(NavigationButtonAsItem, { path: "/typography/font-sizes", children: /* @__PURE__ */ (0, import_jsx_runtime425.jsxs)(import_components114.__experimentalHStack, { direction: "row", children: [
        /* @__PURE__ */ (0, import_jsx_runtime425.jsx)(import_components114.FlexItem, { children: (0, import_i18n178.__)("Font size presets") }),
        /* @__PURE__ */ (0, import_jsx_runtime425.jsx)(icon_default, { icon: (0, import_i18n178.isRTL)() ? chevron_left_default : chevron_right_default })
      ] }) }) })
    ] });
  }
  var font_sizes_count_default = FontSizes;

  // packages/global-styles-ui/build-module/text-shadows.mjs
  var import_i18n179 = __toESM(require_i18n(), 1);
  var import_components115 = __toESM(require_components(), 1);
  var import_jsx_runtime426 = __toESM(require_jsx_runtime(), 1);
  function TextShadows() {
    return /* @__PURE__ */ (0, import_jsx_runtime426.jsxs)(Stack, { direction: "column", gap: "sm", children: [
      /* @__PURE__ */ (0, import_jsx_runtime426.jsx)(Subtitle, { level: 3, children: (0, import_i18n179.__)("Text shadows") }),
      /* @__PURE__ */ (0, import_jsx_runtime426.jsx)(import_components115.__experimentalItemGroup, { isBordered: true, isSeparated: true, children: /* @__PURE__ */ (0, import_jsx_runtime426.jsx)(NavigationButtonAsItem, { path: "/typography/text-shadows", children: /* @__PURE__ */ (0, import_jsx_runtime426.jsxs)(
        Stack,
        {
          direction: "row",
          justify: "space-between",
          align: "center",
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime426.jsx)("span", { children: (0, import_i18n179.__)("Text shadow presets") }),
            /* @__PURE__ */ (0, import_jsx_runtime426.jsx)(icon_default, { icon: (0, import_i18n179.isRTL)() ? chevron_left_default : chevron_right_default })
          ]
        }
      ) }) })
    ] });
  }
  var text_shadows_default = TextShadows;

  // packages/global-styles-ui/build-module/screen-typography.mjs
  var import_jsx_runtime427 = __toESM(require_jsx_runtime(), 1);
  function ScreenTypography() {
    const { fontLibraryEnabled } = (0, import_element268.useContext)(GlobalStylesContext);
    const [hasTextShadowControl] = useSetting(
      "typography.textShadow"
    );
    return /* @__PURE__ */ (0, import_jsx_runtime427.jsxs)(import_jsx_runtime427.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime427.jsx)(
        ScreenHeader,
        {
          title: (0, import_i18n180.__)("Typography"),
          description: (0, import_i18n180.__)(
            "Available fonts, typographic styles, and the application of those styles."
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime427.jsx)(ScreenBody, { children: /* @__PURE__ */ (0, import_jsx_runtime427.jsxs)(Stack, { direction: "column", gap: "xl", children: [
        /* @__PURE__ */ (0, import_jsx_runtime427.jsx)(TypographyVariations, { title: (0, import_i18n180.__)("Typesets") }),
        fontLibraryEnabled && /* @__PURE__ */ (0, import_jsx_runtime427.jsx)(FontFamilies, {}),
        /* @__PURE__ */ (0, import_jsx_runtime427.jsx)(typography_elements_default, {}),
        /* @__PURE__ */ (0, import_jsx_runtime427.jsx)(font_sizes_count_default, {}),
        hasTextShadowControl && /* @__PURE__ */ (0, import_jsx_runtime427.jsx)(text_shadows_default, {})
      ] }) })
    ] });
  }
  var screen_typography_default = ScreenTypography;

  // packages/global-styles-ui/build-module/screen-typography-element.mjs
  var import_i18n181 = __toESM(require_i18n(), 1);
  var import_components116 = __toESM(require_components(), 1);
  var import_element269 = __toESM(require_element(), 1);

  // packages/global-styles-ui/build-module/typography-panel.mjs
  var import_block_editor10 = __toESM(require_block_editor(), 1);
  var import_jsx_runtime428 = __toESM(require_jsx_runtime(), 1);
  var { useSettingsForBlockElement: useSettingsForBlockElement4, TypographyPanel: StylesTypographyPanel2 } = unlock6(import_block_editor10.privateApis);
  function TypographyPanel({
    element,
    headingLevel
  }) {
    let prefixParts = [];
    if (element === "heading") {
      prefixParts = prefixParts.concat(["elements", headingLevel]);
    } else if (element && element !== "text") {
      prefixParts = prefixParts.concat(["elements", element]);
    }
    const prefix2 = prefixParts.join(".");
    const [style] = useStyle(prefix2, "", "user", false);
    const [inheritedStyle, setStyle2] = useStyle(
      prefix2,
      "",
      "merged",
      false
    );
    const [rawSettings] = useSetting("");
    const usedElement = element === "heading" ? headingLevel : element;
    const settings = useSettingsForBlockElement4(
      rawSettings,
      void 0,
      usedElement
    );
    return /* @__PURE__ */ (0, import_jsx_runtime428.jsx)(
      StylesTypographyPanel2,
      {
        inheritedValue: inheritedStyle,
        value: style,
        onChange: setStyle2,
        settings,
        showInheritanceLabelIndicators: false
      }
    );
  }

  // packages/global-styles-ui/build-module/typography-preview.mjs
  var import_jsx_runtime429 = __toESM(require_jsx_runtime(), 1);
  function TypographyPreview({
    name: name2,
    element,
    headingLevel
  }) {
    let prefix2 = "";
    if (element === "heading") {
      prefix2 = `elements.${headingLevel}.`;
    } else if (element && element !== "text") {
      prefix2 = `elements.${element}.`;
    }
    const [fontFamily] = useStyle(prefix2 + "typography.fontFamily", name2);
    const [gradientValue] = useStyle(prefix2 + "color.gradient", name2);
    const [backgroundColor] = useStyle(prefix2 + "color.background", name2);
    const [fallbackBackgroundColor] = useStyle("color.background");
    const [color] = useStyle(prefix2 + "color.text", name2);
    const [fontSize] = useStyle(prefix2 + "typography.fontSize", name2);
    const [fontStyle] = useStyle(prefix2 + "typography.fontStyle", name2);
    const [fontWeight] = useStyle(prefix2 + "typography.fontWeight", name2);
    const [letterSpacing] = useStyle(
      prefix2 + "typography.letterSpacing",
      name2
    );
    const extraStyles = element === "link" ? {
      textDecoration: "underline"
    } : {};
    return /* @__PURE__ */ (0, import_jsx_runtime429.jsx)(
      "div",
      {
        className: "global-styles-ui-typography-preview",
        style: {
          fontFamily: fontFamily ?? "serif",
          background: gradientValue ?? backgroundColor ?? fallbackBackgroundColor,
          color,
          fontSize,
          fontStyle,
          fontWeight,
          letterSpacing,
          ...extraStyles
        },
        children: "Aa"
      }
    );
  }

  // packages/global-styles-ui/build-module/screen-typography-element.mjs
  var import_jsx_runtime430 = __toESM(require_jsx_runtime(), 1);
  var elements = {
    text: {
      description: (0, import_i18n181.__)("Manage the fonts used on the site."),
      title: (0, import_i18n181.__)("Text")
    },
    link: {
      description: (0, import_i18n181.__)("Manage the fonts and typography used on the links."),
      title: (0, import_i18n181.__)("Links")
    },
    heading: {
      description: (0, import_i18n181.__)("Manage the fonts and typography used on headings."),
      title: (0, import_i18n181.__)("Headings")
    },
    caption: {
      description: (0, import_i18n181.__)("Manage the fonts and typography used on captions."),
      title: (0, import_i18n181.__)("Captions")
    },
    cite: {
      description: (0, import_i18n181.__)("Manage the fonts and typography used on citations."),
      title: (0, import_i18n181.__)("Citations")
    },
    button: {
      description: (0, import_i18n181.__)("Manage the fonts and typography used on buttons."),
      title: (0, import_i18n181.__)("Buttons")
    },
    textInput: {
      description: (0, import_i18n181.__)("Manage the fonts and typography used on inputs."),
      title: (0, import_i18n181.__)("Inputs")
    },
    select: {
      description: (0, import_i18n181.__)("Manage the fonts and typography used on selects."),
      title: (0, import_i18n181.__)("Selects")
    }
  };
  function ScreenTypographyElement({ element }) {
    const [headingLevel, setHeadingLevel] = (0, import_element269.useState)("heading");
    return /* @__PURE__ */ (0, import_jsx_runtime430.jsxs)(import_jsx_runtime430.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime430.jsx)(
        ScreenHeader,
        {
          title: elements[element].title,
          description: elements[element].description
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime430.jsx)(import_components116.__experimentalSpacer, { marginX: 4, children: /* @__PURE__ */ (0, import_jsx_runtime430.jsx)(
        TypographyPreview,
        {
          element,
          headingLevel
        }
      ) }),
      element === "heading" && /* @__PURE__ */ (0, import_jsx_runtime430.jsx)(import_components116.__experimentalSpacer, { marginX: 4, marginBottom: "1em", children: /* @__PURE__ */ (0, import_jsx_runtime430.jsxs)(
        import_components116.__experimentalToggleGroupControl,
        {
          label: (0, import_i18n181.__)("Select heading level"),
          hideLabelFromVision: true,
          value: headingLevel,
          onChange: (value) => setHeadingLevel(value),
          isBlock: true,
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime430.jsx)(
              import_components116.__experimentalToggleGroupControlOption,
              {
                value: "heading",
                showTooltip: true,
                "aria-label": (0, import_i18n181.__)("All headings"),
                label: (0, import_i18n181._x)("All", "heading levels")
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime430.jsx)(
              import_components116.__experimentalToggleGroupControlOption,
              {
                value: "h1",
                showTooltip: true,
                "aria-label": (0, import_i18n181.__)("Heading 1"),
                label: (0, import_i18n181.__)("H1")
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime430.jsx)(
              import_components116.__experimentalToggleGroupControlOption,
              {
                value: "h2",
                showTooltip: true,
                "aria-label": (0, import_i18n181.__)("Heading 2"),
                label: (0, import_i18n181.__)("H2")
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime430.jsx)(
              import_components116.__experimentalToggleGroupControlOption,
              {
                value: "h3",
                showTooltip: true,
                "aria-label": (0, import_i18n181.__)("Heading 3"),
                label: (0, import_i18n181.__)("H3")
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime430.jsx)(
              import_components116.__experimentalToggleGroupControlOption,
              {
                value: "h4",
                showTooltip: true,
                "aria-label": (0, import_i18n181.__)("Heading 4"),
                label: (0, import_i18n181.__)("H4")
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime430.jsx)(
              import_components116.__experimentalToggleGroupControlOption,
              {
                value: "h5",
                showTooltip: true,
                "aria-label": (0, import_i18n181.__)("Heading 5"),
                label: (0, import_i18n181.__)("H5")
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime430.jsx)(
              import_components116.__experimentalToggleGroupControlOption,
              {
                value: "h6",
                showTooltip: true,
                "aria-label": (0, import_i18n181.__)("Heading 6"),
                label: (0, import_i18n181.__)("H6")
              }
            )
          ]
        }
      ) }),
      /* @__PURE__ */ (0, import_jsx_runtime430.jsx)(
        TypographyPanel,
        {
          element,
          headingLevel
        }
      )
    ] });
  }
  var screen_typography_element_default = ScreenTypographyElement;

  // packages/global-styles-ui/build-module/screen-colors.mjs
  var import_i18n183 = __toESM(require_i18n(), 1);
  var import_components118 = __toESM(require_components(), 1);
  var import_block_editor11 = __toESM(require_block_editor(), 1);

  // packages/global-styles-ui/build-module/palette.mjs
  var import_components117 = __toESM(require_components(), 1);
  var import_i18n182 = __toESM(require_i18n(), 1);
  var import_element270 = __toESM(require_element(), 1);

  // packages/global-styles-ui/build-module/color-indicator-wrapper.mjs
  var import_jsx_runtime431 = __toESM(require_jsx_runtime(), 1);
  function ColorIndicatorWrapper({
    className,
    children
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime431.jsx)(
      "div",
      {
        className: clsx_default(
          "global-styles-ui__color-indicator-wrapper",
          className
        ),
        children
      }
    );
  }
  var color_indicator_wrapper_default = ColorIndicatorWrapper;

  // packages/global-styles-ui/build-module/palette.mjs
  var import_jsx_runtime432 = __toESM(require_jsx_runtime(), 1);
  var EMPTY_COLORS = [];
  function Palette({ name: name2 }) {
    const [customColors] = useSetting("color.palette.custom");
    const [themeColors] = useSetting("color.palette.theme");
    const [defaultColors] = useSetting("color.palette.default");
    const [defaultPaletteEnabled] = useSetting(
      "color.defaultPalette",
      name2
    );
    const safeCustomColors = customColors || EMPTY_COLORS;
    const safeThemeColors = themeColors || EMPTY_COLORS;
    const safeDefaultColors = defaultColors || EMPTY_COLORS;
    const safeDefaultPaletteEnabled = defaultPaletteEnabled ?? true;
    const colors2 = (0, import_element270.useMemo)(
      () => [
        ...safeCustomColors,
        ...safeThemeColors,
        ...safeDefaultColors && safeDefaultPaletteEnabled ? safeDefaultColors : EMPTY_COLORS
      ],
      [
        safeCustomColors,
        safeThemeColors,
        safeDefaultColors,
        safeDefaultPaletteEnabled
      ]
    );
    const screenPath = !name2 ? "/colors/palette" : "/blocks/" + encodeURIComponent(name2) + "/colors/palette";
    return /* @__PURE__ */ (0, import_jsx_runtime432.jsxs)(Stack, { direction: "column", gap: "md", children: [
      /* @__PURE__ */ (0, import_jsx_runtime432.jsx)(Subtitle, { level: 3, children: (0, import_i18n182.__)("Palette") }),
      /* @__PURE__ */ (0, import_jsx_runtime432.jsx)(import_components117.__experimentalItemGroup, { isBordered: true, isSeparated: true, children: /* @__PURE__ */ (0, import_jsx_runtime432.jsx)(NavigationButtonAsItem, { path: screenPath, children: /* @__PURE__ */ (0, import_jsx_runtime432.jsxs)(
        Stack,
        {
          direction: "row",
          justify: "space-between",
          align: "center",
          children: [
            colors2.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime432.jsxs)(Stack, { direction: "row", align: "center", gap: "sm", children: [
              /* @__PURE__ */ (0, import_jsx_runtime432.jsx)("div", { className: "global-styles-ui__palette-preview", children: colors2.slice(0, 5).map(({ color }, index3) => /* @__PURE__ */ (0, import_jsx_runtime432.jsx)(
                color_indicator_wrapper_default,
                {
                  children: /* @__PURE__ */ (0, import_jsx_runtime432.jsx)(
                    import_components117.ColorIndicator,
                    {
                      colorValue: color
                    }
                  )
                },
                `${color}-${index3}`
              )) }),
              /* @__PURE__ */ (0, import_jsx_runtime432.jsx)("span", { children: (0, import_i18n182.__)("Edit palette") })
            ] }) : /* @__PURE__ */ (0, import_jsx_runtime432.jsx)("span", { children: (0, import_i18n182.__)("Add colors") }),
            /* @__PURE__ */ (0, import_jsx_runtime432.jsx)(icon_default, { icon: (0, import_i18n182.isRTL)() ? chevron_left_default : chevron_right_default })
          ]
        }
      ) }) })
    ] });
  }
  var palette_default = Palette;

  // packages/global-styles-ui/build-module/screen-colors.mjs
  var import_jsx_runtime433 = __toESM(require_jsx_runtime(), 1);
  var { useSettingsForBlockElement: useSettingsForBlockElement5, ColorPanel: StylesColorPanel2 } = unlock6(
    import_block_editor11.privateApis
  );
  var ADDITIONAL_ELEMENTS = [
    { name: "cite", label: (0, import_i18n183.__)("Citations") },
    { name: "textInput", label: (0, import_i18n183.__)("Inputs") },
    { name: "select", label: (0, import_i18n183.__)("Selects") }
  ];
  var DEFAULT_CONTROLS = {
    link: true,
    heading: true,
    button: true,
    caption: true,
    cite: true,
    textInput: true,
    select: true
  };
  function ScreenColors() {
    const [style, setStyle2] = useStyle(
      "",
      void 0,
      "user",
      false
    );
    const [inheritedStyle] = useStyle(
      "",
      void 0,
      "merged",
      false
    );
    const [rawSettings] = useSetting("");
    const settings = useSettingsForBlockElement5(rawSettings);
    return /* @__PURE__ */ (0, import_jsx_runtime433.jsxs)(import_jsx_runtime433.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime433.jsx)(
        ScreenHeader,
        {
          title: (0, import_i18n183.__)("Colors"),
          description: (0, import_i18n183.__)(
            "Palette colors and the application of those colors on site elements."
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime433.jsx)(ScreenBody, { children: /* @__PURE__ */ (0, import_jsx_runtime433.jsx)(import_components118.__experimentalVStack, { spacing: 7, children: /* @__PURE__ */ (0, import_jsx_runtime433.jsx)(palette_default, {}) }) }),
      /* @__PURE__ */ (0, import_jsx_runtime433.jsx)(
        StylesColorPanel2,
        {
          inheritedValue: inheritedStyle,
          value: style,
          onChange: setStyle2,
          settings,
          additionalElements: ADDITIONAL_ELEMENTS,
          defaultControls: DEFAULT_CONTROLS,
          showInheritanceLabelIndicators: false
        }
      )
    ] });
  }
  var screen_colors_default = ScreenColors;

  // packages/global-styles-ui/build-module/screen-color-palette.mjs
  var import_i18n187 = __toESM(require_i18n(), 1);

  // packages/global-styles-ui/build-module/color-palette-panel.mjs
  var import_compose42 = __toESM(require_compose(), 1);
  var import_components121 = __toESM(require_components(), 1);
  var import_i18n184 = __toESM(require_i18n(), 1);

  // packages/global-styles-ui/build-module/variations/variations-color.mjs
  var import_components120 = __toESM(require_components(), 1);

  // packages/global-styles-ui/build-module/preview-colors.mjs
  var import_components119 = __toESM(require_components(), 1);

  // packages/global-styles-ui/build-module/preset-colors.mjs
  var import_jsx_runtime434 = __toESM(require_jsx_runtime(), 1);
  function PresetColors() {
    const { paletteColors } = useStylesPreviewColors();
    return paletteColors.slice(0, 4).map(({ slug, color }, index3) => /* @__PURE__ */ (0, import_jsx_runtime434.jsx)(
      "div",
      {
        style: {
          flexGrow: 1,
          height: "100%",
          background: color
        }
      },
      `${slug}-${index3}`
    ));
  }

  // packages/global-styles-ui/build-module/preview-colors.mjs
  var import_jsx_runtime435 = __toESM(require_jsx_runtime(), 1);
  var firstFrameVariants2 = {
    start: {
      scale: 1,
      opacity: 1
    },
    hover: {
      scale: 0,
      opacity: 0
    }
  };
  var StylesPreviewColors = ({
    label,
    isFocused,
    withHoverView
  }) => {
    return /* @__PURE__ */ (0, import_jsx_runtime435.jsx)(
      preview_wrapper_default,
      {
        label,
        isFocused,
        withHoverView,
        children: ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime435.jsx)(
          import_components119.__unstableMotion.div,
          {
            variants: firstFrameVariants2,
            style: {
              height: "100%",
              overflow: "hidden"
            },
            children: /* @__PURE__ */ (0, import_jsx_runtime435.jsx)(
              import_components119.__experimentalHStack,
              {
                spacing: 0,
                justify: "center",
                style: {
                  height: "100%",
                  overflow: "hidden"
                },
                children: /* @__PURE__ */ (0, import_jsx_runtime435.jsx)(PresetColors, {})
              }
            )
          },
          key
        )
      }
    );
  };
  var preview_colors_default = StylesPreviewColors;

  // packages/global-styles-ui/build-module/variations/variations-color.mjs
  var import_jsx_runtime436 = __toESM(require_jsx_runtime(), 1);
  var propertiesToFilter2 = ["color"];
  function ColorVariations({
    title,
    gap = 2
  }) {
    const colorVariations = useCurrentMergeThemeStyleVariationsWithUserConfig(propertiesToFilter2);
    if (colorVariations?.length <= 1) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime436.jsxs)(import_components120.__experimentalVStack, { spacing: 3, children: [
      title && /* @__PURE__ */ (0, import_jsx_runtime436.jsx)(Subtitle, { level: 3, children: title }),
      /* @__PURE__ */ (0, import_jsx_runtime436.jsx)(import_components120.__experimentalGrid, { gap, children: colorVariations.map((variation, index3) => /* @__PURE__ */ (0, import_jsx_runtime436.jsx)(
        Variation,
        {
          variation,
          isPill: true,
          properties: propertiesToFilter2,
          showTooltip: true,
          children: () => /* @__PURE__ */ (0, import_jsx_runtime436.jsx)(preview_colors_default, {})
        },
        index3
      )) })
    ] });
  }

  // packages/global-styles-ui/build-module/color-palette-panel.mjs
  var import_jsx_runtime437 = __toESM(require_jsx_runtime(), 1);
  var mobilePopoverProps = { placement: "bottom-start", offset: 8 };
  function ColorPalettePanel({ name: name2 }) {
    const [themeColors, setThemeColors] = useSetting(
      "color.palette.theme",
      name2
    );
    const [baseThemeColors] = useSetting(
      "color.palette.theme",
      name2,
      "base"
    );
    const [defaultColors, setDefaultColors] = useSetting(
      "color.palette.default",
      name2
    );
    const [baseDefaultColors] = useSetting(
      "color.palette.default",
      name2,
      "base"
    );
    const [customColors, setCustomColors] = useSetting(
      "color.palette.custom",
      name2
    );
    const [defaultPaletteEnabled] = useSetting(
      "color.defaultPalette",
      name2
    );
    const isMobileViewport = (0, import_compose42.useViewportMatch)("small", "<");
    const popoverProps = isMobileViewport ? mobilePopoverProps : void 0;
    return /* @__PURE__ */ (0, import_jsx_runtime437.jsxs)(import_components121.__experimentalVStack, { className: "global-styles-ui-color-palette-panel", spacing: 8, children: [
      !!themeColors?.length && /* @__PURE__ */ (0, import_jsx_runtime437.jsx)(
        import_components121.__experimentalPaletteEdit,
        {
          canReset: themeColors !== baseThemeColors,
          canOnlyChangeValues: true,
          colors: themeColors,
          onChange: setThemeColors,
          paletteLabel: (0, import_i18n184.__)("Theme"),
          paletteLabelHeadingLevel: 3,
          popoverProps
        }
      ),
      !!defaultColors && !!defaultColors.length && !!defaultPaletteEnabled && /* @__PURE__ */ (0, import_jsx_runtime437.jsx)(
        import_components121.__experimentalPaletteEdit,
        {
          canReset: defaultColors !== baseDefaultColors,
          canOnlyChangeValues: true,
          colors: defaultColors,
          onChange: setDefaultColors,
          paletteLabel: (0, import_i18n184.__)("Default"),
          paletteLabelHeadingLevel: 3,
          popoverProps
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime437.jsx)(
        import_components121.__experimentalPaletteEdit,
        {
          colors: customColors,
          onChange: setCustomColors,
          paletteLabel: (0, import_i18n184.__)("Custom"),
          paletteLabelHeadingLevel: 3,
          slugPrefix: "custom-",
          popoverProps
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime437.jsx)(ColorVariations, { title: (0, import_i18n184.__)("Palettes") })
    ] });
  }

  // packages/global-styles-ui/build-module/gradients-palette-panel.mjs
  var import_compose43 = __toESM(require_compose(), 1);
  var import_components122 = __toESM(require_components(), 1);
  var import_i18n185 = __toESM(require_i18n(), 1);
  var import_jsx_runtime438 = __toESM(require_jsx_runtime(), 1);
  var mobilePopoverProps2 = { placement: "bottom-start", offset: 8 };
  function GradientPalettePanel({
    name: name2
  }) {
    const [themeGradients, setThemeGradients] = useSetting(
      "color.gradients.theme",
      name2
    );
    const [baseThemeGradients] = useSetting(
      "color.gradients.theme",
      name2,
      "base"
    );
    const [defaultGradients, setDefaultGradients] = useSetting(
      "color.gradients.default",
      name2
    );
    const [baseDefaultGradients] = useSetting(
      "color.gradients.default",
      name2,
      "base"
    );
    const [customGradients, setCustomGradients] = useSetting(
      "color.gradients.custom",
      name2
    );
    const [defaultPaletteEnabled] = useSetting(
      "color.defaultGradients",
      name2
    );
    const isMobileViewport = (0, import_compose43.useViewportMatch)("small", "<");
    const popoverProps = isMobileViewport ? mobilePopoverProps2 : void 0;
    return /* @__PURE__ */ (0, import_jsx_runtime438.jsxs)(
      import_components122.__experimentalVStack,
      {
        className: "global-styles-ui-gradient-palette-panel",
        spacing: 8,
        children: [
          !!themeGradients && !!themeGradients.length && /* @__PURE__ */ (0, import_jsx_runtime438.jsx)(
            import_components122.__experimentalPaletteEdit,
            {
              canReset: themeGradients !== baseThemeGradients,
              canOnlyChangeValues: true,
              gradients: themeGradients,
              onChange: setThemeGradients,
              paletteLabel: (0, import_i18n185.__)("Theme"),
              paletteLabelHeadingLevel: 3,
              popoverProps
            }
          ),
          !!defaultGradients && !!defaultGradients.length && !!defaultPaletteEnabled && /* @__PURE__ */ (0, import_jsx_runtime438.jsx)(
            import_components122.__experimentalPaletteEdit,
            {
              canReset: defaultGradients !== baseDefaultGradients,
              canOnlyChangeValues: true,
              gradients: defaultGradients,
              onChange: setDefaultGradients,
              paletteLabel: (0, import_i18n185.__)("Default"),
              paletteLabelHeadingLevel: 3,
              popoverProps
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime438.jsx)(
            import_components122.__experimentalPaletteEdit,
            {
              gradients: customGradients,
              onChange: setCustomGradients,
              paletteLabel: (0, import_i18n185.__)("Custom"),
              paletteLabelHeadingLevel: 3,
              slugPrefix: "custom-",
              popoverProps
            }
          )
        ]
      }
    );
  }

  // packages/global-styles-ui/build-module/duotone-palette-panel.mjs
  var import_compose44 = __toESM(require_compose(), 1);
  var import_element271 = __toESM(require_element(), 1);
  var import_components123 = __toESM(require_components(), 1);
  var import_i18n186 = __toESM(require_i18n(), 1);
  var import_jsx_runtime439 = __toESM(require_jsx_runtime(), 1);
  var mobilePopoverProps3 = { placement: "bottom-start", offset: 8 };
  var asArray = (value) => Array.isArray(value) ? value : [];
  function DuotonePalettePanel({
    name: name2
  }) {
    const [themeDuotone, setThemeDuotone] = useSetting(
      "color.duotone.theme",
      name2
    );
    const [baseThemeDuotone] = useSetting(
      "color.duotone.theme",
      name2,
      "base"
    );
    const [defaultDuotone, setDefaultDuotone] = useSetting(
      "color.duotone.default",
      name2
    );
    const [baseDefaultDuotone] = useSetting(
      "color.duotone.default",
      name2,
      "base"
    );
    const [customDuotone, setCustomDuotone] = useSetting(
      "color.duotone.custom",
      name2
    );
    const [defaultDuotoneEnabled] = useSetting(
      "color.defaultDuotone",
      name2
    );
    const [themeColors] = useSetting(
      "color.palette.theme",
      name2
    );
    const [defaultColors] = useSetting(
      "color.palette.default",
      name2
    );
    const [customColors] = useSetting(
      "color.palette.custom",
      name2
    );
    const [defaultPaletteEnabled] = useSetting(
      "color.defaultPalette",
      name2
    );
    const colorPalette = (0, import_element271.useMemo)(
      () => [
        ...asArray(customColors),
        ...asArray(themeColors),
        ...defaultPaletteEnabled ? asArray(defaultColors) : []
      ],
      [customColors, themeColors, defaultColors, defaultPaletteEnabled]
    );
    const isMobileViewport = (0, import_compose44.useViewportMatch)("small", "<");
    const popoverProps = isMobileViewport ? mobilePopoverProps3 : void 0;
    return /* @__PURE__ */ (0, import_jsx_runtime439.jsxs)(
      Stack,
      {
        direction: "column",
        className: "global-styles-ui-duotone-palette-panel",
        gap: "2xl",
        children: [
          !!asArray(themeDuotone).length && /* @__PURE__ */ (0, import_jsx_runtime439.jsx)(
            import_components123.__experimentalPaletteEdit,
            {
              canReset: themeDuotone !== baseThemeDuotone,
              canOnlyChangeValues: true,
              duotones: asArray(themeDuotone),
              colorPalette,
              onChange: setThemeDuotone,
              paletteLabel: (0, import_i18n186.__)("Theme"),
              paletteLabelHeadingLevel: 3,
              popoverProps
            }
          ),
          !!asArray(defaultDuotone).length && !!defaultDuotoneEnabled && /* @__PURE__ */ (0, import_jsx_runtime439.jsx)(
            import_components123.__experimentalPaletteEdit,
            {
              canReset: defaultDuotone !== baseDefaultDuotone,
              canOnlyChangeValues: true,
              duotones: asArray(defaultDuotone),
              colorPalette,
              onChange: setDefaultDuotone,
              paletteLabel: (0, import_i18n186.__)("Default"),
              paletteLabelHeadingLevel: 3,
              popoverProps
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime439.jsx)(
            import_components123.__experimentalPaletteEdit,
            {
              duotones: asArray(customDuotone),
              colorPalette,
              onChange: setCustomDuotone,
              paletteLabel: (0, import_i18n186.__)("Custom"),
              paletteLabelHeadingLevel: 3,
              slugPrefix: "custom-",
              popoverProps
            }
          )
        ]
      }
    );
  }

  // packages/global-styles-ui/build-module/screen-color-palette.mjs
  var import_jsx_runtime440 = __toESM(require_jsx_runtime(), 1);
  function ScreenColorPalette({ name: name2 }) {
    return /* @__PURE__ */ (0, import_jsx_runtime440.jsxs)(import_jsx_runtime440.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime440.jsx)(
        ScreenHeader,
        {
          title: (0, import_i18n187.__)("Edit palette"),
          description: (0, import_i18n187.__)(
            "The combination of colors used across the site and in color pickers."
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime440.jsxs)(tabs_exports.Root, { defaultValue: "color", children: [
        /* @__PURE__ */ (0, import_jsx_runtime440.jsx)("div", { className: "global-styles-ui-color-palette__tablist-container", children: /* @__PURE__ */ (0, import_jsx_runtime440.jsxs)(tabs_exports.List, { className: "global-styles-ui-color-palette__tablist", children: [
          /* @__PURE__ */ (0, import_jsx_runtime440.jsx)(tabs_exports.Tab, { value: "color", children: (0, import_i18n187.__)("Color") }),
          /* @__PURE__ */ (0, import_jsx_runtime440.jsx)(tabs_exports.Tab, { value: "gradient", children: (0, import_i18n187.__)("Gradient") }),
          /* @__PURE__ */ (0, import_jsx_runtime440.jsx)(tabs_exports.Tab, { value: "duotone", children: (0, import_i18n187.__)("Duotone") })
        ] }) }),
        /* @__PURE__ */ (0, import_jsx_runtime440.jsx)(tabs_exports.Panel, { value: "color", tabIndex: -1, children: /* @__PURE__ */ (0, import_jsx_runtime440.jsx)(ColorPalettePanel, { name: name2 }) }),
        /* @__PURE__ */ (0, import_jsx_runtime440.jsx)(tabs_exports.Panel, { value: "gradient", tabIndex: -1, children: /* @__PURE__ */ (0, import_jsx_runtime440.jsx)(GradientPalettePanel, { name: name2 }) }),
        /* @__PURE__ */ (0, import_jsx_runtime440.jsx)(tabs_exports.Panel, { value: "duotone", tabIndex: -1, children: /* @__PURE__ */ (0, import_jsx_runtime440.jsx)(DuotonePalettePanel, { name: name2 }) })
      ] })
    ] });
  }
  var screen_color_palette_default = ScreenColorPalette;

  // packages/global-styles-ui/build-module/screen-background.mjs
  var import_i18n188 = __toESM(require_i18n(), 1);
  var import_block_editor13 = __toESM(require_block_editor(), 1);
  var import_components124 = __toESM(require_components(), 1);

  // packages/global-styles-ui/build-module/background-panel.mjs
  var import_block_editor12 = __toESM(require_block_editor(), 1);
  var import_jsx_runtime441 = __toESM(require_jsx_runtime(), 1);
  var BACKGROUND_DEFAULT_VALUES = {
    backgroundSize: "auto"
  };
  var { BackgroundPanel: StylesBackgroundPanel2 } = unlock6(
    import_block_editor12.privateApis
  );
  function BackgroundPanel() {
    const [style] = useStyle("", void 0, "user", false);
    const [inheritedStyle, setStyle2] = useStyle(
      "",
      void 0,
      "merged",
      false
    );
    const resolvedInheritedStyle = useStyleWithResolvedBackground(inheritedStyle);
    const [settings] = useSetting("");
    return /* @__PURE__ */ (0, import_jsx_runtime441.jsx)(
      StylesBackgroundPanel2,
      {
        inheritedValue: resolvedInheritedStyle,
        value: style,
        onChange: setStyle2,
        settings,
        defaultValues: BACKGROUND_DEFAULT_VALUES,
        showInheritanceLabelIndicators: false
      }
    );
  }

  // packages/global-styles-ui/build-module/screen-background.mjs
  var import_jsx_runtime442 = __toESM(require_jsx_runtime(), 1);
  var { useHasBackgroundPanel: useHasBackgroundPanel4 } = unlock6(import_block_editor13.privateApis);
  function ScreenBackground() {
    const [settings] = useSetting("");
    const hasBackgroundPanel = useHasBackgroundPanel4(settings);
    return /* @__PURE__ */ (0, import_jsx_runtime442.jsxs)(import_jsx_runtime442.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime442.jsx)(
        ScreenHeader,
        {
          title: (0, import_i18n188.__)("Background"),
          description: /* @__PURE__ */ (0, import_jsx_runtime442.jsx)(import_components124.__experimentalText, { children: (0, import_i18n188.__)("Set styles for the site's background.") })
        }
      ),
      hasBackgroundPanel && /* @__PURE__ */ (0, import_jsx_runtime442.jsx)(BackgroundPanel, {})
    ] });
  }
  var screen_background_default = ScreenBackground;

  // packages/global-styles-ui/build-module/shadows-panel.mjs
  var import_i18n191 = __toESM(require_i18n(), 1);

  // packages/global-styles-ui/build-module/presets/preset-group.mjs
  var import_components126 = __toESM(require_components(), 1);
  var import_i18n190 = __toESM(require_i18n(), 1);
  var import_element272 = __toESM(require_element(), 1);

  // packages/global-styles-ui/build-module/presets/dialogs/confirm-reset-dialog.mjs
  var import_components125 = __toESM(require_components(), 1);
  var import_i18n189 = __toESM(require_i18n(), 1);
  var import_jsx_runtime443 = __toESM(require_jsx_runtime(), 1);
  function ConfirmResetDialog({
    text,
    confirmButtonText,
    isOpen: isOpen2,
    toggleOpen,
    onConfirm
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime443.jsx)(
      import_components125.__experimentalConfirmDialog,
      {
        isOpen: isOpen2,
        cancelButtonText: (0, import_i18n189.__)("Cancel"),
        confirmButtonText,
        onCancel: toggleOpen,
        onConfirm: () => {
          toggleOpen();
          onConfirm();
        },
        size: "medium",
        children: text
      }
    );
  }

  // packages/global-styles-ui/build-module/presets/preset-group.mjs
  var import_jsx_runtime444 = __toESM(require_jsx_runtime(), 1);
  function PresetGroup({
    label,
    items,
    getEditPath,
    addLabel,
    onAdd,
    menuAction
  }) {
    const [isResetOpen, setIsResetOpen] = (0, import_element272.useState)(false);
    const showMenu = !!menuAction && items.length > 0;
    return /* @__PURE__ */ (0, import_jsx_runtime444.jsxs)(Stack, { direction: "column", gap: "sm", children: [
      menuAction && isResetOpen && /* @__PURE__ */ (0, import_jsx_runtime444.jsx)(
        ConfirmResetDialog,
        {
          text: menuAction.confirmText,
          confirmButtonText: menuAction.confirmButtonText,
          isOpen: isResetOpen,
          toggleOpen: () => setIsResetOpen(false),
          onConfirm: menuAction.onConfirm
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime444.jsxs)(Stack, { justify: "space-between", align: "flex-start", children: [
        /* @__PURE__ */ (0, import_jsx_runtime444.jsx)(Subtitle, { level: 3, children: label }),
        /* @__PURE__ */ (0, import_jsx_runtime444.jsxs)(Stack, { direction: "row", gap: "xs", children: [
          addLabel && onAdd && /* @__PURE__ */ (0, import_jsx_runtime444.jsx)(
            import_components126.Button,
            {
              size: "small",
              icon: plus_default,
              label: addLabel,
              onClick: onAdd
            }
          ),
          showMenu && /* @__PURE__ */ (0, import_jsx_runtime444.jsxs)(menu_exports.Root, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime444.jsx)(
              menu_exports.Trigger,
              {
                render: /* @__PURE__ */ (0, import_jsx_runtime444.jsx)(
                  import_components126.Button,
                  {
                    size: "small",
                    icon: more_vertical_default,
                    label: menuAction.optionsLabel
                  }
                )
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime444.jsx)(menu_exports.Popup, { children: /* @__PURE__ */ (0, import_jsx_runtime444.jsx)(
              menu_exports.Item,
              {
                onClick: () => setIsResetOpen(true),
                children: /* @__PURE__ */ (0, import_jsx_runtime444.jsx)(menu_exports.ItemLabel, { children: menuAction.label })
              }
            ) })
          ] })
        ] })
      ] }),
      items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime444.jsx)(import_components126.__experimentalItemGroup, { isBordered: true, isSeparated: true, children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime444.jsx)(
        NavigationButtonAsItem,
        {
          path: getEditPath(item.slug),
          children: /* @__PURE__ */ (0, import_jsx_runtime444.jsxs)(
            Stack,
            {
              direction: "row",
              justify: "space-between",
              align: "center",
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime444.jsx)(import_components126.FlexItem, { children: item.name }),
                /* @__PURE__ */ (0, import_jsx_runtime444.jsx)(
                  icon_default,
                  {
                    icon: (0, import_i18n190.isRTL)() ? chevron_left_default : chevron_right_default
                  }
                )
              ]
            }
          )
        },
        item.slug
      )) })
    ] });
  }

  // packages/global-styles-ui/build-module/presets/use-presets.mjs
  var EMPTY_ARRAY12 = [];
  function usePresets(settingsPath, origin) {
    const path = `${settingsPath}.${origin}`;
    const [presets = EMPTY_ARRAY12, setPresets] = useSetting(path);
    const [basePresets = EMPTY_ARRAY12] = useSetting(
      path,
      void 0,
      "base"
    );
    return { presets, basePresets, setPresets };
  }

  // packages/global-styles-ui/build-module/shadows-panel.mjs
  var import_jsx_runtime445 = __toESM(require_jsx_runtime(), 1);
  var defaultShadow = "6px 6px 9px rgba(0, 0, 0, 0.2)";
  function ShadowsPanel() {
    const [defaultEnabled] = useSetting("shadow.defaultPresets");
    const def = usePresets("shadow.presets", "default");
    const theme2 = usePresets("shadow.presets", "theme");
    const custom = usePresets("shadow.presets", "custom");
    const addCustomShadow = () => {
      const index3 = getNewIndexFromPresets(custom.presets, "shadow-");
      custom.setPresets([
        ...custom.presets,
        {
          /* translators: %d: is an index for a preset */
          name: (0, import_i18n191.sprintf)((0, import_i18n191.__)("Shadow %d"), index3),
          shadow: defaultShadow,
          slug: `shadow-${index3}`
        }
      ]);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime445.jsxs)(import_jsx_runtime445.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime445.jsx)(
        ScreenHeader,
        {
          title: (0, import_i18n191.__)("Shadows"),
          description: (0, import_i18n191.__)(
            "Manage and create shadow styles for use across the site."
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime445.jsx)(ScreenBody, { children: /* @__PURE__ */ (0, import_jsx_runtime445.jsxs)(
        Stack,
        {
          direction: "column",
          className: "global-styles-ui__shadows-panel",
          gap: "xl",
          children: [
            defaultEnabled && /* @__PURE__ */ (0, import_jsx_runtime445.jsx)(
              PresetGroup,
              {
                label: (0, import_i18n191.__)("Default"),
                items: def.presets,
                getEditPath: (slug) => `/shadows/edit/default/${slug}`
              }
            ),
            theme2.presets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime445.jsx)(
              PresetGroup,
              {
                label: (0, import_i18n191.__)("Theme"),
                items: theme2.presets,
                getEditPath: (slug) => `/shadows/edit/theme/${slug}`
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime445.jsx)(
              PresetGroup,
              {
                label: (0, import_i18n191.__)("Custom"),
                items: custom.presets,
                getEditPath: (slug) => `/shadows/edit/custom/${slug}`,
                addLabel: (0, import_i18n191.__)("Add shadow"),
                onAdd: addCustomShadow,
                menuAction: {
                  label: (0, import_i18n191.__)("Remove all custom shadows"),
                  optionsLabel: (0, import_i18n191.__)("Shadow options"),
                  confirmText: (0, import_i18n191.__)(
                    "Are you sure you want to remove all custom shadows?"
                  ),
                  confirmButtonText: (0, import_i18n191.__)("Remove"),
                  onConfirm: () => custom.setPresets([])
                }
              }
            )
          ]
        }
      ) })
    ] });
  }

  // packages/global-styles-ui/build-module/shadows-edit-panel.mjs
  var import_components130 = __toESM(require_components(), 1);
  var import_i18n194 = __toESM(require_i18n(), 1);
  var import_element274 = __toESM(require_element(), 1);

  // packages/global-styles-ui/build-module/shadow-utils.mjs
  function getShadowParts(shadow) {
    const shadowValues = shadow.match(/(?:[^,(]|\([^)]*\))+/g) || [];
    return shadowValues.map((value) => value.trim());
  }
  function shadowStringToObject(shadowValue) {
    const defaultShadow2 = {
      x: "0",
      y: "0",
      blur: "0",
      spread: "0",
      color: "#000",
      inset: false
    };
    if (!shadowValue) {
      return defaultShadow2;
    }
    if (shadowValue.includes("none")) {
      return defaultShadow2;
    }
    const lengthsRegex = /((?:^|\s+)(-?\d*\.?\d+(?:px|%|in|cm|mm|em|rem|ex|pt|pc|vh|vw|vmin|vmax|ch|lh)?)(?=\s|$)(?![^(]*\))){1,4}/g;
    const matches = shadowValue.match(lengthsRegex) || [];
    if (matches.length !== 1) {
      return defaultShadow2;
    }
    const lengths = matches[0].split(" ").map((value) => value.trim()).filter((value) => value);
    if (lengths.length < 2) {
      return defaultShadow2;
    }
    const insets = shadowValue.match(/inset/gi) || [];
    if (insets.length > 1) {
      return defaultShadow2;
    }
    const hasInset = insets.length === 1;
    let colorString = shadowValue.replace(lengthsRegex, "").trim();
    if (hasInset) {
      colorString = colorString.replace("inset", "").replace("INSET", "").trim();
    }
    const colorRegex2 = /^#([0-9a-f]{3}){1,2}$|^#([0-9a-f]{4}){1,2}$|^(?:rgb|hsl)a?\(?[\d*\.?\d+%?,?\/?\s]*\)$/gi;
    let colorMatches = (colorString.match(colorRegex2) || []).map((value) => value?.trim()).filter((value) => value);
    if (colorMatches.length > 1) {
      return defaultShadow2;
    } else if (colorMatches.length === 0) {
      colorMatches = colorString.trim().split(" ").filter((value) => value);
      if (colorMatches.length > 1) {
        return defaultShadow2;
      }
    }
    const [x2, y3, blur, spread] = lengths;
    return {
      x: x2,
      y: y3,
      blur: blur || defaultShadow2.blur,
      spread: spread || defaultShadow2.spread,
      inset: hasInset,
      color: colorString || defaultShadow2.color
    };
  }
  function shadowObjectToString(shadowObj) {
    const shadowString = `${shadowObj.x || "0px"} ${shadowObj.y || "0px"} ${shadowObj.blur || "0px"} ${shadowObj.spread || "0px"}`;
    return `${shadowObj.inset ? "inset" : ""} ${shadowString} ${shadowObj.color || ""}`.trim();
  }
  function textShadowStringToObject(textShadowValue) {
    const { x: x2, y: y3, blur, color } = shadowStringToObject(textShadowValue);
    return { x: x2, y: y3, blur, color };
  }
  function textShadowObjectToString(textShadowObj) {
    const lengths = `${textShadowObj.x || "0px"} ${textShadowObj.y || "0px"} ${textShadowObj.blur || "0px"}`;
    return `${lengths} ${textShadowObj.color || ""}`.trim();
  }

  // packages/global-styles-ui/build-module/presets/preset-edit-header.mjs
  var import_components127 = __toESM(require_components(), 1);
  var import_jsx_runtime446 = __toESM(require_jsx_runtime(), 1);
  function PresetEditHeader({
    title,
    description,
    menuLabel,
    menuItems: menuItems2
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime446.jsxs)(Stack, { justify: "space-between", align: "flex-start", children: [
      /* @__PURE__ */ (0, import_jsx_runtime446.jsx)(ScreenHeader, { title, description }),
      menuItems2.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime446.jsx)(import_components127.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime446.jsx)(import_components127.__experimentalSpacer, { marginTop: 2, marginBottom: 0, paddingX: 4, children: /* @__PURE__ */ (0, import_jsx_runtime446.jsxs)(menu_exports.Root, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime446.jsx)(
          menu_exports.Trigger,
          {
            render: /* @__PURE__ */ (0, import_jsx_runtime446.jsx)(
              import_components127.Button,
              {
                size: "small",
                icon: more_vertical_default,
                label: menuLabel
              }
            )
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime446.jsx)(menu_exports.Popup, { children: menuItems2.map((item) => /* @__PURE__ */ (0, import_jsx_runtime446.jsx)(
          menu_exports.Item,
          {
            disabled: item.disabled,
            onClick: item.onClick,
            children: /* @__PURE__ */ (0, import_jsx_runtime446.jsx)(menu_exports.ItemLabel, { children: item.label })
          },
          item.label
        )) })
      ] }) }) })
    ] });
  }

  // packages/global-styles-ui/build-module/presets/dialogs/confirm-delete-dialog.mjs
  var import_components128 = __toESM(require_components(), 1);
  var import_i18n192 = __toESM(require_i18n(), 1);
  var import_jsx_runtime447 = __toESM(require_jsx_runtime(), 1);
  function ConfirmDeleteDialog2({
    message: message2,
    isOpen: isOpen2,
    toggleOpen,
    onConfirm
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime447.jsx)(
      import_components128.__experimentalConfirmDialog,
      {
        isOpen: isOpen2,
        cancelButtonText: (0, import_i18n192.__)("Cancel"),
        confirmButtonText: (0, import_i18n192.__)("Delete"),
        onCancel: toggleOpen,
        onConfirm: () => {
          toggleOpen();
          onConfirm();
        },
        size: "medium",
        children: message2
      }
    );
  }

  // packages/global-styles-ui/build-module/presets/dialogs/rename-dialog.mjs
  var import_components129 = __toESM(require_components(), 1);
  var import_i18n193 = __toESM(require_i18n(), 1);
  var import_element273 = __toESM(require_element(), 1);
  var import_jsx_runtime448 = __toESM(require_jsx_runtime(), 1);
  function RenameDialog({
    initialName,
    placeholder,
    toggleOpen,
    onRename
  }) {
    const [newName, setNewName] = (0, import_element273.useState)(
      initialName
    );
    const handleConfirm = () => {
      if (newName && newName.trim()) {
        onRename(newName);
      }
      toggleOpen();
    };
    return /* @__PURE__ */ (0, import_jsx_runtime448.jsx)(
      import_components129.Modal,
      {
        onRequestClose: toggleOpen,
        focusOnMount: "firstContentElement",
        title: (0, import_i18n193.__)("Rename"),
        size: "small",
        children: /* @__PURE__ */ (0, import_jsx_runtime448.jsx)(
          "form",
          {
            onSubmit: (event) => {
              event.preventDefault();
              handleConfirm();
            },
            children: /* @__PURE__ */ (0, import_jsx_runtime448.jsxs)(Stack, { gap: "sm", direction: "column", children: [
              /* @__PURE__ */ (0, import_jsx_runtime448.jsx)(
                import_components129.__experimentalInputControl,
                {
                  autoComplete: "off",
                  value: newName,
                  onChange: setNewName,
                  label: (0, import_i18n193.__)("Name"),
                  placeholder
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime448.jsxs)(Stack, { justify: "end", direction: "row", children: [
                /* @__PURE__ */ (0, import_jsx_runtime448.jsx)(
                  import_components129.Button,
                  {
                    __next40pxDefaultSize: true,
                    variant: "tertiary",
                    onClick: toggleOpen,
                    children: (0, import_i18n193.__)("Cancel")
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime448.jsx)(
                  import_components129.Button,
                  {
                    __next40pxDefaultSize: true,
                    variant: "primary",
                    type: "submit",
                    children: (0, import_i18n193.__)("Save")
                  }
                )
              ] })
            ] })
          }
        )
      }
    );
  }

  // packages/global-styles-ui/build-module/shadows-edit-panel.mjs
  var import_jsx_runtime449 = __toESM(require_jsx_runtime(), 1);
  function ShadowsEditPanel() {
    const { goBack, params } = (0, import_components130.useNavigator)();
    const origin = params.category;
    const slug = params.slug;
    const { presets, basePresets, setPresets } = usePresets(
      "shadow.presets",
      origin
    );
    const shadow = presets.find((s2) => s2.slug === slug);
    const [isDeleteOpen, setIsDeleteOpen] = (0, import_element274.useState)(false);
    const [isRenameOpen, setIsRenameOpen] = (0, import_element274.useState)(false);
    (0, import_element274.useEffect)(() => {
      if (!!slug && !shadow) {
        goBack();
      }
    }, [shadow, slug, goBack]);
    if (!origin || !slug || !shadow) {
      return null;
    }
    const baseShadow = basePresets.find((s2) => s2.slug === slug);
    const onShadowChange = (value) => setPresets(
      presets.map(
        (p4) => p4.slug === slug ? { ...shadow, shadow: value } : p4
      )
    );
    const menuItems2 = origin === "custom" ? [
      {
        label: (0, import_i18n194.__)("Rename"),
        onClick: () => setIsRenameOpen(true)
      },
      {
        label: (0, import_i18n194.__)("Delete"),
        onClick: () => setIsDeleteOpen(true)
      }
    ] : [
      {
        label: (0, import_i18n194.__)("Reset"),
        onClick: () => {
          if (!baseShadow) {
            return;
          }
          setPresets(
            presets.map(
              (p4) => p4.slug === slug ? baseShadow : p4
            )
          );
        },
        disabled: shadow.shadow === baseShadow?.shadow
      }
    ];
    return /* @__PURE__ */ (0, import_jsx_runtime449.jsxs)(import_jsx_runtime449.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
        PresetEditHeader,
        {
          title: shadow.name,
          menuLabel: (0, import_i18n194.__)("Menu"),
          menuItems: menuItems2
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime449.jsxs)(ScreenBody, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(ShadowsPreview, { shadow: shadow.shadow }),
        /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
          ShadowEditor,
          {
            shadow: shadow.shadow,
            onChange: onShadowChange
          }
        )
      ] }),
      isDeleteOpen && /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
        ConfirmDeleteDialog2,
        {
          message: (0, import_i18n194.sprintf)(
            /* translators: %s: Name of the shadow preset. */
            (0, import_i18n194.__)(
              'Are you sure you want to delete "%s" shadow preset?'
            ),
            shadow.name
          ),
          isOpen: isDeleteOpen,
          toggleOpen: () => setIsDeleteOpen(false),
          onConfirm: () => {
            setPresets(
              presets.filter((p4) => p4.slug !== slug)
            );
            goBack();
          }
        }
      ),
      isRenameOpen && /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
        RenameDialog,
        {
          initialName: shadow.name,
          placeholder: (0, import_i18n194.__)("Shadow name"),
          toggleOpen: () => setIsRenameOpen(false),
          onRename: (name2) => setPresets(
            presets.map(
              (p4) => p4.slug === slug ? { ...p4, name: name2 } : p4
            )
          )
        }
      )
    ] });
  }
  function ShadowsPreview({ shadow }) {
    const shadowStyle = {
      boxShadow: shadow
    };
    return /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(import_components130.__experimentalSpacer, { marginBottom: 4, marginTop: -2, children: /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
      Stack,
      {
        direction: "row",
        align: "center",
        justify: "center",
        className: "global-styles-ui__shadow-preview-panel",
        children: /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
          "div",
          {
            className: "global-styles-ui__shadow-preview-block",
            style: shadowStyle
          }
        )
      }
    ) });
  }
  function ShadowEditor({ shadow, onChange }) {
    const addShadowButtonRef = (0, import_element274.useRef)(null);
    const shadowParts = (0, import_element274.useMemo)(() => getShadowParts(shadow), [shadow]);
    const onChangeShadowPart = (index3, part) => {
      const newShadowParts = [...shadowParts];
      newShadowParts[index3] = part;
      onChange(newShadowParts.join(", "));
    };
    const onAddShadowPart = () => {
      onChange([...shadowParts, defaultShadow].join(", "));
    };
    const onRemoveShadowPart = (index3) => {
      onChange(shadowParts.filter((p4, i2) => i2 !== index3).join(", "));
      addShadowButtonRef.current?.focus();
    };
    return /* @__PURE__ */ (0, import_jsx_runtime449.jsxs)(import_jsx_runtime449.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(Stack, { direction: "column", gap: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime449.jsxs)(Stack, { justify: "space-between", align: "flex-start", children: [
        /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(Subtitle, { level: 3, children: (0, import_i18n194.__)("Shadows") }),
        /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(import_components130.FlexItem, { className: "global-styles-ui__shadows-panel__options-container", children: /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
          import_components130.Button,
          {
            size: "small",
            icon: plus_default,
            label: (0, import_i18n194.__)("Add shadow"),
            onClick: () => {
              onAddShadowPart();
            },
            ref: addShadowButtonRef
          }
        ) })
      ] }) }),
      /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(import_components130.__experimentalSpacer, {}),
      /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(import_components130.__experimentalItemGroup, { isBordered: true, isSeparated: true, children: shadowParts.map((part, index3) => /* @__PURE__ */ (0, import_jsx_runtime449.jsx)("div", { role: "listitem", children: /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
        ShadowItem,
        {
          shadow: part,
          onChange: (value) => onChangeShadowPart(index3, value),
          canRemove: shadowParts.length > 1,
          onRemove: () => onRemoveShadowPart(index3)
        }
      ) }, index3)) })
    ] });
  }
  function ShadowItem({
    shadow,
    onChange,
    canRemove,
    onRemove
  }) {
    const popoverProps = {
      placement: "left-start",
      offset: 36,
      shift: true
    };
    const shadowObj = (0, import_element274.useMemo)(
      () => shadowStringToObject(shadow),
      [shadow]
    );
    const onShadowChange = (newShadow) => {
      onChange(shadowObjectToString(newShadow));
    };
    return /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
      import_components130.Dropdown,
      {
        popoverProps,
        className: "global-styles-ui__shadow-editor__dropdown",
        renderToggle: ({ onToggle, isOpen: isOpen2 }) => {
          const toggleProps = {
            onClick: onToggle,
            className: clsx_default(
              "global-styles-ui__shadow-editor__dropdown-toggle",
              { "is-open": isOpen2 }
            ),
            "aria-expanded": isOpen2
          };
          const removeButtonProps = {
            onClick: () => {
              if (isOpen2) {
                onToggle();
              }
              onRemove();
            },
            className: clsx_default(
              "global-styles-ui__shadow-editor__remove-button",
              { "is-open": isOpen2 }
            ),
            label: (0, import_i18n194.__)("Remove shadow")
          };
          return /* @__PURE__ */ (0, import_jsx_runtime449.jsxs)(import_jsx_runtime449.Fragment, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
              import_components130.Button,
              {
                __next40pxDefaultSize: true,
                icon: shadow_default,
                ...toggleProps,
                children: shadowObj.inset ? (0, import_i18n194.__)("Inner shadow") : (0, import_i18n194.__)("Drop shadow")
              }
            ),
            canRemove && /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
              import_components130.Button,
              {
                size: "small",
                icon: reset_default,
                ...removeButtonProps
              }
            )
          ] });
        },
        renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
          import_components130.__experimentalDropdownContentWrapper,
          {
            paddingSize: "medium",
            className: "global-styles-ui__shadow-editor__dropdown-content",
            children: /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
              ShadowPopover,
              {
                shadowObj,
                onChange: onShadowChange
              }
            )
          }
        )
      }
    );
  }
  function ShadowPopover({ shadowObj, onChange }) {
    const __experimentalIsRenderedInSidebar = true;
    const enableAlpha = true;
    const onShadowChange = (key, value) => {
      const newShadow = {
        ...shadowObj,
        [key]: value
      };
      onChange(newShadow);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime449.jsxs)(
      Stack,
      {
        direction: "column",
        gap: "md",
        className: "global-styles-ui__shadow-editor-panel",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
            import_components130.ColorPalette,
            {
              clearable: false,
              enableAlpha,
              __experimentalIsRenderedInSidebar,
              value: shadowObj.color,
              onChange: (value) => onShadowChange("color", value)
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime449.jsxs)(
            import_components130.__experimentalToggleGroupControl,
            {
              label: (0, import_i18n194.__)("Shadow Type"),
              value: shadowObj.inset ? "inset" : "outset",
              isBlock: true,
              onChange: (value) => onShadowChange("inset", value === "inset"),
              hideLabelFromVision: true,
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
                  import_components130.__experimentalToggleGroupControlOption,
                  {
                    value: "outset",
                    label: (0, import_i18n194.__)("Outset")
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
                  import_components130.__experimentalToggleGroupControlOption,
                  {
                    value: "inset",
                    label: (0, import_i18n194.__)("Inset")
                  }
                )
              ]
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime449.jsxs)(import_components130.__experimentalGrid, { columns: 2, gap: 4, children: [
            /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
              ShadowInputControl,
              {
                label: (0, import_i18n194.__)("X Position"),
                value: shadowObj.x,
                onChange: (value) => onShadowChange("x", value)
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
              ShadowInputControl,
              {
                label: (0, import_i18n194.__)("Y Position"),
                value: shadowObj.y,
                onChange: (value) => onShadowChange("y", value)
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
              ShadowInputControl,
              {
                label: (0, import_i18n194.__)("Blur"),
                value: shadowObj.blur,
                onChange: (value) => onShadowChange("blur", value)
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
              ShadowInputControl,
              {
                label: (0, import_i18n194.__)("Spread"),
                value: shadowObj.spread,
                onChange: (value) => onShadowChange("spread", value)
              }
            )
          ] })
        ]
      }
    );
  }
  function ShadowInputControl({
    label,
    value,
    onChange
  }) {
    const onValueChange = (next) => {
      const isNumeric = next !== void 0 && !isNaN(parseFloat(next));
      const nextValue = isNumeric ? next : "0px";
      onChange(nextValue);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime449.jsx)(
      import_components130.__experimentalUnitControl,
      {
        label,
        value,
        onChange: onValueChange
      }
    );
  }

  // packages/global-styles-ui/build-module/screen-shadows.mjs
  var import_jsx_runtime450 = __toESM(require_jsx_runtime(), 1);
  function ScreenShadows() {
    return /* @__PURE__ */ (0, import_jsx_runtime450.jsx)(ShadowsPanel, {});
  }
  function ScreenShadowsEdit() {
    return /* @__PURE__ */ (0, import_jsx_runtime450.jsx)(ShadowsEditPanel, {});
  }

  // packages/global-styles-ui/build-module/screen-text-shadows.mjs
  var import_i18n195 = __toESM(require_i18n(), 1);
  var import_jsx_runtime451 = __toESM(require_jsx_runtime(), 1);
  var DEFAULT_TEXT_SHADOW = "0.05em 0.05em 0.1em rgba(0, 0, 0, 0.3)";
  function ScreenTextShadows() {
    const [defaultEnabled] = useSetting(
      "typography.defaultTextShadowPresets"
    );
    const def = usePresets(
      "typography.textShadowPresets",
      "default"
    );
    const theme2 = usePresets(
      "typography.textShadowPresets",
      "theme"
    );
    const custom = usePresets(
      "typography.textShadowPresets",
      "custom"
    );
    const addCustomTextShadow = () => {
      const index3 = getNewIndexFromPresets(custom.presets, "text-shadow-");
      custom.setPresets([
        ...custom.presets,
        {
          /* translators: %d: is an index for a preset */
          name: (0, import_i18n195.sprintf)((0, import_i18n195.__)("Text Shadow %d"), index3),
          textShadow: DEFAULT_TEXT_SHADOW,
          slug: `text-shadow-${index3}`
        }
      ]);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime451.jsxs)(import_jsx_runtime451.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime451.jsx)(
        ScreenHeader,
        {
          title: (0, import_i18n195.__)("Text shadows"),
          description: (0, import_i18n195.__)(
            "Manage and create text shadow styles for use across the site."
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime451.jsx)(ScreenBody, { children: /* @__PURE__ */ (0, import_jsx_runtime451.jsxs)(
        Stack,
        {
          direction: "column",
          className: "global-styles-ui__text-shadows-panel",
          gap: "xl",
          children: [
            defaultEnabled && /* @__PURE__ */ (0, import_jsx_runtime451.jsx)(
              PresetGroup,
              {
                label: (0, import_i18n195.__)("Default"),
                items: def.presets,
                getEditPath: (slug) => `/typography/text-shadows/edit/default/${slug}`
              }
            ),
            theme2.presets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime451.jsx)(
              PresetGroup,
              {
                label: (0, import_i18n195.__)("Theme"),
                items: theme2.presets,
                getEditPath: (slug) => `/typography/text-shadows/edit/theme/${slug}`
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime451.jsx)(
              PresetGroup,
              {
                label: (0, import_i18n195.__)("Custom"),
                items: custom.presets,
                getEditPath: (slug) => `/typography/text-shadows/edit/custom/${slug}`,
                addLabel: (0, import_i18n195.__)("Add text shadow"),
                onAdd: addCustomTextShadow,
                menuAction: {
                  label: (0, import_i18n195.__)("Remove all custom text shadows"),
                  optionsLabel: (0, import_i18n195.__)("Text shadow options"),
                  confirmText: (0, import_i18n195.__)(
                    "Are you sure you want to remove all custom text shadows?"
                  ),
                  confirmButtonText: (0, import_i18n195.__)("Remove"),
                  onConfirm: () => custom.setPresets([])
                }
              }
            )
          ]
        }
      ) })
    ] });
  }

  // packages/global-styles-ui/build-module/screen-text-shadows-edit.mjs
  var import_components131 = __toESM(require_components(), 1);
  var import_i18n196 = __toESM(require_i18n(), 1);
  var import_element275 = __toESM(require_element(), 1);
  var import_jsx_runtime452 = __toESM(require_jsx_runtime(), 1);
  function ScreenTextShadowsEdit() {
    const { goBack, params } = (0, import_components131.useNavigator)();
    const origin = params.category;
    const slug = params.slug;
    const { presets, basePresets, setPresets } = usePresets(
      "typography.textShadowPresets",
      origin
    );
    const textShadow = presets.find((p4) => p4.slug === slug);
    const [isDeleteOpen, setIsDeleteOpen] = (0, import_element275.useState)(false);
    const [isRenameOpen, setIsRenameOpen] = (0, import_element275.useState)(false);
    (0, import_element275.useLayoutEffect)(() => {
      if (!!slug && !textShadow) {
        goBack();
      }
    }, [slug, textShadow, goBack]);
    if (!origin || !slug || !textShadow) {
      return null;
    }
    const baseTextShadow = basePresets.find((p4) => p4.slug === slug);
    const onTextShadowChange = (value) => setPresets(
      presets.map(
        (p4) => p4.slug === slug ? { ...textShadow, textShadow: value } : p4
      )
    );
    const menuItems2 = origin === "custom" ? [
      {
        label: (0, import_i18n196.__)("Rename"),
        onClick: () => setIsRenameOpen(true)
      },
      {
        label: (0, import_i18n196.__)("Delete"),
        onClick: () => setIsDeleteOpen(true)
      }
    ] : [
      {
        label: (0, import_i18n196.__)("Reset"),
        onClick: () => {
          if (!baseTextShadow) {
            return;
          }
          setPresets(
            presets.map(
              (p4) => p4.slug === slug ? baseTextShadow : p4
            )
          );
        },
        disabled: textShadow.textShadow === baseTextShadow?.textShadow
      }
    ];
    return /* @__PURE__ */ (0, import_jsx_runtime452.jsxs)(import_jsx_runtime452.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
        PresetEditHeader,
        {
          title: textShadow.name,
          menuLabel: (0, import_i18n196.__)("Menu"),
          menuItems: menuItems2
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime452.jsxs)(ScreenBody, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(TextShadowsPreview, { textShadow: textShadow.textShadow }),
        /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
          TextShadowEditor,
          {
            textShadow: textShadow.textShadow,
            onChange: onTextShadowChange
          }
        )
      ] }),
      isDeleteOpen && /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
        ConfirmDeleteDialog2,
        {
          message: (0, import_i18n196.sprintf)(
            /* translators: %s: Name of the text shadow preset. */
            (0, import_i18n196.__)(
              'Are you sure you want to delete "%s" text shadow preset?'
            ),
            textShadow.name
          ),
          isOpen: isDeleteOpen,
          toggleOpen: () => setIsDeleteOpen(false),
          onConfirm: () => {
            setPresets(
              presets.filter((p4) => p4.slug !== slug)
            );
            goBack();
          }
        }
      ),
      isRenameOpen && /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
        RenameDialog,
        {
          initialName: textShadow.name,
          placeholder: (0, import_i18n196.__)("Text shadow name"),
          toggleOpen: () => setIsRenameOpen(false),
          onRename: (name2) => setPresets(
            presets.map(
              (p4) => p4.slug === slug ? { ...p4, name: name2 } : p4
            )
          )
        }
      )
    ] });
  }
  function TextShadowsPreview({ textShadow }) {
    const textShadowStyle = {
      textShadow
    };
    return /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
      Stack,
      {
        direction: "row",
        align: "center",
        justify: "center",
        className: "global-styles-ui__text-shadow-preview-panel",
        children: /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
          "span",
          {
            className: "global-styles-ui__text-shadow-preview-text",
            style: textShadowStyle,
            children: (0, import_i18n196.__)("Code is poetry")
          }
        )
      }
    );
  }
  function TextShadowEditor({ textShadow, onChange }) {
    const addTextShadowButtonRef = (0, import_element275.useRef)(null);
    const textShadowParts = (0, import_element275.useMemo)(
      () => getShadowParts(textShadow),
      [textShadow]
    );
    const onChangeTextShadowPart = (index3, part) => {
      const newTextShadowParts = [...textShadowParts];
      newTextShadowParts[index3] = part;
      onChange(newTextShadowParts.join(", "));
    };
    const onAddTextShadowPart = () => {
      onChange([...textShadowParts, DEFAULT_TEXT_SHADOW].join(", "));
    };
    const onRemoveTextShadowPart = (index3) => {
      onChange(
        textShadowParts.filter((p4, i2) => i2 !== index3).join(", ")
      );
      addTextShadowButtonRef.current?.focus();
    };
    return /* @__PURE__ */ (0, import_jsx_runtime452.jsxs)(import_jsx_runtime452.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime452.jsxs)(
        Stack,
        {
          direction: "row",
          justify: "space-between",
          align: "center",
          className: "global-styles-ui__text-shadow-editor__header",
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(Subtitle, { level: 3, children: (0, import_i18n196.__)("Text shadows") }),
            /* @__PURE__ */ (0, import_jsx_runtime452.jsx)("div", { className: "global-styles-ui__shadows-panel__options-container", children: /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
              import_components131.Button,
              {
                size: "small",
                icon: plus_default,
                label: (0, import_i18n196.__)("Add text shadow"),
                onClick: onAddTextShadowPart,
                ref: addTextShadowButtonRef
              }
            ) })
          ]
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(import_components131.__experimentalItemGroup, { isBordered: true, isSeparated: true, children: textShadowParts.map((part, index3) => /* @__PURE__ */ (0, import_jsx_runtime452.jsx)("div", { role: "listitem", children: /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
        TextShadowItem,
        {
          textShadow: part,
          onChange: (value) => onChangeTextShadowPart(index3, value),
          canRemove: textShadowParts.length > 1,
          onRemove: () => onRemoveTextShadowPart(index3)
        }
      ) }, index3)) })
    ] });
  }
  function TextShadowItem({
    textShadow,
    onChange,
    canRemove,
    onRemove
  }) {
    const popoverProps = {
      placement: "left-start",
      offset: 36,
      shift: true
    };
    const textShadowObj = (0, import_element275.useMemo)(
      () => textShadowStringToObject(textShadow),
      [textShadow]
    );
    const onTextShadowChange = (newTextShadow) => {
      onChange(textShadowObjectToString(newTextShadow));
    };
    return /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
      import_components131.Dropdown,
      {
        popoverProps,
        className: "global-styles-ui__text-shadow-editor__dropdown",
        renderToggle: ({ onToggle, isOpen: isOpen2 }) => {
          return /* @__PURE__ */ (0, import_jsx_runtime452.jsxs)(import_jsx_runtime452.Fragment, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
              import_components131.Button,
              {
                __next40pxDefaultSize: true,
                icon: typography_default,
                onClick: onToggle,
                className: clsx_default(
                  "global-styles-ui__text-shadow-editor__dropdown-toggle",
                  { "is-open": isOpen2 }
                ),
                "aria-expanded": isOpen2,
                children: (0, import_i18n196.__)("Text shadow")
              }
            ),
            canRemove && /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
              import_components131.Button,
              {
                size: "small",
                icon: reset_default,
                onClick: () => {
                  if (isOpen2) {
                    onToggle();
                  }
                  onRemove();
                },
                className: clsx_default(
                  "global-styles-ui__text-shadow-editor__remove-button",
                  { "is-open": isOpen2 }
                ),
                label: (0, import_i18n196.__)("Remove text shadow")
              }
            )
          ] });
        },
        renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
          import_components131.__experimentalDropdownContentWrapper,
          {
            paddingSize: "medium",
            className: "global-styles-ui__text-shadow-editor__dropdown-content",
            children: /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
              TextShadowPopover,
              {
                textShadowObj,
                onChange: onTextShadowChange
              }
            )
          }
        )
      }
    );
  }
  function TextShadowPopover({
    textShadowObj,
    onChange
  }) {
    const onTextShadowChange = (key, value) => {
      const newTextShadow = {
        ...textShadowObj,
        [key]: value
      };
      onChange(newTextShadow);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime452.jsxs)(
      Stack,
      {
        direction: "column",
        gap: "lg",
        className: "global-styles-ui__text-shadow-editor-panel",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
            import_components131.ColorPalette,
            {
              clearable: false,
              enableAlpha: true,
              __experimentalIsRenderedInSidebar: true,
              value: textShadowObj.color,
              onChange: (value) => onTextShadowChange("color", value ?? "")
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime452.jsxs)("div", { className: "global-styles-ui__text-shadow-editor__inputs", children: [
            /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
              TextShadowInputControl,
              {
                label: (0, import_i18n196.__)("X Position"),
                value: textShadowObj.x,
                onChange: (value) => onTextShadowChange("x", value)
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
              TextShadowInputControl,
              {
                label: (0, import_i18n196.__)("Y Position"),
                value: textShadowObj.y,
                onChange: (value) => onTextShadowChange("y", value)
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
              TextShadowInputControl,
              {
                label: (0, import_i18n196.__)("Blur"),
                value: textShadowObj.blur,
                onChange: (value) => onTextShadowChange("blur", value)
              }
            )
          ] })
        ]
      }
    );
  }
  function TextShadowInputControl({
    label,
    value,
    onChange
  }) {
    const onValueChange = (next) => {
      const isNumeric = next !== void 0 && !isNaN(parseFloat(next));
      const nextValue = isNumeric ? next : "0px";
      onChange(nextValue);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime452.jsx)(
      import_components131.__experimentalUnitControl,
      {
        label,
        value,
        onChange: onValueChange
      }
    );
  }

  // packages/global-styles-ui/build-module/screen-layout.mjs
  var import_i18n197 = __toESM(require_i18n(), 1);
  var import_block_editor15 = __toESM(require_block_editor(), 1);

  // packages/global-styles-ui/build-module/dimensions-panel.mjs
  var import_block_editor14 = __toESM(require_block_editor(), 1);
  var import_element276 = __toESM(require_element(), 1);
  var import_jsx_runtime453 = __toESM(require_jsx_runtime(), 1);
  var { useSettingsForBlockElement: useSettingsForBlockElement6, DimensionsPanel: StylesDimensionsPanel2 } = unlock6(import_block_editor14.privateApis);
  var DEFAULT_CONTROLS2 = {
    contentSize: true,
    wideSize: true,
    padding: true,
    margin: true,
    blockGap: true,
    height: true,
    minHeight: true,
    minWidth: true,
    width: true,
    childLayout: false
  };
  function DimensionsPanel() {
    const [style] = useStyle("", void 0, "user", false);
    const [inheritedStyle, setStyle2] = useStyle(
      "",
      void 0,
      "merged",
      false
    );
    const [userSettings] = useSetting("", void 0, "user");
    const [rawSettings, setSettings] = useSetting("");
    const settings = useSettingsForBlockElement6(rawSettings);
    const inheritedStyleWithLayout = (0, import_element276.useMemo)(() => {
      return {
        ...inheritedStyle,
        layout: settings.layout
      };
    }, [inheritedStyle, settings.layout]);
    const styleWithLayout = (0, import_element276.useMemo)(() => {
      return {
        ...style,
        layout: userSettings.layout
      };
    }, [style, userSettings.layout]);
    const onChange = (newStyle) => {
      const updatedStyle = { ...newStyle };
      delete updatedStyle.layout;
      setStyle2(updatedStyle);
      if (newStyle.layout !== userSettings.layout) {
        const updatedSettings = {
          ...userSettings,
          layout: newStyle.layout
        };
        if (updatedSettings.layout?.definitions) {
          delete updatedSettings.layout.definitions;
        }
        setSettings(updatedSettings);
      }
    };
    return /* @__PURE__ */ (0, import_jsx_runtime453.jsx)(
      StylesDimensionsPanel2,
      {
        inheritedValue: inheritedStyleWithLayout,
        value: styleWithLayout,
        onChange,
        settings,
        includeLayoutControls: true,
        defaultControls: DEFAULT_CONTROLS2,
        showInheritanceLabelIndicators: false
      }
    );
  }

  // packages/global-styles-ui/build-module/screen-layout.mjs
  var import_jsx_runtime454 = __toESM(require_jsx_runtime(), 1);
  var { useHasDimensionsPanel: useHasDimensionsPanel4, useSettingsForBlockElement: useSettingsForBlockElement7 } = unlock6(
    import_block_editor15.privateApis
  );
  function ScreenLayout() {
    const [rawSettings] = useSetting("");
    const settings = useSettingsForBlockElement7(rawSettings);
    const hasDimensionsPanel = useHasDimensionsPanel4(settings);
    return /* @__PURE__ */ (0, import_jsx_runtime454.jsxs)(import_jsx_runtime454.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime454.jsx)(ScreenHeader, { title: (0, import_i18n197.__)("Layout") }),
      hasDimensionsPanel && /* @__PURE__ */ (0, import_jsx_runtime454.jsx)(DimensionsPanel, {})
    ] });
  }
  var screen_layout_default = ScreenLayout;

  // packages/global-styles-ui/build-module/screen-style-variations.mjs
  var import_components134 = __toESM(require_components(), 1);
  var import_i18n200 = __toESM(require_i18n(), 1);

  // packages/global-styles-ui/build-module/style-variations-content.mjs
  var import_i18n199 = __toESM(require_i18n(), 1);
  var import_components133 = __toESM(require_components(), 1);

  // packages/global-styles-ui/build-module/style-variations-container.mjs
  var import_core_data46 = __toESM(require_core_data(), 1);
  var import_data57 = __toESM(require_data(), 1);
  var import_element277 = __toESM(require_element(), 1);
  var import_components132 = __toESM(require_components(), 1);
  var import_i18n198 = __toESM(require_i18n(), 1);
  var import_jsx_runtime455 = __toESM(require_jsx_runtime(), 1);
  function StyleVariationsContainer({
    gap = 2
  }) {
    const { user } = (0, import_element277.useContext)(GlobalStylesContext);
    const userStyles = user?.styles;
    const variations = (0, import_data57.useSelect)((select9) => {
      const result = select9(
        import_core_data46.store
      ).__experimentalGetCurrentThemeGlobalStylesVariations();
      return Array.isArray(result) ? result : void 0;
    }, []);
    const fullStyleVariations = variations?.filter(
      (variation) => {
        return !isVariationWithProperties(variation, ["color"]) && !isVariationWithProperties(variation, [
          "typography",
          "spacing"
        ]);
      }
    );
    const themeVariations = (0, import_element277.useMemo)(() => {
      const withEmptyVariation = [
        {
          title: (0, import_i18n198.__)("Default"),
          settings: {},
          styles: {}
        },
        ...fullStyleVariations ?? []
      ];
      return [
        ...withEmptyVariation.map((variation) => {
          const blockStyles = variation?.styles?.blocks ? { ...variation.styles.blocks } : {};
          if (userStyles?.blocks) {
            Object.keys(userStyles.blocks).forEach((blockName) => {
              if (userStyles.blocks?.[blockName]?.css) {
                const variationBlockStyles = blockStyles[blockName] || {};
                const customCSS = {
                  css: `${blockStyles[blockName]?.css || ""} ${userStyles.blocks?.[blockName]?.css?.trim() || ""}`
                };
                blockStyles[blockName] = {
                  ...variationBlockStyles,
                  ...customCSS
                };
              }
            });
          }
          const css = userStyles?.css || variation.styles?.css ? {
            css: `${variation.styles?.css || ""} ${userStyles?.css || ""}`
          } : {};
          const blocks = Object.keys(blockStyles).length > 0 ? { blocks: blockStyles } : {};
          const styles = {
            ...variation.styles,
            ...css,
            ...blocks
          };
          return {
            ...variation,
            settings: variation.settings ?? {},
            styles
          };
        })
      ];
    }, [fullStyleVariations, userStyles?.blocks, userStyles?.css]);
    if (!fullStyleVariations || fullStyleVariations.length < 1) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime455.jsx)(
      import_components132.__experimentalGrid,
      {
        columns: 2,
        className: "global-styles-ui-style-variations-container",
        gap,
        children: themeVariations.map(
          (variation, index3) => /* @__PURE__ */ (0, import_jsx_runtime455.jsx)(Variation, { variation, children: (isFocused) => /* @__PURE__ */ (0, import_jsx_runtime455.jsx)(
            preview_styles_default,
            {
              label: variation?.title,
              withHoverView: true,
              isFocused,
              variation
            }
          ) }, index3)
        )
      }
    );
  }
  var style_variations_container_default = StyleVariationsContainer;

  // packages/global-styles-ui/build-module/style-variations-content.mjs
  var import_jsx_runtime456 = __toESM(require_jsx_runtime(), 1);
  function StyleVariationsContent() {
    const gap = 3;
    return /* @__PURE__ */ (0, import_jsx_runtime456.jsxs)(import_components133.__experimentalVStack, { spacing: 10, className: "global-styles-ui-variation-container", children: [
      /* @__PURE__ */ (0, import_jsx_runtime456.jsx)(style_variations_container_default, { gap }),
      /* @__PURE__ */ (0, import_jsx_runtime456.jsx)(ColorVariations, { title: (0, import_i18n199.__)("Color Variations"), gap }),
      /* @__PURE__ */ (0, import_jsx_runtime456.jsx)(TypographyVariations, { title: (0, import_i18n199.__)("Typography"), gap })
    ] });
  }

  // packages/global-styles-ui/build-module/screen-style-variations.mjs
  var import_jsx_runtime457 = __toESM(require_jsx_runtime(), 1);
  function ScreenStyleVariations() {
    return /* @__PURE__ */ (0, import_jsx_runtime457.jsxs)(import_jsx_runtime457.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime457.jsx)(
        ScreenHeader,
        {
          title: (0, import_i18n200.__)("Browse styles"),
          description: (0, import_i18n200.__)(
            "Choose a variation to change the look of the site."
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime457.jsx)(
        import_components134.Card,
        {
          size: "small",
          isBorderless: true,
          className: "global-styles-ui-screen-style-variations",
          children: /* @__PURE__ */ (0, import_jsx_runtime457.jsx)(import_components134.CardBody, { children: /* @__PURE__ */ (0, import_jsx_runtime457.jsx)(StyleVariationsContent, {}) })
        }
      )
    ] });
  }
  var screen_style_variations_default = ScreenStyleVariations;

  // packages/global-styles-ui/build-module/screen-css.mjs
  var import_i18n201 = __toESM(require_i18n(), 1);
  var import_components135 = __toESM(require_components(), 1);
  var import_block_editor16 = __toESM(require_block_editor(), 1);
  var import_jsx_runtime458 = __toESM(require_jsx_runtime(), 1);
  var { AdvancedPanel: StylesAdvancedPanel2 } = unlock6(import_block_editor16.privateApis);
  function ScreenCSS() {
    const [style] = useStyle("", void 0, "user", false);
    const [inheritedStyle, setStyle2] = useStyle(
      "",
      void 0,
      "merged",
      false
    );
    return /* @__PURE__ */ (0, import_jsx_runtime458.jsxs)(import_jsx_runtime458.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime458.jsx)(
        ScreenHeader,
        {
          title: (0, import_i18n201.__)("Additional CSS"),
          description: /* @__PURE__ */ (0, import_jsx_runtime458.jsxs)(import_jsx_runtime458.Fragment, { children: [
            (0, import_i18n201.__)(
              "You can add custom CSS to further customize the appearance and layout of your site."
            ),
            /* @__PURE__ */ (0, import_jsx_runtime458.jsx)("br", {}),
            /* @__PURE__ */ (0, import_jsx_runtime458.jsx)(
              import_components135.ExternalLink,
              {
                href: (0, import_i18n201.__)(
                  "https://developer.wordpress.org/advanced-administration/wordpress/css/"
                ),
                className: "global-styles-ui-screen-css-help-link",
                children: (0, import_i18n201.__)("Learn more about CSS")
              }
            )
          ] })
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime458.jsx)("div", { className: "global-styles-ui-screen-css", children: /* @__PURE__ */ (0, import_jsx_runtime458.jsx)(
        StylesAdvancedPanel2,
        {
          value: style,
          onChange: setStyle2,
          inheritedValue: inheritedStyle
        }
      ) })
    ] });
  }
  var screen_css_default = ScreenCSS;

  // packages/global-styles-ui/build-module/screen-revisions/index.mjs
  var import_i18n203 = __toESM(require_i18n(), 1);
  var import_components136 = __toESM(require_components(), 1);
  var import_element280 = __toESM(require_element(), 1);

  // packages/global-styles-ui/build-module/screen-revisions/use-global-styles-revisions.mjs
  var import_data58 = __toESM(require_data(), 1);
  var import_core_data47 = __toESM(require_core_data(), 1);
  var import_element278 = __toESM(require_element(), 1);
  var SITE_EDITOR_AUTHORS_QUERY = {
    per_page: -1,
    _fields: "id,name,avatar_urls",
    context: "view",
    capabilities: ["edit_theme_options"]
  };
  var DEFAULT_QUERY = { per_page: 100, page: 1 };
  var EMPTY_ARRAY13 = [];
  function useGlobalStylesRevisions({
    query
  } = {}) {
    const { user: userConfig } = (0, import_element278.useContext)(GlobalStylesContext);
    const _query = (0, import_element278.useMemo)(
      () => ({ ...DEFAULT_QUERY, ...query }),
      [query]
    );
    const {
      authors,
      currentUser,
      isDirty,
      revisions,
      isLoadingGlobalStylesRevisions,
      revisionsCount
    } = (0, import_data58.useSelect)(
      (select9) => {
        const {
          __experimentalGetDirtyEntityRecords,
          getCurrentUser,
          getUsers,
          getRevisions,
          __experimentalGetCurrentGlobalStylesId,
          getEntityRecord,
          isResolving
        } = select9(import_core_data47.store);
        const dirtyEntityRecords = __experimentalGetDirtyEntityRecords() || [];
        const _currentUser = getCurrentUser();
        const _isDirty = dirtyEntityRecords.length > 0;
        const globalStylesId = __experimentalGetCurrentGlobalStylesId();
        const globalStyles = globalStylesId ? getEntityRecord("root", "globalStyles", globalStylesId) : void 0;
        const _revisionsCount = globalStyles?._links?.["version-history"]?.[0]?.count ?? 0;
        const globalStylesRevisions = globalStylesId ? getRevisions(
          "root",
          "globalStyles",
          globalStylesId,
          _query
        ) || EMPTY_ARRAY13 : EMPTY_ARRAY13;
        const _authors = getUsers(SITE_EDITOR_AUTHORS_QUERY) || EMPTY_ARRAY13;
        const _isResolving = globalStylesId ? isResolving("getRevisions", [
          "root",
          "globalStyles",
          globalStylesId,
          _query
        ]) : false;
        return {
          authors: _authors,
          currentUser: _currentUser,
          isDirty: _isDirty,
          revisions: globalStylesRevisions,
          isLoadingGlobalStylesRevisions: _isResolving,
          revisionsCount: _revisionsCount
        };
      },
      [_query]
    );
    return (0, import_element278.useMemo)(() => {
      if (!authors.length || isLoadingGlobalStylesRevisions) {
        return {
          revisions: EMPTY_ARRAY13,
          hasUnsavedChanges: isDirty,
          isLoading: true,
          revisionsCount
        };
      }
      const _modifiedRevisions = revisions.map((revision) => {
        return {
          ...revision,
          author: authors.find(
            (author) => author.id === revision.author
          )
        };
      });
      const fetchedRevisionsCount = revisions.length;
      if (fetchedRevisionsCount) {
        if (_modifiedRevisions[0].id !== "unsaved" && _query.page === 1) {
          _modifiedRevisions[0].isLatest = true;
        }
        if (isDirty && userConfig && Object.keys(userConfig).length > 0 && currentUser && _query.page === 1) {
          const unsavedRevision = {
            id: "unsaved",
            styles: userConfig?.styles,
            settings: userConfig?.settings,
            _links: userConfig?._links,
            author: {
              name: currentUser?.name || "",
              // @ts-expect-error - avatar_urls is not typed in User
              avatar_urls: currentUser?.avatar_urls || {}
            },
            modified: /* @__PURE__ */ new Date()
          };
          _modifiedRevisions.unshift(unsavedRevision);
        }
        if (_query.per_page && _query.page === Math.ceil(revisionsCount / _query.per_page)) {
          _modifiedRevisions.push({
            id: "parent",
            styles: {},
            settings: {}
          });
        }
      }
      return {
        revisions: _modifiedRevisions,
        hasUnsavedChanges: isDirty,
        isLoading: false,
        revisionsCount
      };
    }, [
      isDirty,
      revisions,
      currentUser,
      authors,
      userConfig,
      isLoadingGlobalStylesRevisions,
      revisionsCount,
      _query.page,
      _query.per_page
    ]);
  }

  // packages/global-styles-ui/build-module/screen-revisions/revisions-list.mjs
  var import_i18n202 = __toESM(require_i18n(), 1);
  var import_date18 = __toESM(require_date(), 1);
  var import_core_data48 = __toESM(require_core_data(), 1);
  var import_data59 = __toESM(require_data(), 1);
  var import_element279 = __toESM(require_element(), 1);
  var import_jsx_runtime459 = __toESM(require_jsx_runtime(), 1);
  var DAY_IN_MILLISECONDS = 60 * 60 * 1e3 * 24;
  var DEFAULT_LAYOUTS = { pickerActivity: true };
  var getItemId = (item) => String(item.id);
  function normalizeModified(modified) {
    return modified instanceof Date ? modified.toISOString() : modified;
  }
  function getDisplayDate(modified) {
    const modifiedString = normalizeModified(modified);
    const modifiedDate = (0, import_date18.getDate)(modifiedString ?? null);
    const dateNowInMs = (0, import_date18.getDate)(null).getTime();
    return modifiedString && dateNowInMs - modifiedDate.getTime() > DAY_IN_MILLISECONDS ? (0, import_date18.dateI18n)((0, import_date18.getSettings)().formats.datetimeAbbreviated, modifiedDate) : (0, import_date18.humanTimeDiff)(modifiedString ?? modifiedDate, void 0);
  }
  function ChangesSummary({ revision, previousRevision }) {
    const changes = getGlobalStylesChanges(
      revision,
      previousRevision,
      {
        maxResults: 7
      }
    );
    if (!changes.length) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime459.jsx)(
      "ul",
      {
        "data-testid": "global-styles-revision-changes",
        className: "global-styles-ui-screen-revisions__changes",
        children: changes.map((change) => /* @__PURE__ */ (0, import_jsx_runtime459.jsx)("li", { children: change }, change))
      }
    );
  }
  function getRevisionLabel(id, authorDisplayName, formattedModifiedDate, areStylesEqual) {
    if ("parent" === id) {
      return (0, import_i18n202.__)("Reset the styles to the theme defaults");
    }
    if ("unsaved" === id) {
      return (0, import_i18n202.sprintf)(
        /* translators: %s: author display name */
        (0, import_i18n202.__)("Unsaved changes by %s"),
        authorDisplayName
      );
    }
    return areStylesEqual ? (0, import_i18n202.sprintf)(
      // translators: 1: author display name. 2: revision creation date.
      (0, import_i18n202.__)(
        "Changes saved by %1$s on %2$s. This revision matches current editor styles."
      ),
      authorDisplayName,
      formattedModifiedDate
    ) : (0, import_i18n202.sprintf)(
      // translators: 1: author display name. 2: revision creation date.
      (0, import_i18n202.__)("Changes saved by %1$s on %2$s"),
      authorDisplayName,
      formattedModifiedDate
    );
  }
  function RevisionsList({
    revisions,
    view,
    onChangeView,
    selection,
    onChangeSelection,
    isLoading,
    paginationInfo,
    canApplyRevision,
    actions: actions2
  }) {
    const { currentThemeName, currentUser } = (0, import_data59.useSelect)((select9) => {
      const { getCurrentTheme, getCurrentUser } = select9(import_core_data48.store);
      const currentTheme = getCurrentTheme();
      return {
        currentThemeName: currentTheme?.name?.rendered || currentTheme?.stylesheet,
        currentUser: getCurrentUser()
      };
    }, []);
    const fields2 = (0, import_element279.useMemo)(() => {
      const getAuthor = (revision) => (
        // Unsaved changes are created by the current user.
        "unsaved" === revision.id ? currentUser : revision.author
      );
      const getAuthorDisplayName = (revision) => getAuthor(revision)?.name || (0, import_i18n202.__)("User");
      const isSelected2 = (revision) => selection.includes(String(revision.id));
      return [
        {
          id: "date",
          label: (0, import_i18n202.__)("Date"),
          // The value is used as the option's accessible name, so it
          // carries the full revision description rather than the
          // shorter date the row renders.
          getValue: ({ item }) => {
            const formattedModifiedDate = "parent" === item.id || "unsaved" === item.id ? "" : (0, import_date18.dateI18n)(
              (0, import_date18.getSettings)().formats.datetimeAbbreviated,
              (0, import_date18.getDate)(
                normalizeModified(item.modified) ?? null
              )
            );
            return getRevisionLabel(
              item.id,
              getAuthorDisplayName(item),
              formattedModifiedDate,
              !canApplyRevision && isSelected2(item)
            );
          },
          render: ({ item }) => {
            if ("parent" === item.id) {
              return /* @__PURE__ */ (0, import_jsx_runtime459.jsx)("span", { className: "global-styles-ui-screen-revisions__date", children: (0, import_i18n202.__)("Default styles") });
            }
            if ("unsaved" === item.id) {
              return /* @__PURE__ */ (0, import_jsx_runtime459.jsx)("span", { className: "global-styles-ui-screen-revisions__date", children: (0, import_i18n202.__)("(Unsaved)") });
            }
            return /* @__PURE__ */ (0, import_jsx_runtime459.jsx)(
              "time",
              {
                className: "global-styles-ui-screen-revisions__date",
                dateTime: normalizeModified(item.modified),
                children: getDisplayDate(item.modified)
              }
            );
          },
          enableSorting: false,
          enableHiding: false
        },
        {
          id: "details",
          label: (0, import_i18n202.__)("Details"),
          render: ({ item }) => {
            const authorDisplayName = getAuthorDisplayName(item);
            const isReset = "parent" === item.id;
            const meta2 = isReset ? /* @__PURE__ */ (0, import_jsx_runtime459.jsx)("span", { className: "global-styles-ui-screen-revisions__meta", children: currentThemeName }) : /* @__PURE__ */ (0, import_jsx_runtime459.jsxs)("span", { className: "global-styles-ui-screen-revisions__meta", children: [
              /* @__PURE__ */ (0, import_jsx_runtime459.jsx)(
                "img",
                {
                  alt: authorDisplayName,
                  src: getAuthor(item)?.avatar_urls?.["48"]
                }
              ),
              authorDisplayName
            ] });
            if (!isSelected2(item)) {
              return /* @__PURE__ */ (0, import_jsx_runtime459.jsx)("span", { className: "global-styles-ui-screen-revisions__description", children: meta2 });
            }
            const index3 = revisions.findIndex(
              (revision) => String(revision.id) === String(item.id)
            );
            return /* @__PURE__ */ (0, import_jsx_runtime459.jsxs)("span", { className: "global-styles-ui-screen-revisions__description", children: [
              meta2,
              !isReset && /* @__PURE__ */ (0, import_jsx_runtime459.jsx)(
                ChangesSummary,
                {
                  revision: revisions[index3] ?? item,
                  previousRevision: index3 >= 0 ? revisions[index3 + 1] : void 0
                }
              ),
              !canApplyRevision && /* @__PURE__ */ (0, import_jsx_runtime459.jsx)(Badge, { intent: "informational", children: (0, import_i18n202.__)("Active") })
            ] });
          },
          enableSorting: false,
          enableHiding: false
        }
      ];
    }, [
      selection,
      canApplyRevision,
      currentUser,
      currentThemeName,
      revisions
    ]);
    return /* @__PURE__ */ (0, import_jsx_runtime459.jsx)("div", { className: "global-styles-ui-screen-revisions", children: /* @__PURE__ */ (0, import_jsx_runtime459.jsxs)(
      dataviews_picker_default,
      {
        view,
        onChangeView,
        fields: fields2,
        data: revisions,
        isLoading,
        paginationInfo,
        defaultLayouts: DEFAULT_LAYOUTS,
        getItemId,
        selection,
        onChangeSelection,
        itemListLabel: (0, import_i18n202.__)("Global styles revisions list"),
        actions: actions2,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime459.jsx)(dataviews_picker_default.Layout, {}),
          /* @__PURE__ */ (0, import_jsx_runtime459.jsxs)(dataviews_picker_default.Footer, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime459.jsx)(dataviews_picker_default.Pagination, { children: /* @__PURE__ */ (0, import_jsx_runtime459.jsx)(dataviews_picker_default.PageSelect, {}) }),
            /* @__PURE__ */ (0, import_jsx_runtime459.jsx)(dataviews_picker_default.Actions, { className: "global-styles-ui-screen-revisions__actions" })
          ] })
        ]
      }
    ) });
  }
  var revisions_list_default = RevisionsList;

  // packages/global-styles-ui/build-module/screen-revisions/index.mjs
  var import_jsx_runtime460 = __toESM(require_jsx_runtime(), 1);
  var PAGE_SIZE = 10;
  var EMPTY_ARRAY14 = [];
  var DEFAULT_VIEW = {
    type: "pickerActivity",
    titleField: "date",
    descriptionField: "details",
    layout: { density: "compact" },
    page: 1,
    perPage: PAGE_SIZE
  };
  function ScreenRevisions() {
    const { user: currentEditorGlobalStyles, onChange: setUserConfig } = (0, import_element280.useContext)(GlobalStylesContext);
    const { params, goTo } = (0, import_components136.useNavigator)();
    const { revisionId: revisionId2 } = params;
    const [view, setView] = (0, import_element280.useState)(DEFAULT_VIEW);
    const query = (0, import_element280.useMemo)(
      () => ({
        per_page: view.perPage ?? PAGE_SIZE,
        page: view.page ?? 1
      }),
      [view.perPage, view.page]
    );
    const { revisions, isLoading, hasUnsavedChanges, revisionsCount } = useGlobalStylesRevisions({ query });
    const paginationInfo = (0, import_element280.useMemo)(
      () => ({
        totalItems: revisionsCount,
        totalPages: Math.ceil(revisionsCount / query.per_page)
      }),
      [revisionsCount, query.per_page]
    );
    const [
      isLoadingRevisionWithUnsavedChanges,
      setIsLoadingRevisionWithUnsavedChanges
    ] = (0, import_element280.useState)(false);
    const currentlySelectedRevision = (0, import_element280.useMemo)(() => {
      if (revisionId2) {
        return revisions.find(
          (revision) => String(revision.id) === String(revisionId2)
        );
      }
      return query.page === 1 ? revisions[0] : void 0;
    }, [revisionId2, revisions, query.page]);
    const activeRevisionId = query.page === 1 ? revisions[0]?.id : void 0;
    const isRevisionApplicable = (0, import_element280.useCallback)(
      (revision) => "unsaved" !== revision.id && revision.id !== activeRevisionId && !areGlobalStylesEqual(revision, currentEditorGlobalStyles),
      [activeRevisionId, currentEditorGlobalStyles]
    );
    const isSelectedRevisionApplicable = !!currentlySelectedRevision && isRevisionApplicable(currentlySelectedRevision);
    const closeRevisions = (0, import_element280.useCallback)(() => {
      goTo("/", { isBack: true });
    }, [goTo]);
    const restoreRevision2 = (0, import_element280.useCallback)(
      (revision) => {
        setIsLoadingRevisionWithUnsavedChanges(false);
        if (!revision) {
          return;
        }
        setUserConfig(revision);
        closeRevisions();
      },
      [setUserConfig, closeRevisions]
    );
    const currentlySelectedRevisionId = currentlySelectedRevision?.id;
    const selection = (0, import_element280.useMemo)(
      () => currentlySelectedRevisionId !== void 0 ? [String(currentlySelectedRevisionId)] : EMPTY_ARRAY14,
      [currentlySelectedRevisionId]
    );
    const onChangeSelection = (0, import_element280.useCallback)(
      (newSelection) => {
        if (!newSelection.length) {
          return;
        }
        goTo(`/revisions/${newSelection[newSelection.length - 1]}`);
      },
      [goTo]
    );
    const onApplyRevision = (0, import_element280.useCallback)(() => {
      if (hasUnsavedChanges) {
        setIsLoadingRevisionWithUnsavedChanges(true);
        return;
      }
      restoreRevision2(currentlySelectedRevision);
    }, [hasUnsavedChanges, restoreRevision2, currentlySelectedRevision]);
    const actions2 = (0, import_element280.useMemo)(
      () => [
        {
          id: "apply-revision",
          label: (items) => items[0]?.id === "parent" ? (0, import_i18n203.__)("Reset") : (0, import_i18n203.__)("Apply"),
          isPrimary: true,
          isEligible: isRevisionApplicable,
          callback: onApplyRevision
        }
      ],
      [isRevisionApplicable, onApplyRevision]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime460.jsxs)(import_jsx_runtime460.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime460.jsx)(
        ScreenHeader,
        {
          title: revisionsCount ? (0, import_i18n203.sprintf)(
            // translators: %d: number of revisions.
            (0, import_i18n203.__)("Revisions (%d)"),
            revisionsCount
          ) : (0, import_i18n203.__)("Revisions"),
          description: (0, import_i18n203.__)(
            `Click on previously saved styles to preview them. To restore a selected version to the editor, hit "Apply." When you're ready, use the Save button to save your changes.`
          ),
          onBack: closeRevisions
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime460.jsx)(
        revisions_list_default,
        {
          revisions,
          view,
          onChangeView: setView,
          selection,
          onChangeSelection,
          isLoading,
          paginationInfo,
          canApplyRevision: isSelectedRevisionApplicable,
          actions: actions2
        }
      ),
      isLoadingRevisionWithUnsavedChanges && /* @__PURE__ */ (0, import_jsx_runtime460.jsx)(
        import_components136.__experimentalConfirmDialog,
        {
          isOpen: isLoadingRevisionWithUnsavedChanges,
          confirmButtonText: (0, import_i18n203.__)("Apply"),
          onConfirm: () => restoreRevision2(currentlySelectedRevision),
          onCancel: () => setIsLoadingRevisionWithUnsavedChanges(false),
          size: "medium",
          children: (0, import_i18n203.__)(
            "Are you sure you want to apply this revision? Any unsaved changes will be lost."
          )
        }
      )
    ] });
  }
  var screen_revisions_default = ScreenRevisions;

  // packages/global-styles-ui/build-module/font-sizes/font-sizes.mjs
  var import_i18n204 = __toESM(require_i18n(), 1);
  var import_components137 = __toESM(require_components(), 1);
  var import_jsx_runtime461 = __toESM(require_jsx_runtime(), 1);
  var hasSameSizeValues = (a2, b2) => a2.map((item) => item.size).join("") === b2.map((item) => item.size).join("");
  var resetMenu = (onConfirm) => ({
    label: (0, import_i18n204.__)("Reset font size presets"),
    optionsLabel: (0, import_i18n204.__)("Font size presets options"),
    confirmText: (0, import_i18n204.__)(
      "Are you sure you want to reset all font size presets to their default values?"
    ),
    confirmButtonText: (0, import_i18n204.__)("Reset"),
    onConfirm
  });
  function FontSizes2() {
    const [defaultEnabled] = useSetting(
      "typography.defaultFontSizes"
    );
    const theme2 = usePresets("typography.fontSizes", "theme");
    const def = usePresets("typography.fontSizes", "default");
    const custom = usePresets("typography.fontSizes", "custom");
    const addFontSize = () => {
      const index3 = getNewIndexFromPresets(custom.presets, "custom-");
      custom.setPresets([
        ...custom.presets,
        {
          /* translators: %d: font size index */
          name: (0, import_i18n204.sprintf)((0, import_i18n204.__)("New Font Size %d"), index3),
          size: "16px",
          slug: `custom-${index3}`
        }
      ]);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime461.jsxs)(Stack, { direction: "column", gap: "sm", children: [
      /* @__PURE__ */ (0, import_jsx_runtime461.jsx)(
        ScreenHeader,
        {
          title: (0, import_i18n204.__)("Font size presets"),
          description: (0, import_i18n204.__)(
            "Create and edit the presets used for font sizes across the site."
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime461.jsx)(import_components137.__experimentalView, { children: /* @__PURE__ */ (0, import_jsx_runtime461.jsx)(import_components137.__experimentalSpacer, { paddingX: 4, children: /* @__PURE__ */ (0, import_jsx_runtime461.jsxs)(Stack, { direction: "column", gap: "xl", children: [
        !!theme2.presets.length && /* @__PURE__ */ (0, import_jsx_runtime461.jsx)(
          PresetGroup,
          {
            label: (0, import_i18n204.__)("Theme"),
            items: theme2.presets,
            getEditPath: (slug) => `/typography/font-sizes/theme/${slug}`,
            menuAction: hasSameSizeValues(
              theme2.presets,
              theme2.basePresets
            ) ? void 0 : resetMenu(
              () => theme2.setPresets(
                theme2.basePresets
              )
            )
          }
        ),
        defaultEnabled && !!def.presets.length && /* @__PURE__ */ (0, import_jsx_runtime461.jsx)(
          PresetGroup,
          {
            label: (0, import_i18n204.__)("Default"),
            items: def.presets,
            getEditPath: (slug) => `/typography/font-sizes/default/${slug}`,
            menuAction: hasSameSizeValues(
              def.presets,
              def.basePresets
            ) ? void 0 : resetMenu(
              () => def.setPresets(
                def.basePresets
              )
            )
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime461.jsx)(
          PresetGroup,
          {
            label: (0, import_i18n204.__)("Custom"),
            items: custom.presets,
            getEditPath: (slug) => `/typography/font-sizes/custom/${slug}`,
            addLabel: (0, import_i18n204.__)("Add font size"),
            onAdd: addFontSize,
            menuAction: custom.presets.length > 0 ? {
              label: (0, import_i18n204.__)(
                "Remove font size presets"
              ),
              optionsLabel: (0, import_i18n204.__)(
                "Font size presets options"
              ),
              confirmText: (0, import_i18n204.__)(
                "Are you sure you want to remove all custom font size presets?"
              ),
              confirmButtonText: (0, import_i18n204.__)("Remove"),
              onConfirm: () => custom.setPresets([])
            } : void 0
          }
        )
      ] }) }) })
    ] });
  }

  // packages/global-styles-ui/build-module/font-sizes/font-size.mjs
  var import_i18n206 = __toESM(require_i18n(), 1);
  var import_components139 = __toESM(require_components(), 1);
  var import_element281 = __toESM(require_element(), 1);

  // packages/global-styles-ui/build-module/font-sizes/font-size-preview.mjs
  var import_block_editor17 = __toESM(require_block_editor(), 1);
  var import_i18n205 = __toESM(require_i18n(), 1);
  var import_jsx_runtime462 = __toESM(require_jsx_runtime(), 1);
  function FontSizePreview({ fontSize }) {
    const [font2] = useStyle("typography");
    const input = typeof fontSize?.fluid === "object" && fontSize?.fluid?.min && fontSize?.fluid?.max ? {
      minimumFontSize: fontSize.fluid.min,
      maximumFontSize: fontSize.fluid.max
    } : {
      fontSize: fontSize.size
    };
    const computedFontSize = (0, import_block_editor17.getComputedFluidTypographyValue)(input);
    return /* @__PURE__ */ (0, import_jsx_runtime462.jsx)(
      "div",
      {
        className: "global-styles-ui-typography-preview",
        style: {
          fontSize: computedFontSize,
          fontFamily: font2?.fontFamily ?? "serif"
        },
        children: (0, import_i18n205.__)("Aa")
      }
    );
  }
  var font_size_preview_default = FontSizePreview;

  // packages/global-styles-ui/build-module/size-control/index.mjs
  var import_components138 = __toESM(require_components(), 1);
  var import_jsx_runtime463 = __toESM(require_jsx_runtime(), 1);
  var DEFAULT_UNITS = ["px", "em", "rem", "vw", "vh"];
  function SizeControl(props) {
    const { baseControlProps } = (0, import_components138.useBaseControlProps)(props);
    const { value, onChange, fallbackValue, disabled: disabled2, label } = props;
    const units = (0, import_components138.__experimentalUseCustomUnits)({
      availableUnits: DEFAULT_UNITS
    });
    const [valueQuantity, valueUnit = "px"] = (0, import_components138.__experimentalParseQuantityAndUnitFromRawValue)(value, units);
    const isValueUnitRelative = !!valueUnit && ["em", "rem", "vw", "vh"].includes(valueUnit);
    const handleUnitControlChange = (newValue) => {
      onChange?.(newValue);
    };
    const handleRangeControlChange = (newValue) => {
      if (newValue !== void 0) {
        onChange?.(newValue + valueUnit);
      } else {
        onChange?.(void 0);
      }
    };
    return /* @__PURE__ */ (0, import_jsx_runtime463.jsx)(import_components138.BaseControl, { ...baseControlProps, children: /* @__PURE__ */ (0, import_jsx_runtime463.jsxs)(import_components138.Flex, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime463.jsx)(import_components138.FlexItem, { isBlock: true, children: /* @__PURE__ */ (0, import_jsx_runtime463.jsx)(
        import_components138.__experimentalUnitControl,
        {
          label,
          hideLabelFromVision: true,
          value,
          onChange: handleUnitControlChange,
          units,
          min: 0,
          disabled: disabled2
        }
      ) }),
      /* @__PURE__ */ (0, import_jsx_runtime463.jsx)(import_components138.FlexItem, { isBlock: true, children: /* @__PURE__ */ (0, import_jsx_runtime463.jsx)(import_components138.__experimentalSpacer, { marginX: 2, marginBottom: 0, children: /* @__PURE__ */ (0, import_jsx_runtime463.jsx)(
        import_components138.RangeControl,
        {
          label,
          hideLabelFromVision: true,
          value: valueQuantity,
          initialPosition: fallbackValue,
          withInputField: false,
          onChange: handleRangeControlChange,
          min: 0,
          max: isValueUnitRelative ? 10 : 100,
          step: isValueUnitRelative ? 0.1 : 1,
          disabled: disabled2
        }
      ) }) })
    ] }) });
  }

  // packages/global-styles-ui/build-module/font-sizes/font-size.mjs
  var import_jsx_runtime464 = __toESM(require_jsx_runtime(), 1);
  function FontSize() {
    const { params, goBack } = (0, import_components139.useNavigator)();
    const origin = params.origin;
    const slug = params.slug;
    const { presets, setPresets } = usePresets(
      "typography.fontSizes",
      origin
    );
    const [globalFluid] = useSetting("typography.fluid");
    const fontSize = presets.find((s2) => s2.slug === slug);
    const [isDeleteOpen, setIsDeleteOpen] = (0, import_element281.useState)(false);
    const [isRenameOpen, setIsRenameOpen] = (0, import_element281.useState)(false);
    (0, import_element281.useEffect)(() => {
      if (!!slug && !fontSize) {
        goBack();
      }
    }, [slug, fontSize, goBack]);
    if (!origin || !slug || !fontSize) {
      return null;
    }
    const isFluid = fontSize.fluid !== void 0 ? !!fontSize.fluid : !!globalFluid;
    const isCustomFluid = typeof fontSize.fluid === "object";
    const set3 = (key, value) => setPresets(
      presets.map(
        (p4) => p4.slug === slug ? { ...fontSize, [key]: value } : p4
      )
    );
    const handleCustomFluidValues = (value) => {
      if (value) {
        set3("fluid", { min: fontSize.size, max: fontSize.size });
      } else {
        set3("fluid", true);
      }
    };
    const handleMinChange = (value) => {
      const fluid = typeof fontSize.fluid === "object" ? fontSize.fluid : {};
      set3("fluid", { ...fluid, min: value });
    };
    const handleMaxChange = (value) => {
      const fluid = typeof fontSize.fluid === "object" ? fontSize.fluid : {};
      set3("fluid", { ...fluid, max: value });
    };
    const menuItems2 = origin === "custom" ? [
      {
        label: (0, import_i18n206.__)("Rename"),
        onClick: () => setIsRenameOpen(true)
      },
      {
        label: (0, import_i18n206.__)("Delete"),
        onClick: () => setIsDeleteOpen(true)
      }
    ] : [];
    return /* @__PURE__ */ (0, import_jsx_runtime464.jsxs)(import_jsx_runtime464.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime464.jsxs)(Stack, { direction: "column", gap: "md", children: [
        /* @__PURE__ */ (0, import_jsx_runtime464.jsx)(
          PresetEditHeader,
          {
            title: fontSize.name,
            description: (0, import_i18n206.sprintf)(
              /* translators: %s: font size preset name. */
              (0, import_i18n206.__)("Manage the font size %s."),
              fontSize.name
            ),
            menuLabel: (0, import_i18n206.__)("Font size options"),
            menuItems: menuItems2
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime464.jsx)(import_components139.__experimentalView, { children: /* @__PURE__ */ (0, import_jsx_runtime464.jsx)(
          import_components139.__experimentalSpacer,
          {
            paddingX: 4,
            marginBottom: 0,
            paddingBottom: 6,
            children: /* @__PURE__ */ (0, import_jsx_runtime464.jsxs)(Stack, { direction: "column", gap: "md", children: [
              /* @__PURE__ */ (0, import_jsx_runtime464.jsx)(import_components139.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime464.jsx)(font_size_preview_default, { fontSize }) }),
              /* @__PURE__ */ (0, import_jsx_runtime464.jsx)(
                SizeControl,
                {
                  label: (0, import_i18n206.__)("Size"),
                  value: !isCustomFluid && fontSize.size ? String(fontSize.size) : "",
                  onChange: (value) => set3("size", value),
                  disabled: isCustomFluid
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime464.jsx)(
                import_components139.ToggleControl,
                {
                  label: (0, import_i18n206.__)("Fluid typography"),
                  help: (0, import_i18n206.__)(
                    "Scale the font size dynamically to fit the screen or viewport."
                  ),
                  checked: isFluid,
                  onChange: (value) => set3("fluid", value)
                }
              ),
              isFluid && /* @__PURE__ */ (0, import_jsx_runtime464.jsx)(
                import_components139.ToggleControl,
                {
                  label: (0, import_i18n206.__)("Custom fluid values"),
                  help: (0, import_i18n206.__)(
                    "Set custom min and max values for the fluid font size."
                  ),
                  checked: isCustomFluid,
                  onChange: handleCustomFluidValues
                }
              ),
              isCustomFluid && /* @__PURE__ */ (0, import_jsx_runtime464.jsxs)(import_jsx_runtime464.Fragment, { children: [
                /* @__PURE__ */ (0, import_jsx_runtime464.jsx)(
                  SizeControl,
                  {
                    label: (0, import_i18n206.__)("Minimum"),
                    value: typeof fontSize.fluid === "object" ? fontSize.fluid?.min : void 0,
                    onChange: handleMinChange
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime464.jsx)(
                  SizeControl,
                  {
                    label: (0, import_i18n206.__)("Maximum"),
                    value: typeof fontSize.fluid === "object" ? fontSize.fluid?.max : void 0,
                    onChange: handleMaxChange
                  }
                )
              ] })
            ] })
          }
        ) })
      ] }),
      isDeleteOpen && /* @__PURE__ */ (0, import_jsx_runtime464.jsx)(
        ConfirmDeleteDialog2,
        {
          message: (0, import_i18n206.sprintf)(
            /* translators: %s: Name of the font size preset. */
            (0, import_i18n206.__)(
              'Are you sure you want to delete "%s" font size preset?'
            ),
            fontSize.name
          ),
          isOpen: isDeleteOpen,
          toggleOpen: () => setIsDeleteOpen(false),
          onConfirm: () => {
            setPresets(
              presets.filter((p4) => p4.slug !== slug)
            );
            goBack();
          }
        }
      ),
      isRenameOpen && /* @__PURE__ */ (0, import_jsx_runtime464.jsx)(
        RenameDialog,
        {
          initialName: fontSize.name,
          placeholder: (0, import_i18n206.__)("Font size preset name"),
          toggleOpen: () => setIsRenameOpen(false),
          onRename: (name2) => setPresets(
            presets.map(
              (p4) => p4.slug === slug ? { ...p4, name: name2 } : p4
            )
          )
        }
      )
    ] });
  }
  var font_size_default = FontSize;

  // packages/global-styles-ui/build-module/global-styles-ui.mjs
  var import_jsx_runtime465 = __toESM(require_jsx_runtime(), 1);
  function BlockStylesNavigationScreens({
    parentMenu,
    blockStyles,
    blockName,
    selectedViewport,
    showResponsiveStateControls,
    showBlockStateControls
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(import_jsx_runtime465.Fragment, { children: blockStyles.map((style, index3) => /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(
      import_components140.Navigator.Screen,
      {
        path: parentMenu + "/variations/" + style.name,
        children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(
          screen_block_default,
          {
            name: blockName,
            variation: style.name,
            selectedViewport,
            showResponsiveStateControls,
            showBlockStateControls
          }
        )
      },
      index3
    )) });
  }
  function ContextScreens({
    name: name2,
    parentMenu = "",
    selectedViewport,
    showResponsiveStateControls,
    showBlockStateControls
  }) {
    const blockStyleVariations = (0, import_data60.useSelect)(
      (select9) => {
        if (!name2) {
          return [];
        }
        const { getBlockStyles } = select9(import_blocks11.store);
        return getBlockStyles(name2);
      },
      [name2]
    );
    if (!blockStyleVariations?.length) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(
      BlockStylesNavigationScreens,
      {
        parentMenu,
        blockStyles: blockStyleVariations,
        blockName: name2 || "",
        selectedViewport,
        showResponsiveStateControls,
        showBlockStateControls
      }
    );
  }
  function GlobalStylesUI({
    value,
    baseValue,
    onChange,
    path,
    onPathChange,
    fontLibraryEnabled = false,
    serverCSS,
    serverSettings,
    selectedViewport,
    showResponsiveStateControls = true,
    showBlockStateControls = true
  }) {
    const blocks = (0, import_blocks11.getBlockTypes)();
    const mergedValue = (0, import_element282.useMemo)(() => {
      return mergeGlobalStyles(baseValue, value);
    }, [baseValue, value]);
    const [globalStylesCSS, globalSettings] = generateGlobalStyles(
      mergedValue,
      [],
      {
        styleOptions: { variationStyles: true }
      }
    );
    const styles = (0, import_element282.useMemo)(
      () => [...serverCSS ?? [], ...globalStylesCSS ?? []],
      [serverCSS, globalStylesCSS]
    );
    const settings = (0, import_element282.useMemo)(() => {
      return {
        ...serverSettings,
        __experimentalFeatures: globalSettings,
        styles
      };
    }, [globalSettings, serverSettings, styles]);
    return /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(
      GlobalStylesProvider,
      {
        value,
        baseValue,
        onChange,
        fontLibraryEnabled,
        children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(import_block_editor18.BlockEditorProvider, { settings, children: /* @__PURE__ */ (0, import_jsx_runtime465.jsxs)(
          import_components140.Navigator,
          {
            className: "global-styles-ui-sidebar__navigator-provider",
            initialPath: path || "/",
            children: [
              (path || onPathChange) && /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(
                PathSynchronizer,
                {
                  path,
                  onPathChange
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_root_default, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/colors", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_colors_default, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/typography", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_typography_default, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/typography/font-sizes", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(FontSizes2, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/typography/font-sizes/:origin/:slug", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(font_size_default, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/layout", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_layout_default, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/colors/palette", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_color_palette_default, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/variations", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_style_variations_default, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/css", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_css_default, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/revisions/:revisionId?", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_revisions_default, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/shadows", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(ScreenShadows, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/shadows/edit/:category/:slug", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(ScreenShadowsEdit, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/typography/text-shadows", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(ScreenTextShadows, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/typography/text-shadows/edit/:category/:slug", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(ScreenTextShadowsEdit, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/background", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_background_default, {}) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/typography/text", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_typography_element_default, { element: "text" }) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/typography/link", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_typography_element_default, { element: "link" }) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/typography/heading", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_typography_element_default, { element: "heading" }) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/typography/caption", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_typography_element_default, { element: "caption" }) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/typography/cite", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_typography_element_default, { element: "cite" }) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/typography/button", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_typography_element_default, { element: "button" }) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/typography/textInput", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_typography_element_default, { element: "textInput" }) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/typography/select", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_typography_element_default, { element: "select" }) }),
              /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(GlobalStylesNavigationScreen, { path: "/blocks", children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(screen_block_list_default, {}) }),
              blocks.map((block) => /* @__PURE__ */ (0, import_jsx_runtime465.jsxs)(import_element282.Fragment, { children: [
                /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(
                  GlobalStylesNavigationScreen,
                  {
                    path: "/blocks/" + encodeURIComponent(block.name),
                    children: /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(
                      screen_block_default,
                      {
                        name: block.name,
                        selectedViewport,
                        showResponsiveStateControls,
                        showBlockStateControls
                      }
                    )
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(
                  ContextScreens,
                  {
                    name: block.name,
                    parentMenu: "/blocks/" + encodeURIComponent(block.name),
                    selectedViewport,
                    showResponsiveStateControls,
                    showBlockStateControls
                  }
                )
              ] }, block.name))
            ]
          }
        ) })
      }
    );
  }
  function GlobalStylesNavigationScreen({
    path,
    children
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime465.jsx)(
      import_components140.Navigator.Screen,
      {
        className: "global-styles-ui-sidebar__navigator-screen",
        path,
        children
      }
    );
  }
  function PathSynchronizer({
    path,
    onPathChange
  }) {
    const navigator2 = (0, import_components140.useNavigator)();
    const { path: childPath } = navigator2.location;
    const previousParentPath = (0, import_compose45.usePrevious)(path);
    const previousChildPath = (0, import_compose45.usePrevious)(childPath);
    (0, import_element282.useEffect)(() => {
      if (path && path !== childPath) {
        if (path !== previousParentPath) {
          navigator2.goTo(path);
        } else if (childPath !== previousChildPath && onPathChange) {
          onPathChange(childPath ?? "/");
        }
      }
    }, [
      onPathChange,
      path,
      previousChildPath,
      previousParentPath,
      childPath,
      navigator2
    ]);
    return null;
  }

  // packages/global-styles-ui/build-module/with-global-styles-provider.mjs
  var import_jsx_runtime466 = __toESM(require_jsx_runtime(), 1);
  function withGlobalStylesProvider(Component3) {
    return function WrappedComponent({
      value,
      baseValue,
      onChange,
      ...props
    }) {
      return /* @__PURE__ */ (0, import_jsx_runtime466.jsx)(
        GlobalStylesProvider,
        {
          value,
          baseValue,
          onChange,
          children: /* @__PURE__ */ (0, import_jsx_runtime466.jsx)(Component3, { ...props })
        }
      );
    };
  }

  // packages/global-styles-ui/build-module/style-variations.mjs
  var StyleVariations = withGlobalStylesProvider(style_variations_container_default);

  // packages/global-styles-ui/build-module/color-variations.mjs
  var ColorVariations2 = withGlobalStylesProvider(ColorVariations);

  // packages/global-styles-ui/build-module/typography-variations.mjs
  var TypographyVariations2 = withGlobalStylesProvider(TypographyVariations);

  // packages/global-styles-ui/build-module/font-library/font-library.mjs
  var import_jsx_runtime467 = __toESM(require_jsx_runtime(), 1);

  // packages/editor/build-module/components/global-styles/index.mjs
  var import_media_utils6 = __toESM(require_media_utils(), 1);

  // packages/editor/build-module/components/global-styles/block-link.mjs
  var import_data61 = __toESM(require_data(), 1);
  var import_element283 = __toESM(require_element(), 1);
  var import_block_editor19 = __toESM(require_block_editor(), 1);
  var import_compose46 = __toESM(require_compose(), 1);
  function GlobalStylesBlockLink({ path, onPathChange }) {
    const { selectedBlockName, selectedBlockClientId } = (0, import_data61.useSelect)(
      (select9) => {
        const { getSelectedBlockClientId: getSelectedBlockClientId2, getBlockName: getBlockName2 } = select9(import_block_editor19.store);
        const clientId = getSelectedBlockClientId2();
        return {
          selectedBlockName: getBlockName2(clientId),
          selectedBlockClientId: clientId
        };
      },
      []
    );
    const blockHasGlobalStyles = true;
    const previousBlockClientId = (0, import_compose46.usePrevious)(selectedBlockClientId);
    (0, import_element283.useEffect)(() => {
      if (selectedBlockClientId === previousBlockClientId) {
        return;
      }
      if (!selectedBlockClientId || !blockHasGlobalStyles) {
        return;
      }
      if (!path || path !== "/blocks" && !path.startsWith("/blocks/")) {
        return;
      }
      const newPath = "/blocks/" + encodeURIComponent(selectedBlockName);
      if (newPath !== path) {
        onPathChange?.(newPath);
      }
    }, [
      selectedBlockClientId,
      previousBlockClientId,
      selectedBlockName,
      blockHasGlobalStyles,
      path,
      onPathChange
    ]);
    return null;
  }

  // packages/editor/build-module/components/global-styles/hooks.mjs
  var import_element284 = __toESM(require_element(), 1);
  var import_core_data49 = __toESM(require_core_data(), 1);
  var import_data62 = __toESM(require_data(), 1);
  var import_block_editor20 = __toESM(require_block_editor(), 1);
  var { cleanEmptyObject } = unlock(import_block_editor20.privateApis);
  function useGlobalStylesUserConfig() {
    const { globalStylesId, isReady: isReady2, settings, styles, _links } = (0, import_data62.useSelect)(
      (select9) => {
        const {
          getEntityRecord,
          getEditedEntityRecord: getEditedEntityRecord2,
          hasFinishedResolution,
          canUser
        } = select9(import_core_data49.store);
        const _globalStylesId = select9(import_core_data49.store).__experimentalGetCurrentGlobalStylesId();
        let record;
        const userCanEditGlobalStyles = _globalStylesId ? canUser("update", {
          kind: "root",
          name: "globalStyles",
          id: _globalStylesId
        }) : null;
        if (_globalStylesId && /*
        * Test that the OPTIONS request for user capabilities is complete
        * before fetching the global styles entity record.
        * This is to avoid fetching the global styles entity unnecessarily.
        */
        typeof userCanEditGlobalStyles === "boolean") {
          if (userCanEditGlobalStyles) {
            record = getEditedEntityRecord2(
              "root",
              "globalStyles",
              _globalStylesId
            );
          } else {
            record = getEntityRecord(
              "root",
              "globalStyles",
              _globalStylesId,
              { context: "view" }
            );
          }
        }
        let hasResolved = false;
        if (hasFinishedResolution(
          "__experimentalGetCurrentGlobalStylesId"
        )) {
          if (_globalStylesId) {
            hasResolved = userCanEditGlobalStyles ? hasFinishedResolution("getEditedEntityRecord", [
              "root",
              "globalStyles",
              _globalStylesId
            ]) : hasFinishedResolution("getEntityRecord", [
              "root",
              "globalStyles",
              _globalStylesId,
              { context: "view" }
            ]);
          } else {
            hasResolved = true;
          }
        }
        return {
          globalStylesId: _globalStylesId,
          isReady: hasResolved,
          settings: record?.settings,
          styles: record?.styles,
          _links: record?._links
        };
      },
      []
    );
    const { getEditedEntityRecord } = (0, import_data62.useSelect)(import_core_data49.store);
    const { editEntityRecord } = (0, import_data62.useDispatch)(import_core_data49.store);
    const config2 = (0, import_element284.useMemo)(() => {
      return {
        settings: settings ?? {},
        styles: styles ?? {},
        _links: _links ?? {}
      };
    }, [settings, styles, _links]);
    const setConfig = (0, import_element284.useCallback)(
      /**
       * Set the global styles config.
       * @param {Function|Object} callbackOrObject If the callbackOrObject is a function, pass the current config to the callback so the consumer can merge values.
       *                                           Otherwise, overwrite the current config with the incoming object.
       * @param {Object}          options          Options for editEntityRecord Core selector.
       */
      (callbackOrObject, options = {}) => {
        const record = getEditedEntityRecord(
          "root",
          "globalStyles",
          globalStylesId
        );
        const currentConfig = {
          styles: record?.styles ?? {},
          settings: record?.settings ?? {},
          _links: record?._links ?? {}
        };
        const updatedConfig = typeof callbackOrObject === "function" ? callbackOrObject(currentConfig) : callbackOrObject;
        editEntityRecord(
          "root",
          "globalStyles",
          globalStylesId,
          {
            styles: cleanEmptyObject(updatedConfig.styles) || {},
            settings: cleanEmptyObject(updatedConfig.settings) || {},
            _links: cleanEmptyObject(updatedConfig._links) || {}
          },
          options
        );
      },
      [globalStylesId, editEntityRecord, getEditedEntityRecord]
    );
    return [isReady2, config2, setConfig];
  }
  function useGlobalStylesBaseConfig() {
    const baseConfig = (0, import_data62.useSelect)(
      (select9) => select9(import_core_data49.store).__experimentalGetCurrentThemeBaseGlobalStyles(),
      []
    );
    return [!!baseConfig, baseConfig];
  }
  function useGlobalStyles() {
    const [isUserConfigReady, userConfig, setUserConfig] = useGlobalStylesUserConfig();
    const [isBaseConfigReady, baseConfig] = useGlobalStylesBaseConfig();
    const merged = (0, import_element284.useMemo)(() => {
      if (!isUserConfigReady || !isBaseConfigReady) {
        return {};
      }
      return mergeGlobalStyles(baseConfig || {}, userConfig);
    }, [isUserConfigReady, isBaseConfigReady, baseConfig, userConfig]);
    return {
      merged,
      base: baseConfig || {},
      user: userConfig,
      setUser: setUserConfig,
      isReady: isUserConfigReady && isBaseConfigReady
    };
  }
  function useStyle2(path, blockName) {
    const { merged } = useGlobalStyles();
    return (0, import_element284.useMemo)(
      () => getStyle(merged, path, blockName),
      [merged, path, blockName]
    );
  }

  // packages/editor/build-module/components/global-styles/index.mjs
  var import_jsx_runtime468 = __toESM(require_jsx_runtime(), 1);
  function useServerData(settings) {
    const styles = settings?.styles;
    const __unstableResolvedAssets = settings?.__unstableResolvedAssets;
    const colors2 = settings?.colors;
    const gradients = settings?.gradients;
    const __experimentalDiscussionSettings = settings?.__experimentalDiscussionSettings;
    const fontLibraryEnabled = settings?.fontLibraryEnabled ?? true;
    const responsiveEditingEnabled = settings?.responsiveEditingEnabled ?? true;
    const blockStatesEditingEnabled = settings?.blockStatesEditingEnabled ?? true;
    const mediaUploadHandler = (0, import_data63.useSelect)((select9) => {
      const { canUser } = select9(import_core_data50.store);
      const canUserUploadMedia = canUser("create", {
        kind: "postType",
        name: "attachment"
      });
      return canUserUploadMedia ? import_media_utils6.uploadMedia : void 0;
    }, []);
    const serverCSS = (0, import_element285.useMemo)(() => {
      if (!styles) {
        return [];
      }
      return styles.filter((style) => !style.isGlobalStyles);
    }, [styles]);
    const serverSettings = (0, import_element285.useMemo)(() => {
      return {
        __unstableResolvedAssets,
        settings: {
          color: {
            palette: {
              theme: colors2 ?? []
            },
            gradients: {
              theme: gradients ?? []
            },
            duotone: {
              theme: []
            }
          }
        },
        __experimentalDiscussionSettings,
        mediaUpload: mediaUploadHandler
      };
    }, [
      __unstableResolvedAssets,
      colors2,
      gradients,
      __experimentalDiscussionSettings,
      mediaUploadHandler
    ]);
    return {
      serverCSS,
      serverSettings,
      fontLibraryEnabled,
      responsiveEditingEnabled,
      blockStatesEditingEnabled
    };
  }
  function GlobalStylesUIWrapper({
    path,
    onPathChange,
    settings,
    selectedViewport,
    showResponsiveStateControls = true
  }) {
    const {
      user: userConfig,
      base: baseConfig,
      setUser: setUserConfig,
      isReady: isReady2
    } = useGlobalStyles();
    const {
      serverCSS,
      serverSettings,
      fontLibraryEnabled,
      responsiveEditingEnabled,
      blockStatesEditingEnabled
    } = useServerData(settings);
    if (!isReady2) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime468.jsxs)(import_jsx_runtime468.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime468.jsx)(
        GlobalStylesUI,
        {
          value: userConfig,
          baseValue: baseConfig || {},
          onChange: setUserConfig,
          path,
          onPathChange,
          fontLibraryEnabled,
          serverCSS,
          serverSettings,
          selectedViewport,
          showResponsiveStateControls: showResponsiveStateControls && responsiveEditingEnabled,
          showBlockStateControls: blockStatesEditingEnabled
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime468.jsx)(
        GlobalStylesBlockLink,
        {
          path,
          onPathChange
        }
      )
    ] });
  }

  // packages/editor/build-module/components/provider/use-block-editor-settings.mjs
  var { store: mediaEditorStore } = unlock(privateApis2);
  var EMPTY_OBJECT3 = {};
  function __experimentalReusableBlocksSelect(select9) {
    const { RECEIVE_INTERMEDIATE_RESULTS: RECEIVE_INTERMEDIATE_RESULTS2 } = unlock(import_core_data51.privateApis);
    const { getEntityRecords } = select9(import_core_data51.store);
    return getEntityRecords("postType", "wp_block", {
      per_page: -1,
      [RECEIVE_INTERMEDIATE_RESULTS2]: true
    });
  }
  function __experimentalUserPatternCategoriesSelect(select9) {
    return select9(import_core_data51.store).getUserPatternCategories();
  }
  var BLOCK_EDITOR_SETTINGS = [
    "__experimentalBlockBindingsSupportedAttributes",
    "__experimentalBlockDirectory",
    "__experimentalDiscussionSettings",
    "__experimentalFeatures",
    "__experimentalGlobalStylesBaseStyles",
    "allImageSizes",
    "alignWide",
    "blockStatesEditingEnabled",
    "blockInspectorTabs",
    "maxUploadFileSize",
    "allowedMimeTypes",
    "bodyPlaceholder",
    "canEditCSS",
    "canLockBlocks",
    "canUpdateBlockBindings",
    "capabilities",
    "clearBlockSelection",
    "codeEditingEnabled",
    "colors",
    "disableContentOnlyForTemplateParts",
    "disableContentOnlyForUnsyncedPatterns",
    "disableCustomColors",
    "disableCustomFontSizes",
    "disableCustomSpacingSizes",
    "disableCustomGradients",
    "disableLayoutStyles",
    "enableCustomLineHeight",
    "enableCustomSpacing",
    "enableCustomUnits",
    "enableOpenverseMediaCategory",
    "fontSizes",
    "gradients",
    "generateAnchors",
    "onNavigateToEntityRecord",
    "imageDefaultSize",
    "imageDimensions",
    "imageEditing",
    "imageSizes",
    "isPreviewMode",
    "isRTL",
    "locale",
    "maxWidth",
    "postContentAttributes",
    "postsPerPage",
    "readOnly",
    "styles",
    "titlePlaceholder",
    "supportsLayout",
    "widgetTypesToHideFromLegacyWidgetBlock",
    "__unstableHasCustomAppender",
    "__unstableResolvedAssets",
    "__unstableIsBlockBasedTheme"
  ];
  var {
    globalStylesDataKey,
    globalStylesLinksDataKey,
    selectBlockPatternsKey,
    reusableBlocksSelectKey,
    userPatternCategoriesSelectKey,
    sectionRootClientIdKey,
    mediaEditKey,
    getMediaSelectKey,
    isIsolatedEditorKey,
    deviceTypeKey,
    isNavigationOverlayContextKey,
    isNavigationPostEditorKey,
    mediaUploadOnSuccessKey,
    mediaSideloadFromUrlKey,
    openMediaEditorModalKey
  } = unlock(import_block_editor21.privateApis);
  function useBlockEditorSettings(settings, postType2, postId2, renderingMode2) {
    const isLargeViewport = (0, import_compose47.useViewportMatch)("medium");
    const {
      allImageSizes,
      bigImageSizeThreshold,
      imageStripMeta,
      imageMaxBitDepth,
      allowRightClickOverrides,
      blockTypes,
      focusMode,
      hasFixedToolbar,
      isDistractionFree,
      keepCaretInsideBlock,
      hasUploadPermissions,
      hiddenBlockTypes,
      canUseUnfilteredHTML,
      userCanCreatePages,
      pageOnFront,
      pageForPosts,
      restBlockPatternCategories,
      sectionRootClientId,
      deviceType,
      isNavigationOverlayContext,
      isRevisionsMode: isRevisionsMode2,
      viewablePostTypeLabel,
      currentPostId
    } = (0, import_data64.useSelect)(
      (select9) => {
        const {
          canUser,
          getRawEntityRecord,
          getEntityRecord,
          getBlockPatternCategories,
          getPostType
        } = select9(import_core_data51.store);
        const { get } = select9(import_preferences3.store);
        const { getBlockTypes: getBlockTypes6 } = select9(import_blocks12.store);
        const { getCurrentPostId: getCurrentPostId2, getCurrentPostType: getCurrentPostType2 } = select9(store);
        const { getDeviceType: getDeviceType2, isRevisionsMode: _isRevisionsMode } = unlock(
          select9(store)
        );
        const { getBlocksByName, getBlockAttributes: getBlockAttributes2 } = select9(import_block_editor21.store);
        const siteSettings = canUser("read", {
          kind: "root",
          name: "site"
        }) ? getEntityRecord("root", "site") : void 0;
        const baseData = getEntityRecord("root", "__unstableBase");
        const currentPostType = getCurrentPostType2();
        const postTypeObject = currentPostType ? getPostType(currentPostType) : void 0;
        function getSectionRootBlock() {
          if (renderingMode2 === "template-locked") {
            return getBlocksByName("core/post-content")?.[0] ?? "";
          }
          return getBlocksByName("core/group").find(
            (clientId) => getBlockAttributes2(clientId)?.tagName === "main"
          ) ?? "";
        }
        return {
          allImageSizes: baseData?.image_sizes,
          bigImageSizeThreshold: baseData?.image_size_threshold,
          imageStripMeta: baseData?.image_strip_meta,
          imageMaxBitDepth: baseData?.image_max_bit_depth,
          allowRightClickOverrides: get(
            "core",
            "allowRightClickOverrides"
          ),
          blockTypes: getBlockTypes6(),
          canUseUnfilteredHTML: getRawEntityRecord(
            "postType",
            postType2,
            postId2
          )?._links?.hasOwnProperty("wp:action-unfiltered-html"),
          focusMode: get("core", "focusMode"),
          hasFixedToolbar: get("core", "fixedToolbar") || !isLargeViewport,
          hiddenBlockTypes: get("core", "hiddenBlockTypes"),
          isDistractionFree: get("core", "distractionFree"),
          keepCaretInsideBlock: get("core", "keepCaretInsideBlock"),
          hasUploadPermissions: canUser("create", {
            kind: "postType",
            name: "attachment"
          }) ?? true,
          userCanCreatePages: canUser("create", {
            kind: "postType",
            name: "page"
          }),
          pageOnFront: siteSettings?.page_on_front,
          pageForPosts: siteSettings?.page_for_posts,
          // The post type's singular name, but only for real, front-end
          // rendered content (`viewable`). Empty for synced patterns,
          // navigation and templates, which gates the attached-images
          // category off for them and words its copy for everything else.
          viewablePostTypeLabel: postTypeObject?.viewable ? postTypeObject?.labels?.singular_name : void 0,
          currentPostId: getCurrentPostId2(),
          restBlockPatternCategories: getBlockPatternCategories(),
          sectionRootClientId: getSectionRootBlock(),
          deviceType: getDeviceType2(),
          isNavigationOverlayContext: postType2 === "wp_template_part" && postId2 ? getEntityRecord(
            "postType",
            "wp_template_part",
            postId2
          )?.area === "navigation-overlay" : false,
          isRevisionsMode: _isRevisionsMode()
        };
      },
      [postType2, postId2, isLargeViewport, renderingMode2]
    );
    const { merged: mergedGlobalStyles } = useGlobalStyles();
    const globalStylesData = mergedGlobalStyles.styles ?? EMPTY_OBJECT3;
    const globalStylesLinksData = mergedGlobalStyles._links ?? EMPTY_OBJECT3;
    const settingsBlockPatterns = settings.__experimentalAdditionalBlockPatterns ?? // WP 6.0
    settings.__experimentalBlockPatterns;
    const settingsBlockPatternCategories = settings.__experimentalAdditionalBlockPatternCategories ?? // WP 6.0
    settings.__experimentalBlockPatternCategories;
    const blockPatterns = (0, import_element286.useMemo)(
      () => [...settingsBlockPatterns || []].filter(
        ({ postTypes }) => {
          return !postTypes || Array.isArray(postTypes) && postTypes.includes(postType2);
        }
      ),
      [settingsBlockPatterns, postType2]
    );
    const blockPatternCategories = (0, import_element286.useMemo)(
      () => [
        ...settingsBlockPatternCategories || [],
        ...restBlockPatternCategories || []
      ].filter(
        (x2, index3, arr) => index3 === arr.findIndex((y3) => x2.name === y3.name)
      ),
      [settingsBlockPatternCategories, restBlockPatternCategories]
    );
    const { undo: undo2, setIsInserterOpened: setIsInserterOpened2 } = (0, import_data64.useDispatch)(store);
    const { editMediaEntity } = unlock((0, import_data64.useDispatch)(import_core_data51.store));
    const { saveEntityRecord } = (0, import_data64.useDispatch)(import_core_data51.store);
    const { openMediaEditorModal: openMediaEditorModal2 } = (0, import_data64.useDispatch)(mediaEditorStore);
    const createPageEntity = (0, import_element286.useCallback)(
      (options) => {
        if (!userCanCreatePages) {
          return Promise.reject({
            message: (0, import_i18n207.__)(
              "You do not have permission to create Pages."
            )
          });
        }
        return saveEntityRecord("postType", "page", options);
      },
      [saveEntityRecord, userCanCreatePages]
    );
    const allowedBlockTypes = (0, import_element286.useMemo)(() => {
      if (hiddenBlockTypes && hiddenBlockTypes.length > 0) {
        const defaultAllowedBlockTypes = true === settings.allowedBlockTypes ? blockTypes.map(({ name: name2 }) => name2) : settings.allowedBlockTypes || [];
        return defaultAllowedBlockTypes.filter(
          (type) => !hiddenBlockTypes.includes(type)
        );
      }
      return settings.allowedBlockTypes;
    }, [settings.allowedBlockTypes, hiddenBlockTypes, blockTypes]);
    const inserterMediaCategories2 = (0, import_element286.useMemo)(
      () => getInserterMediaCategories(currentPostId, viewablePostTypeLabel),
      [currentPostId, viewablePostTypeLabel]
    );
    return (0, import_element286.useMemo)(() => {
      const blockEditorSettings = {
        ...Object.fromEntries(
          Object.entries(settings).filter(
            ([key]) => BLOCK_EDITOR_SETTINGS.includes(key)
          )
        ),
        [globalStylesDataKey]: globalStylesData,
        [globalStylesLinksDataKey]: globalStylesLinksData,
        allImageSizes,
        bigImageSizeThreshold,
        imageStripMeta,
        imageMaxBitDepth,
        allowedBlockTypes,
        allowRightClickOverrides,
        focusMode,
        hasFixedToolbar,
        isDistractionFree,
        keepCaretInsideBlock,
        [getMediaSelectKey]: (select9, attachmentId) => {
          return select9(import_core_data51.store).getEntityRecord(
            "postType",
            "attachment",
            attachmentId
          );
        },
        [mediaEditKey]: hasUploadPermissions ? editMediaEntity : void 0,
        [openMediaEditorModalKey]: ({ id, onUpdate, onClose }) => openMediaEditorModal2({ id, onUpdate, onClose }),
        mediaUpload: hasUploadPermissions ? mediaUpload : void 0,
        [mediaUploadOnSuccessKey]: hasUploadPermissions ? mediaUploadOnSuccess : void 0,
        mediaSideload: hasUploadPermissions ? media_sideload_default : void 0,
        [mediaSideloadFromUrlKey]: hasUploadPermissions ? mediaSideloadFromUrl : void 0,
        mediaFinalize: hasUploadPermissions ? mediaFinalize : void 0,
        mediaDelete: hasUploadPermissions ? mediaDelete : void 0,
        __experimentalBlockPatterns: blockPatterns,
        [selectBlockPatternsKey]: (select9) => {
          const { hasFinishedResolution, getBlockPatternsForPostType } = unlock(select9(import_core_data51.store));
          const patterns2 = getBlockPatternsForPostType(postType2);
          return hasFinishedResolution("getBlockPatterns") ? patterns2 : void 0;
        },
        [reusableBlocksSelectKey]: __experimentalReusableBlocksSelect,
        [userPatternCategoriesSelectKey]: __experimentalUserPatternCategoriesSelect,
        __experimentalBlockPatternCategories: blockPatternCategories,
        __experimentalFetchLinkSuggestions: (search, searchOptions) => (0, import_core_data51.__experimentalFetchLinkSuggestions)(search, searchOptions, settings),
        inserterMediaCategories: inserterMediaCategories2,
        __experimentalFetchRichUrlData: import_core_data51.__experimentalFetchUrlData,
        // Todo: This only checks the top level post, not the post within a template or any other entity that can be edited.
        // This might be better as a generic "canUser" selector.
        __experimentalCanUserUseUnfilteredHTML: canUseUnfilteredHTML,
        //Todo: this is only needed for native and should probably be removed.
        __experimentalUndo: undo2,
        // Check whether we want all site editor frames to have outlines
        // including the navigation / pattern / parts editors.
        outlineMode: !isDistractionFree && postType2 === "wp_template",
        // Check these two properties: they were not present in the site editor.
        __experimentalCreatePageEntity: createPageEntity,
        __experimentalUserCanCreatePages: userCanCreatePages,
        pageOnFront,
        pageForPosts,
        __experimentalPreferPatternsOnRoot: postType2 === "wp_template",
        templateLock: postType2 === "wp_navigation" ? "insert" : settings.templateLock,
        template: postType2 === "wp_navigation" ? [["core/navigation", {}, []]] : settings.template,
        __experimentalSetIsInserterOpened: setIsInserterOpened2,
        [sectionRootClientIdKey]: sectionRootClientId,
        // When editing template parts, patterns, or navigation directly,
        // we're in an isolated editing context (focused on that entity alone).
        [isIsolatedEditorKey]: [
          "wp_template_part",
          "wp_block",
          "wp_navigation"
        ].includes(postType2),
        [isNavigationPostEditorKey]: postType2 === "wp_navigation",
        // When in template-locked mode (e.g., "Show Template" in the post editor),
        // don't treat template parts as contentOnly sections.
        disableContentOnlyForTemplateParts: renderingMode2 === "template-locked" || settings.disableContentOnlyForTemplateParts,
        ...deviceType ? { [deviceTypeKey]: deviceType } : {},
        [isNavigationOverlayContextKey]: isNavigationOverlayContext
      };
      if (isRevisionsMode2) {
        blockEditorSettings.isPreviewMode = true;
      }
      return blockEditorSettings;
    }, [
      isRevisionsMode2,
      allowedBlockTypes,
      allowRightClickOverrides,
      focusMode,
      hasFixedToolbar,
      isDistractionFree,
      keepCaretInsideBlock,
      settings,
      hasUploadPermissions,
      blockPatterns,
      blockPatternCategories,
      inserterMediaCategories2,
      canUseUnfilteredHTML,
      undo2,
      createPageEntity,
      userCanCreatePages,
      pageOnFront,
      pageForPosts,
      postType2,
      setIsInserterOpened2,
      sectionRootClientId,
      globalStylesData,
      globalStylesLinksData,
      renderingMode2,
      editMediaEntity,
      openMediaEditorModal2,
      deviceType,
      allImageSizes,
      bigImageSizeThreshold,
      imageStripMeta,
      imageMaxBitDepth,
      isNavigationOverlayContext
    ]);
  }
  var use_block_editor_settings_default = useBlockEditorSettings;

  // packages/editor/build-module/components/provider/disable-non-page-content-blocks.mjs
  var import_data65 = __toESM(require_data(), 1);
  var import_block_editor22 = __toESM(require_block_editor(), 1);
  var import_element288 = __toESM(require_element(), 1);

  // packages/editor/build-module/components/provider/use-post-content-block-types.mjs
  var import_element287 = __toESM(require_element(), 1);
  var import_hooks39 = __toESM(require_hooks(), 1);
  var POST_CONTENT_BLOCK_TYPES = [
    "core/post-title",
    "core/post-featured-image",
    "core/post-content"
  ];
  function usePostContentBlockTypes() {
    return (0, import_element287.useMemo)(
      () => [
        ...(0, import_hooks39.applyFilters)(
          "editor.postContentBlockTypes",
          POST_CONTENT_BLOCK_TYPES
        )
      ],
      []
    );
  }

  // packages/editor/build-module/components/provider/disable-non-page-content-blocks.mjs
  function DisableNonPageContentBlocks() {
    const postContentBlockTypes = usePostContentBlockTypes();
    const { contentOnlyIds, templateParts } = (0, import_data65.useSelect)(
      (select9) => {
        const { getPostBlocksByName: getPostBlocksByName2 } = unlock(select9(store));
        const { getBlocksByName } = select9(import_block_editor22.store);
        return {
          contentOnlyIds: getPostBlocksByName2(postContentBlockTypes),
          templateParts: getBlocksByName("core/template-part")
        };
      },
      [postContentBlockTypes]
    );
    const templatePartChildren = (0, import_data65.useSelect)(
      (select9) => {
        const { getBlockOrder: getBlockOrder2 } = select9(import_block_editor22.store);
        return templateParts.flatMap(
          (clientId) => getBlockOrder2(clientId)
        );
      },
      [templateParts]
    );
    const registry = (0, import_data65.useRegistry)();
    (0, import_element288.useEffect)(() => {
      const {
        setBlockEditingMode,
        unsetBlockEditingMode,
        __unstableMarkNextChangeAsNotPersistent
      } = registry.dispatch(import_block_editor22.store);
      __unstableMarkNextChangeAsNotPersistent();
      setBlockEditingMode("", "disabled");
      return () => {
        __unstableMarkNextChangeAsNotPersistent();
        unsetBlockEditingMode("");
      };
    }, [registry]);
    (0, import_element288.useEffect)(() => {
      const {
        setBlockEditingMode,
        unsetBlockEditingMode,
        __unstableMarkNextChangeAsNotPersistent
      } = registry.dispatch(import_block_editor22.store);
      registry.batch(() => {
        for (const clientId of templateParts) {
          __unstableMarkNextChangeAsNotPersistent();
          setBlockEditingMode(clientId, "contentOnly");
        }
      });
      return () => {
        registry.batch(() => {
          for (const clientId of templateParts) {
            __unstableMarkNextChangeAsNotPersistent();
            unsetBlockEditingMode(clientId);
          }
        });
      };
    }, [templateParts, registry]);
    const appliedModesRef = (0, import_element288.useRef)(/* @__PURE__ */ new Map());
    (0, import_element288.useEffect)(() => {
      const {
        setBlockEditingMode,
        unsetBlockEditingMode,
        __unstableMarkNextChangeAsNotPersistent
      } = registry.dispatch(import_block_editor22.store);
      const nextModes = /* @__PURE__ */ new Map();
      for (const clientId of contentOnlyIds) {
        nextModes.set(clientId, "contentOnly");
      }
      for (const clientId of templatePartChildren) {
        if (!nextModes.has(clientId)) {
          nextModes.set(clientId, "disabled");
        }
      }
      const previousModes = appliedModesRef.current;
      appliedModesRef.current = nextModes;
      registry.batch(() => {
        for (const clientId of previousModes.keys()) {
          if (!nextModes.has(clientId)) {
            __unstableMarkNextChangeAsNotPersistent();
            unsetBlockEditingMode(clientId);
          }
        }
        for (const [clientId, mode] of nextModes) {
          if (previousModes.get(clientId) !== mode) {
            __unstableMarkNextChangeAsNotPersistent();
            setBlockEditingMode(clientId, mode);
          }
        }
      });
    }, [contentOnlyIds, templatePartChildren, registry]);
    (0, import_element288.useEffect)(() => {
      return () => {
        const {
          unsetBlockEditingMode,
          __unstableMarkNextChangeAsNotPersistent
        } = registry.dispatch(import_block_editor22.store);
        registry.batch(() => {
          for (const clientId of appliedModesRef.current.keys()) {
            __unstableMarkNextChangeAsNotPersistent();
            unsetBlockEditingMode(clientId);
          }
        });
        appliedModesRef.current = /* @__PURE__ */ new Map();
      };
    }, [registry]);
    return null;
  }

  // packages/editor/build-module/components/provider/navigation-block-editing-mode.mjs
  var import_element289 = __toESM(require_element(), 1);
  var import_data66 = __toESM(require_data(), 1);
  var import_block_editor23 = __toESM(require_block_editor(), 1);
  function NavigationBlockEditingMode() {
    const registry = (0, import_data66.useRegistry)();
    const blockClientId = (0, import_data66.useSelect)(
      (select9) => select9(import_block_editor23.store).getBlockOrder()?.[0],
      []
    );
    (0, import_element289.useEffect)(() => {
      if (!blockClientId) {
        return;
      }
      const {
        setBlockEditingMode,
        unsetBlockEditingMode,
        __unstableMarkNextChangeAsNotPersistent
      } = registry.dispatch(import_block_editor23.store);
      __unstableMarkNextChangeAsNotPersistent();
      setBlockEditingMode(blockClientId, "contentOnly");
      return () => {
        __unstableMarkNextChangeAsNotPersistent();
        unsetBlockEditingMode(blockClientId);
      };
    }, [registry, blockClientId]);
  }

  // packages/editor/build-module/components/provider/use-hide-blocks-from-inserter.mjs
  var import_element290 = __toESM(require_element(), 1);
  var import_hooks40 = __toESM(require_hooks(), 1);
  var POST_TYPES_ALLOWING_POST_CONTENT_TEMPLATE_PART = [
    "wp_block",
    "wp_template",
    "wp_template_part"
  ];
  function useHideBlocksFromInserter(postType2, mode) {
    (0, import_element290.useEffect)(() => {
      (0, import_hooks40.addFilter)(
        "blockEditor.__unstableCanInsertBlockType",
        "removeTemplatePartsFromInserter",
        (canInsert, blockType) => {
          if (!POST_TYPES_ALLOWING_POST_CONTENT_TEMPLATE_PART.includes(
            postType2
          ) && blockType.name === "core/template-part" && mode === "post-only") {
            return false;
          }
          return canInsert;
        }
      );
      (0, import_hooks40.addFilter)(
        "blockEditor.__unstableCanInsertBlockType",
        "removePostContentFromInserter",
        (canInsert, blockType, rootClientId, { getBlockParentsByBlockName }) => {
          if (!POST_TYPES_ALLOWING_POST_CONTENT_TEMPLATE_PART.includes(
            postType2
          ) && blockType.name === "core/post-content") {
            return getBlockParentsByBlockName(rootClientId, "core/query").length > 0;
          }
          return canInsert;
        }
      );
      return () => {
        (0, import_hooks40.removeFilter)(
          "blockEditor.__unstableCanInsertBlockType",
          "removeTemplatePartsFromInserter"
        );
        (0, import_hooks40.removeFilter)(
          "blockEditor.__unstableCanInsertBlockType",
          "removePostContentFromInserter"
        );
      };
    }, [postType2, mode]);
  }

  // packages/editor/build-module/components/provider/use-revision-blocks.mjs
  var import_data67 = __toESM(require_data(), 1);
  var import_element291 = __toESM(require_element(), 1);
  var import_blocks14 = __toESM(require_blocks(), 1);

  // node_modules/diff/libesm/diff/base.js
  var Diff = class {
    diff(oldStr, newStr, options = {}) {
      let callback;
      if (typeof options === "function") {
        callback = options;
        options = {};
      } else if ("callback" in options) {
        callback = options.callback;
      }
      const oldString = this.castInput(oldStr, options);
      const newString = this.castInput(newStr, options);
      const oldTokens = this.removeEmpty(this.tokenize(oldString, options));
      const newTokens = this.removeEmpty(this.tokenize(newString, options));
      return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);
    }
    diffWithOptionsObj(oldTokens, newTokens, options, callback) {
      var _a;
      const done = (value) => {
        value = this.postProcess(value, options);
        if (callback) {
          setTimeout(function() {
            callback(value);
          }, 0);
          return void 0;
        } else {
          return value;
        }
      };
      const newLen = newTokens.length, oldLen = oldTokens.length;
      let editLength = 1;
      let maxEditLength = newLen + oldLen;
      if (options.maxEditLength != null) {
        maxEditLength = Math.min(maxEditLength, options.maxEditLength);
      }
      const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;
      const abortAfterTimestamp = Date.now() + maxExecutionTime;
      const bestPath = [{ oldPos: -1, lastComponent: void 0 }];
      let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);
      if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {
        return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));
      }
      let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;
      const execEditLength = () => {
        for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {
          let basePath;
          const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];
          if (removePath) {
            bestPath[diagonalPath - 1] = void 0;
          }
          let canAdd = false;
          if (addPath) {
            const addPathNewPos = addPath.oldPos - diagonalPath;
            canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;
          }
          const canRemove = removePath && removePath.oldPos + 1 < oldLen;
          if (!canAdd && !canRemove) {
            bestPath[diagonalPath] = void 0;
            continue;
          }
          if (!canRemove || canAdd && removePath.oldPos < addPath.oldPos) {
            basePath = this.addToPath(addPath, true, false, 0, options);
          } else {
            basePath = this.addToPath(removePath, false, true, 1, options);
          }
          newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);
          if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {
            return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;
          } else {
            bestPath[diagonalPath] = basePath;
            if (basePath.oldPos + 1 >= oldLen) {
              maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);
            }
            if (newPos + 1 >= newLen) {
              minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);
            }
          }
        }
        editLength++;
      };
      if (callback) {
        (function exec() {
          setTimeout(function() {
            if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {
              return callback(void 0);
            }
            if (!execEditLength()) {
              exec();
            }
          }, 0);
        })();
      } else {
        while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {
          const ret = execEditLength();
          if (ret) {
            return ret;
          }
        }
      }
    }
    addToPath(path, added, removed, oldPosInc, options) {
      const last = path.lastComponent;
      if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) {
        return {
          oldPos: path.oldPos + oldPosInc,
          lastComponent: { count: last.count + 1, added, removed, previousComponent: last.previousComponent }
        };
      } else {
        return {
          oldPos: path.oldPos + oldPosInc,
          lastComponent: { count: 1, added, removed, previousComponent: last }
        };
      }
    }
    extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {
      const newLen = newTokens.length, oldLen = oldTokens.length;
      let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;
      while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {
        newPos++;
        oldPos++;
        commonCount++;
        if (options.oneChangePerToken) {
          basePath.lastComponent = { count: 1, previousComponent: basePath.lastComponent, added: false, removed: false };
        }
      }
      if (commonCount && !options.oneChangePerToken) {
        basePath.lastComponent = { count: commonCount, previousComponent: basePath.lastComponent, added: false, removed: false };
      }
      basePath.oldPos = oldPos;
      return newPos;
    }
    equals(left, right, options) {
      if (options.comparator) {
        return options.comparator(left, right);
      } else {
        return left === right || !!options.ignoreCase && left.toLowerCase() === right.toLowerCase();
      }
    }
    removeEmpty(array) {
      const ret = [];
      for (let i2 = 0; i2 < array.length; i2++) {
        if (array[i2]) {
          ret.push(array[i2]);
        }
      }
      return ret;
    }
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
    castInput(value, options) {
      return value;
    }
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
    tokenize(value, options) {
      return Array.from(value);
    }
    join(chars) {
      return chars.join("");
    }
    postProcess(changeObjects, options) {
      return changeObjects;
    }
    get useLongestToken() {
      return false;
    }
    buildValues(lastComponent, newTokens, oldTokens) {
      const components = [];
      let nextComponent;
      while (lastComponent) {
        components.push(lastComponent);
        nextComponent = lastComponent.previousComponent;
        delete lastComponent.previousComponent;
        lastComponent = nextComponent;
      }
      components.reverse();
      const componentLen = components.length;
      let componentPos = 0, newPos = 0, oldPos = 0;
      for (; componentPos < componentLen; componentPos++) {
        const component = components[componentPos];
        if (!component.removed) {
          if (!component.added && this.useLongestToken) {
            let value = newTokens.slice(newPos, newPos + component.count);
            value = value.map(function(value2, i2) {
              const oldValue = oldTokens[oldPos + i2];
              return oldValue.length > value2.length ? oldValue : value2;
            });
            component.value = this.join(value);
          } else {
            component.value = this.join(newTokens.slice(newPos, newPos + component.count));
          }
          newPos += component.count;
          if (!component.added) {
            oldPos += component.count;
          }
        } else {
          component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));
          oldPos += component.count;
        }
      }
      return components;
    }
  };

  // node_modules/diff/libesm/diff/character.js
  var CharacterDiff = class extends Diff {
  };
  var characterDiff = new CharacterDiff();
  function diffChars(oldStr, newStr, options) {
    return characterDiff.diff(oldStr, newStr, options);
  }

  // node_modules/diff/libesm/util/string.js
  function longestCommonPrefix(str1, str22) {
    let i2;
    for (i2 = 0; i2 < str1.length && i2 < str22.length; i2++) {
      if (str1[i2] != str22[i2]) {
        return str1.slice(0, i2);
      }
    }
    return str1.slice(0, i2);
  }
  function longestCommonSuffix(str1, str22) {
    let i2;
    if (!str1 || !str22 || str1[str1.length - 1] != str22[str22.length - 1]) {
      return "";
    }
    for (i2 = 0; i2 < str1.length && i2 < str22.length; i2++) {
      if (str1[str1.length - (i2 + 1)] != str22[str22.length - (i2 + 1)]) {
        return str1.slice(-i2);
      }
    }
    return str1.slice(-i2);
  }
  function replacePrefix(string, oldPrefix, newPrefix) {
    if (string.slice(0, oldPrefix.length) != oldPrefix) {
      throw Error(`string ${JSON.stringify(string)} doesn't start with prefix ${JSON.stringify(oldPrefix)}; this is a bug`);
    }
    return newPrefix + string.slice(oldPrefix.length);
  }
  function replaceSuffix(string, oldSuffix, newSuffix) {
    if (!oldSuffix) {
      return string + newSuffix;
    }
    if (string.slice(-oldSuffix.length) != oldSuffix) {
      throw Error(`string ${JSON.stringify(string)} doesn't end with suffix ${JSON.stringify(oldSuffix)}; this is a bug`);
    }
    return string.slice(0, -oldSuffix.length) + newSuffix;
  }
  function removePrefix(string, oldPrefix) {
    return replacePrefix(string, oldPrefix, "");
  }
  function removeSuffix(string, oldSuffix) {
    return replaceSuffix(string, oldSuffix, "");
  }
  function maximumOverlap(string1, string2) {
    return string2.slice(0, overlapCount(string1, string2));
  }
  function overlapCount(a2, b2) {
    let startA = 0;
    if (a2.length > b2.length) {
      startA = a2.length - b2.length;
    }
    let endB = b2.length;
    if (a2.length < b2.length) {
      endB = a2.length;
    }
    const map = Array(endB);
    let k2 = 0;
    map[0] = 0;
    for (let j2 = 1; j2 < endB; j2++) {
      if (b2[j2] == b2[k2]) {
        map[j2] = map[k2];
      } else {
        map[j2] = k2;
      }
      while (k2 > 0 && b2[j2] != b2[k2]) {
        k2 = map[k2];
      }
      if (b2[j2] == b2[k2]) {
        k2++;
      }
    }
    k2 = 0;
    for (let i2 = startA; i2 < a2.length; i2++) {
      while (k2 > 0 && a2[i2] != b2[k2]) {
        k2 = map[k2];
      }
      if (a2[i2] == b2[k2]) {
        k2++;
      }
    }
    return k2;
  }
  function segment(string, segmenter) {
    const parts = [];
    for (const segmentObj of Array.from(segmenter.segment(string))) {
      const segment2 = segmentObj.segment;
      if (parts.length && /\s/.test(parts[parts.length - 1]) && /\s/.test(segment2)) {
        parts[parts.length - 1] += segment2;
      } else {
        parts.push(segment2);
      }
    }
    return parts;
  }
  function trailingWs(string, segmenter) {
    if (segmenter) {
      return leadingAndTrailingWs(string, segmenter)[1];
    }
    let i2;
    for (i2 = string.length - 1; i2 >= 0; i2--) {
      if (!string[i2].match(/\s/)) {
        break;
      }
    }
    return string.substring(i2 + 1);
  }
  function leadingWs(string, segmenter) {
    if (segmenter) {
      return leadingAndTrailingWs(string, segmenter)[0];
    }
    const match3 = string.match(/^\s*/);
    return match3 ? match3[0] : "";
  }
  function leadingAndTrailingWs(string, segmenter) {
    if (!segmenter) {
      return [leadingWs(string), trailingWs(string)];
    }
    if (segmenter.resolvedOptions().granularity != "word") {
      throw new Error('The segmenter passed must have a granularity of "word"');
    }
    const segments = segment(string, segmenter);
    const firstSeg = segments[0];
    const lastSeg = segments[segments.length - 1];
    const head2 = /\s/.test(firstSeg) ? firstSeg : "";
    const tail = /\s/.test(lastSeg) ? lastSeg : "";
    return [head2, tail];
  }

  // node_modules/diff/libesm/diff/word.js
  var extendedWordChars = "a-zA-Z0-9_\\u{AD}\\u{C0}-\\u{D6}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}";
  var tokenizeIncludingWhitespace = new RegExp(`[${extendedWordChars}]+|\\s+|[^${extendedWordChars}]`, "ug");
  var WordDiff = class extends Diff {
    equals(left, right, options) {
      if (options.ignoreCase) {
        left = left.toLowerCase();
        right = right.toLowerCase();
      }
      return left.trim() === right.trim();
    }
    tokenize(value, options = {}) {
      let parts;
      if (options.intlSegmenter) {
        const segmenter = options.intlSegmenter;
        if (segmenter.resolvedOptions().granularity != "word") {
          throw new Error('The segmenter passed must have a granularity of "word"');
        }
        parts = segment(value, segmenter);
      } else {
        parts = value.match(tokenizeIncludingWhitespace) || [];
      }
      const tokens = [];
      let prevPart = null;
      parts.forEach((part) => {
        if (/\s/.test(part)) {
          if (prevPart == null) {
            tokens.push(part);
          } else {
            tokens.push(tokens.pop() + part);
          }
        } else if (prevPart != null && /\s/.test(prevPart)) {
          if (tokens[tokens.length - 1] == prevPart) {
            tokens.push(tokens.pop() + part);
          } else {
            tokens.push(prevPart + part);
          }
        } else {
          tokens.push(part);
        }
        prevPart = part;
      });
      return tokens;
    }
    join(tokens) {
      return tokens.map((token, i2) => {
        if (i2 == 0) {
          return token;
        } else {
          return token.replace(/^\s+/, "");
        }
      }).join("");
    }
    postProcess(changes, options) {
      if (!changes || options.oneChangePerToken) {
        return changes;
      }
      let lastKeep = null;
      let insertion = null;
      let deletion = null;
      changes.forEach((change) => {
        if (change.added) {
          insertion = change;
        } else if (change.removed) {
          deletion = change;
        } else {
          if (insertion || deletion) {
            dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change, options.intlSegmenter);
          }
          lastKeep = change;
          insertion = null;
          deletion = null;
        }
      });
      if (insertion || deletion) {
        dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null, options.intlSegmenter);
      }
      return changes;
    }
  };
  var wordDiff = new WordDiff();
  function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep, segmenter) {
    if (deletion && insertion) {
      const [oldWsPrefix, oldWsSuffix] = leadingAndTrailingWs(deletion.value, segmenter);
      const [newWsPrefix, newWsSuffix] = leadingAndTrailingWs(insertion.value, segmenter);
      if (startKeep) {
        const commonWsPrefix = longestCommonPrefix(oldWsPrefix, newWsPrefix);
        startKeep.value = replaceSuffix(startKeep.value, newWsPrefix, commonWsPrefix);
        deletion.value = removePrefix(deletion.value, commonWsPrefix);
        insertion.value = removePrefix(insertion.value, commonWsPrefix);
      }
      if (endKeep) {
        const commonWsSuffix = longestCommonSuffix(oldWsSuffix, newWsSuffix);
        endKeep.value = replacePrefix(endKeep.value, newWsSuffix, commonWsSuffix);
        deletion.value = removeSuffix(deletion.value, commonWsSuffix);
        insertion.value = removeSuffix(insertion.value, commonWsSuffix);
      }
    } else if (insertion) {
      if (startKeep) {
        const ws = leadingWs(insertion.value, segmenter);
        insertion.value = insertion.value.substring(ws.length);
      }
      if (endKeep) {
        const ws = leadingWs(endKeep.value, segmenter);
        endKeep.value = endKeep.value.substring(ws.length);
      }
    } else if (startKeep && endKeep) {
      const newWsFull = leadingWs(endKeep.value, segmenter), [delWsStart, delWsEnd] = leadingAndTrailingWs(deletion.value, segmenter);
      const newWsStart = longestCommonPrefix(newWsFull, delWsStart);
      deletion.value = removePrefix(deletion.value, newWsStart);
      const newWsEnd = longestCommonSuffix(removePrefix(newWsFull, newWsStart), delWsEnd);
      deletion.value = removeSuffix(deletion.value, newWsEnd);
      endKeep.value = replacePrefix(endKeep.value, newWsFull, newWsEnd);
      startKeep.value = replaceSuffix(startKeep.value, newWsFull, newWsFull.slice(0, newWsFull.length - newWsEnd.length));
    } else if (endKeep) {
      const endKeepWsPrefix = leadingWs(endKeep.value, segmenter);
      const deletionWsSuffix = trailingWs(deletion.value, segmenter);
      const overlap = maximumOverlap(deletionWsSuffix, endKeepWsPrefix);
      deletion.value = removeSuffix(deletion.value, overlap);
    } else if (startKeep) {
      const startKeepWsSuffix = trailingWs(startKeep.value, segmenter);
      const deletionWsPrefix = leadingWs(deletion.value, segmenter);
      const overlap = maximumOverlap(startKeepWsSuffix, deletionWsPrefix);
      deletion.value = removePrefix(deletion.value, overlap);
    }
  }
  var WordsWithSpaceDiff = class extends Diff {
    tokenize(value) {
      const regex = new RegExp(`(\\r?\\n)|[${extendedWordChars}]+|[^\\S\\n\\r]+|[^${extendedWordChars}]`, "ug");
      return value.match(regex) || [];
    }
  };
  var wordsWithSpaceDiff = new WordsWithSpaceDiff();
  function diffWordsWithSpace(oldStr, newStr, options) {
    return wordsWithSpaceDiff.diff(oldStr, newStr, options);
  }

  // node_modules/diff/libesm/diff/line.js
  var LineDiff = class extends Diff {
    constructor() {
      super(...arguments);
      this.tokenize = tokenize;
    }
    equals(left, right, options) {
      if (options.ignoreWhitespace) {
        if (!options.newlineIsToken || !left.includes("\n")) {
          left = left.trim();
        }
        if (!options.newlineIsToken || !right.includes("\n")) {
          right = right.trim();
        }
      } else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {
        if (left.endsWith("\n")) {
          left = left.slice(0, -1);
        }
        if (right.endsWith("\n")) {
          right = right.slice(0, -1);
        }
      }
      return super.equals(left, right, options);
    }
  };
  var lineDiff = new LineDiff();
  function diffLines(oldStr, newStr, options) {
    return lineDiff.diff(oldStr, newStr, options);
  }
  function tokenize(value, options) {
    if (options.stripTrailingCr) {
      value = value.replace(/\r\n/g, "\n");
    }
    const retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/);
    if (!linesAndNewlines[linesAndNewlines.length - 1]) {
      linesAndNewlines.pop();
    }
    for (let i2 = 0; i2 < linesAndNewlines.length; i2++) {
      const line = linesAndNewlines[i2];
      if (i2 % 2 && !options.newlineIsToken) {
        retLines[retLines.length - 1] += line;
      } else {
        retLines.push(line);
      }
    }
    return retLines;
  }

  // node_modules/diff/libesm/diff/array.js
  var ArrayDiff = class extends Diff {
    tokenize(value) {
      return value.slice();
    }
    join(value) {
      return value;
    }
    removeEmpty(value) {
      return value;
    }
  };
  var arrayDiff = new ArrayDiff();
  function diffArrays(oldArr, newArr, options) {
    return arrayDiff.diff(oldArr, newArr, options);
  }

  // packages/editor/build-module/components/post-revisions-preview/block-diff.mjs
  var import_block_serialization_default_parser = __toESM(require_block_serialization_default_parser(), 1);
  var import_blocks13 = __toESM(require_blocks(), 1);
  var import_rich_text2 = __toESM(require_rich_text(), 1);
  var import_i18n209 = __toESM(require_i18n(), 1);

  // packages/editor/build-module/components/post-revisions-preview/diff-format-types.mjs
  var import_i18n208 = __toESM(require_i18n(), 1);
  var import_rich_text = __toESM(require_rich_text(), 1);
  var DIFF_DESCRIPTION_IDS = {
    removed: "revision-diff-removed-desc",
    added: "revision-diff-added-desc",
    formatAdded: "revision-diff-format-added-desc",
    formatRemoved: "revision-diff-format-removed-desc",
    formatChanged: "revision-diff-format-changed-desc"
  };
  var DIFF_FORMAT_TYPES = [
    {
      name: "revision/diff-removed",
      title: (0, import_i18n208.__)("Removed"),
      tagName: "del",
      className: "revision-diff-removed"
    },
    {
      name: "revision/diff-added",
      title: (0, import_i18n208.__)("Added"),
      tagName: "ins",
      className: "revision-diff-added"
    },
    {
      name: "revision/diff-format-added",
      title: (0, import_i18n208.__)("Format added"),
      tagName: "mark",
      className: "revision-diff-format-added"
    },
    {
      name: "revision/diff-format-removed",
      title: (0, import_i18n208.__)("Format removed"),
      tagName: "mark",
      className: "revision-diff-format-removed"
    },
    {
      name: "revision/diff-format-changed",
      title: (0, import_i18n208.__)("Format changed"),
      tagName: "mark",
      className: "revision-diff-format-changed"
    }
  ];
  function registerDiffFormatTypes() {
    for (const formatType of DIFF_FORMAT_TYPES) {
      (0, import_rich_text.registerFormatType)(formatType.name, {
        ...formatType,
        attributes: { "aria-describedby": "aria-describedby" },
        edit: () => null
      });
    }
  }
  function unregisterDiffFormatTypes() {
    for (const formatType of DIFF_FORMAT_TYPES) {
      (0, import_rich_text.unregisterFormatType)(formatType.name);
    }
  }

  // packages/editor/build-module/components/post-revisions-preview/block-diff.mjs
  var { parseRawBlock } = unlock(import_blocks13.privateApis);
  function isWhitespaceRawBlock(rawBlock) {
    return rawBlock.blockName === null && (!rawBlock.innerHTML || !rawBlock.innerHTML.trim());
  }
  function stringifyValue(value) {
    if (value === null || value === void 0) {
      return "";
    }
    if (typeof value === "object") {
      return JSON.stringify(value, null, 2);
    }
    return String(value);
  }
  function textSimilarity(text1, text2) {
    if (!text1 && !text2) {
      return 1;
    }
    if (!text1 || !text2) {
      return 0;
    }
    const segmenter = new Intl.Segmenter(void 0, {
      granularity: "word"
    });
    const wordLikeRegex = /[\p{L}\p{N}]/u;
    const getWords = (text) => {
      const words = [];
      for (const { segment: segment2, isWordLike } of segmenter.segment(text)) {
        if (isWordLike || wordLikeRegex.test(segment2)) {
          words.push(segment2);
        }
      }
      return words;
    };
    const words1 = getWords(text1);
    const words2 = getWords(text2);
    if (words1.length === 0 && words2.length === 0) {
      return 1;
    }
    const set1 = new Set(words1);
    let intersection = 0;
    for (const word of words2) {
      if (set1.has(word)) {
        intersection++;
      }
    }
    const total = Math.max(words1.length, words2.length);
    return total > 0 ? intersection / total : 0;
  }
  function pairSimilarBlocks(blocks) {
    const removed = [];
    const added = [];
    blocks.forEach((block, index3) => {
      const status = block.__revisionDiffStatus?.status;
      if (status === "removed") {
        removed.push({ block, index: index3 });
      } else if (status === "added") {
        added.push({ block, index: index3 });
      }
    });
    if (removed.length === 0 || added.length === 0) {
      return blocks;
    }
    const pairedRemoved = /* @__PURE__ */ new Set();
    const pairedAdded = /* @__PURE__ */ new Set();
    const modifications = /* @__PURE__ */ new Map();
    const SIMILARITY_THRESHOLD = 0.5;
    const addedByName = /* @__PURE__ */ new Map();
    for (const add3 of added) {
      const name2 = add3.block.blockName;
      if (!addedByName.has(name2)) {
        addedByName.set(name2, []);
      }
      addedByName.get(name2).push(add3);
    }
    const removedByName = /* @__PURE__ */ new Map();
    for (const rem of removed) {
      const name2 = rem.block.blockName;
      if (!removedByName.has(name2)) {
        removedByName.set(name2, []);
      }
      removedByName.get(name2).push(rem);
    }
    let maxPairedAddedIndex = -1;
    for (const rem of removed) {
      const candidates = addedByName.get(rem.block.blockName) || [];
      const sameNameRemoved = removedByName.get(rem.block.blockName) || [];
      const unpaired = candidates.filter(
        (add3) => !modifications.has(add3.index) && add3.index > maxPairedAddedIndex
      );
      if (unpaired.length === 0) {
        continue;
      }
      let bestMatch = null;
      if (sameNameRemoved.length === 1 && unpaired.length === 1) {
        const add3 = unpaired[0];
        const attrsMatch = JSON.stringify(rem.block.attrs) === JSON.stringify(add3.block.attrs);
        const contentMatch = (rem.block.innerHTML || "") === (add3.block.innerHTML || "");
        if (!contentMatch || !attrsMatch) {
          bestMatch = add3;
        }
      } else {
        let bestScore = 0;
        for (const add3 of unpaired) {
          const score = textSimilarity(
            rem.block.innerHTML || "",
            add3.block.innerHTML || ""
          );
          const attrsMatch = JSON.stringify(rem.block.attrs) === JSON.stringify(add3.block.attrs);
          if (score > bestScore && score > SIMILARITY_THRESHOLD && (score < 1 || !attrsMatch)) {
            bestScore = score;
            bestMatch = add3;
          }
        }
      }
      if (bestMatch) {
        maxPairedAddedIndex = bestMatch.index;
        const modifiedBlock = {
          ...bestMatch.block,
          __revisionDiffStatus: { status: "modified" },
          __previousRawBlock: rem.block
        };
        const lo = Math.min(rem.index, bestMatch.index);
        const hi = Math.max(rem.index, bestMatch.index);
        let crossesCurrentContent = false;
        for (let i2 = lo + 1; i2 < hi; i2++) {
          const status = blocks[i2].__revisionDiffStatus?.status;
          if (status === void 0) {
            crossesCurrentContent = true;
            break;
          }
          if (status === "added" && !pairedAdded.has(i2)) {
            crossesCurrentContent = true;
            break;
          }
        }
        if (crossesCurrentContent) {
          modifications.set(bestMatch.index, modifiedBlock);
          pairedRemoved.add(rem.index);
        } else {
          modifications.set(rem.index, modifiedBlock);
          pairedAdded.add(bestMatch.index);
        }
      }
    }
    return blocks.map((block, index3) => {
      if (pairedRemoved.has(index3) || pairedAdded.has(index3)) {
        return null;
      }
      if (modifications.has(index3)) {
        return modifications.get(index3);
      }
      return block;
    }).filter(Boolean);
  }
  function diffRawBlocks(currentRaw, previousRaw) {
    currentRaw = currentRaw.filter((b2) => !isWhitespaceRawBlock(b2));
    previousRaw = previousRaw.filter((b2) => !isWhitespaceRawBlock(b2));
    const createBlockSignature = (rawBlock) => JSON.stringify({
      name: rawBlock.blockName,
      attrs: rawBlock.attrs,
      // Use innerContent filtered to non-null and non-whitespace-only strings.
      // This excludes whitespace between inner blocks which changes based on count.
      html: (rawBlock.innerContent || []).filter(
        (c6) => c6 !== null && c6.trim() !== ""
      )
    });
    const currentSigs = currentRaw.map(createBlockSignature);
    const previousSigs = previousRaw.map(createBlockSignature);
    const diff = diffArrays(previousSigs, currentSigs);
    const result = [];
    let currIdx = 0;
    let prevIdx = 0;
    for (const part of diff) {
      if (part.added) {
        for (let i2 = 0; i2 < part.count; i2++) {
          result.push({
            ...currentRaw[currIdx++],
            __revisionDiffStatus: { status: "added" }
          });
        }
      } else if (part.removed) {
        for (let i2 = 0; i2 < part.count; i2++) {
          result.push({
            ...previousRaw[prevIdx++],
            __revisionDiffStatus: { status: "removed" }
          });
        }
      } else {
        for (let i2 = 0; i2 < part.count; i2++) {
          const currBlock = currentRaw[currIdx++];
          const prevBlock = previousRaw[prevIdx++];
          const diffedInnerBlocks = diffRawBlocks(
            currBlock.innerBlocks || [],
            prevBlock.innerBlocks || []
          );
          result.push({
            ...currBlock,
            innerBlocks: diffedInnerBlocks
          });
        }
      }
    }
    return pairSimilarBlocks(result);
  }
  function hasFormatChangedAtIndex(currentFormats, previousFormats, currentIndex, previousIndex) {
    const currFmts = currentFormats[currentIndex] || [];
    const prevFmts = previousFormats[previousIndex] || [];
    if (currFmts.length !== prevFmts.length) {
      return true;
    }
    for (const fmt of currFmts) {
      const match3 = prevFmts.find(
        (pf) => pf.type === fmt.type && JSON.stringify(pf.attributes) === JSON.stringify(fmt.attributes)
      );
      if (!match3) {
        return true;
      }
    }
    return false;
  }
  function describeFormatChange(currentFormats, previousFormats, currIdx, prevIdx) {
    const currFmts = currentFormats[currIdx] || [];
    const prevFmts = previousFormats[prevIdx] || [];
    let addedCount = 0;
    let removedCount = 0;
    let changedCount = 0;
    for (const fmt of currFmts) {
      const match3 = prevFmts.find((pf) => pf.type === fmt.type);
      if (!match3) {
        addedCount++;
      } else if (JSON.stringify(fmt.attributes) !== JSON.stringify(match3.attributes)) {
        changedCount++;
      }
    }
    for (const fmt of prevFmts) {
      const match3 = currFmts.find((cf) => cf.type === fmt.type);
      if (!match3) {
        removedCount++;
      }
    }
    if (addedCount > 0 && removedCount === 0 && changedCount === 0) {
      return {
        type: "added",
        description: (0, import_i18n209.sprintf)(
          /* translators: %d: number of formats added */
          (0, import_i18n209._n)("%d format added", "%d formats added", addedCount),
          addedCount
        )
      };
    }
    if (removedCount > 0 && addedCount === 0 && changedCount === 0) {
      return {
        type: "removed",
        description: (0, import_i18n209.sprintf)(
          /* translators: %d: number of formats removed */
          (0, import_i18n209._n)("%d format removed", "%d formats removed", removedCount),
          removedCount
        )
      };
    }
    const parts = [];
    if (addedCount > 0) {
      parts.push(
        (0, import_i18n209.sprintf)(
          /* translators: %d: number of formats added */
          (0, import_i18n209._n)("%d format added", "%d formats added", addedCount),
          addedCount
        )
      );
    }
    if (removedCount > 0) {
      parts.push(
        (0, import_i18n209.sprintf)(
          /* translators: %d: number of formats removed */
          (0, import_i18n209._n)("%d format removed", "%d formats removed", removedCount),
          removedCount
        )
      );
    }
    if (changedCount > 0) {
      parts.push(
        (0, import_i18n209.sprintf)(
          /* translators: %d: number of formats changed */
          (0, import_i18n209._n)("%d format changed", "%d formats changed", changedCount),
          changedCount
        )
      );
    }
    return {
      type: "changed",
      description: parts.join(", ") || (0, import_i18n209.__)("Formatting changed")
    };
  }
  function applyRichTextDiff(currentRichText, previousRichText) {
    const currentText = currentRichText.toPlainText();
    const previousText = previousRichText.toPlainText();
    const textDiff = diffWordsWithSpace(previousText, currentText);
    let result = (0, import_rich_text2.create)({ text: "" });
    let currentIdx = 0;
    let previousIdx = 0;
    for (const part of textDiff) {
      if (part.removed) {
        const removedSlice = (0, import_rich_text2.slice)(
          previousRichText,
          previousIdx,
          previousIdx + part.value.length
        );
        const formatted = (0, import_rich_text2.applyFormat)(
          removedSlice,
          {
            type: "revision/diff-removed",
            attributes: {
              "aria-describedby": DIFF_DESCRIPTION_IDS.removed
            }
          },
          0,
          part.value.length
        );
        result = (0, import_rich_text2.concat)(result, formatted);
        previousIdx += part.value.length;
      } else if (part.added) {
        const addedSlice = (0, import_rich_text2.slice)(
          currentRichText,
          currentIdx,
          currentIdx + part.value.length
        );
        const formatted = (0, import_rich_text2.applyFormat)(
          addedSlice,
          {
            type: "revision/diff-added",
            attributes: {
              "aria-describedby": DIFF_DESCRIPTION_IDS.added
            }
          },
          0,
          part.value.length
        );
        result = (0, import_rich_text2.concat)(result, formatted);
        currentIdx += part.value.length;
      } else {
        const currentFormats = currentRichText.formats || [];
        const previousFormats = previousRichText.formats || [];
        const len2 = part.value.length;
        const checkFormatChanged = (offset4) => hasFormatChangedAtIndex(
          currentFormats,
          previousFormats,
          currentIdx + offset4,
          previousIdx + offset4
        );
        let rangeStart = 0;
        let rangeFormatChanged = checkFormatChanged(0);
        for (let i2 = 1; i2 <= len2; i2++) {
          const formatChanged = i2 < len2 && checkFormatChanged(i2);
          if (i2 === len2 || formatChanged !== rangeFormatChanged) {
            const rangeSlice = (0, import_rich_text2.slice)(
              currentRichText,
              currentIdx + rangeStart,
              currentIdx + i2
            );
            if (rangeFormatChanged) {
              const { type } = describeFormatChange(
                currentFormats,
                previousFormats,
                currentIdx + rangeStart,
                previousIdx + rangeStart
              );
              const formatType = {
                added: "revision/diff-format-added",
                removed: "revision/diff-format-removed",
                changed: "revision/diff-format-changed"
              }[type];
              const descriptionId = {
                added: DIFF_DESCRIPTION_IDS.formatAdded,
                removed: DIFF_DESCRIPTION_IDS.formatRemoved,
                changed: DIFF_DESCRIPTION_IDS.formatChanged
              }[type];
              const marked = (0, import_rich_text2.applyFormat)(
                rangeSlice,
                {
                  type: formatType,
                  attributes: {
                    "aria-describedby": descriptionId
                  }
                },
                0,
                i2 - rangeStart
              );
              result = (0, import_rich_text2.concat)(result, marked);
            } else {
              result = (0, import_rich_text2.concat)(result, rangeSlice);
            }
            rangeStart = i2;
            rangeFormatChanged = formatChanged;
          }
        }
        currentIdx += part.value.length;
        previousIdx += part.value.length;
      }
    }
    return new import_rich_text2.RichTextData(result);
  }
  function diffRevisionHTML(currentHTML, previousHTML) {
    return applyRichTextDiff(
      import_rich_text2.RichTextData.fromHTMLString(currentHTML || ""),
      import_rich_text2.RichTextData.fromHTMLString(previousHTML || "")
    );
  }
  function applyDiffToBlock(currentBlock, previousBlock, diffStatus) {
    const blockType = (0, import_blocks13.getBlockType)(currentBlock.name);
    if (!blockType) {
      return;
    }
    const changedAttributes = {};
    for (const [attrName, attrDef] of Object.entries(
      blockType.attributes
    )) {
      if (attrDef.source === "rich-text") {
        const currentRichText = currentBlock.attributes[attrName];
        const previousRichText = previousBlock.attributes[attrName];
        if (currentRichText instanceof import_rich_text2.RichTextData && previousRichText instanceof import_rich_text2.RichTextData) {
          currentBlock.attributes[attrName] = applyRichTextDiff(
            currentRichText,
            previousRichText
          );
        }
      } else {
        const currStr = stringifyValue(
          currentBlock.attributes[attrName]
        );
        const prevStr = stringifyValue(
          previousBlock.attributes[attrName]
        );
        if (currStr !== prevStr) {
          changedAttributes[attrName] = diffWordsWithSpace(
            prevStr,
            currStr
          );
        }
      }
    }
    if (Object.keys(changedAttributes).length > 0) {
      diffStatus.changedAttributes = changedAttributes;
    }
  }
  function applyDiffRecursively(parsedBlock, rawBlock) {
    if (rawBlock.__revisionDiffStatus) {
      if (rawBlock.__revisionDiffStatus.status === "modified" && rawBlock.__previousRawBlock) {
        const previousParsed = parseRawBlock(rawBlock.__previousRawBlock);
        if (previousParsed) {
          applyDiffToBlock(
            parsedBlock,
            previousParsed,
            rawBlock.__revisionDiffStatus
          );
        }
      }
      parsedBlock.__revisionDiffStatus = rawBlock.__revisionDiffStatus;
      parsedBlock.attributes.__revisionDiffStatus = rawBlock.__revisionDiffStatus;
    }
    if (parsedBlock.innerBlocks && rawBlock.innerBlocks) {
      for (let i2 = 0; i2 < parsedBlock.innerBlocks.length; i2++) {
        const parsedInner = parsedBlock.innerBlocks[i2];
        const rawInner = rawBlock.innerBlocks[i2];
        if (parsedInner && rawInner) {
          applyDiffRecursively(parsedInner, rawInner);
        }
      }
    }
  }
  function diffRevisionContent(currentContent, previousContent) {
    const currentRaw = (0, import_block_serialization_default_parser.parse)(currentContent || "");
    const previousRaw = (0, import_block_serialization_default_parser.parse)(previousContent || "");
    const mergedRaw = diffRawBlocks(currentRaw, previousRaw);
    return mergedRaw.map((rawBlock) => {
      const parsed = parseRawBlock(rawBlock);
      if (parsed) {
        applyDiffRecursively(parsed, rawBlock);
      }
      return parsed;
    }).filter(Boolean);
  }

  // packages/editor/build-module/components/post-revisions-preview/preserve-client-ids.mjs
  function preserveClientIds(newBlocks, prevBlocks) {
    if (!prevBlocks?.length || !newBlocks?.length) {
      return newBlocks;
    }
    const newSigs = newBlocks.map((block) => block.name);
    const prevSigs = prevBlocks.map((block) => block.name);
    const diffResult = diffArrays(prevSigs, newSigs);
    let newIndex = 0;
    let prevIndex = 0;
    const result = [];
    for (const chunk2 of diffResult) {
      if (chunk2.removed) {
        prevIndex += chunk2.count;
      } else if (chunk2.added) {
        for (let i2 = 0; i2 < chunk2.count; i2++) {
          result.push(newBlocks[newIndex++]);
        }
      } else {
        for (let i2 = 0; i2 < chunk2.count; i2++) {
          const newBlock = newBlocks[newIndex++];
          const prevBlock = prevBlocks[prevIndex++];
          result.push({
            ...newBlock,
            clientId: prevBlock.clientId,
            innerBlocks: preserveClientIds(
              newBlock.innerBlocks,
              prevBlock.innerBlocks
            )
          });
        }
      }
    }
    return result;
  }

  // packages/editor/build-module/components/provider/use-revision-blocks.mjs
  function useRevisionBlocks() {
    const {
      isInRevisionsMode,
      showDiff,
      revision,
      previousRevision,
      postType: postType2
    } = (0, import_data67.useSelect)((select9) => {
      const {
        isRevisionsMode: isRevisionsMode2,
        isShowingRevisionDiff: isShowingRevisionDiff2,
        getCurrentRevision: getCurrentRevision2,
        getPreviousRevision: getPreviousRevision2
      } = unlock(select9(store));
      const { getCurrentPostType: getCurrentPostType2 } = select9(store);
      const inRevisions = isRevisionsMode2();
      return {
        isInRevisionsMode: inRevisions,
        showDiff: isShowingRevisionDiff2(),
        revision: inRevisions ? getCurrentRevision2() : void 0,
        previousRevision: inRevisions ? getPreviousRevision2() : void 0,
        postType: getCurrentPostType2()
      };
    }, []);
    const previousBlocksRef = (0, import_element291.useRef)([]);
    const blocks = (0, import_element291.useMemo)(() => {
      if (!isInRevisionsMode) {
        previousBlocksRef.current = [];
        return null;
      }
      if (!revision) {
        return [];
      }
      const currentContent = revision?.content?.raw ?? "";
      let parsedBlocks;
      if (showDiff) {
        const previousContent = previousRevision?.content?.raw || "";
        parsedBlocks = diffRevisionContent(
          currentContent,
          previousContent
        );
      } else {
        parsedBlocks = (0, import_blocks14.parse)(currentContent);
      }
      if (postType2 === "wp_navigation") {
        parsedBlocks = [
          (0, import_blocks14.createBlock)(
            "core/navigation",
            { templateLock: false },
            parsedBlocks
          )
        ];
      }
      const blocksWithStableIds = preserveClientIds(
        parsedBlocks,
        previousBlocksRef.current
      );
      previousBlocksRef.current = blocksWithStableIds;
      return blocksWithStableIds;
    }, [
      isInRevisionsMode,
      revision,
      revision?.content?.raw,
      previousRevision?.content?.raw,
      postType2,
      showDiff
    ]);
    return blocks;
  }

  // packages/editor/build-module/components/commands/index.mjs
  var import_data75 = __toESM(require_data(), 1);
  var import_i18n212 = __toESM(require_i18n(), 1);
  var import_commands = __toESM(require_commands(), 1);
  var import_preferences7 = __toESM(require_preferences(), 1);
  var import_notices17 = __toESM(require_notices(), 1);
  var import_block_editor24 = __toESM(require_block_editor(), 1);
  var import_core_data54 = __toESM(require_core_data(), 1);

  // packages/interface/build-module/index.mjs
  var build_module_exports = {};
  __export(build_module_exports, {
    ActionItem: () => action_item_default,
    ComplementaryArea: () => complementary_area_default,
    ComplementaryAreaMoreMenuItem: () => ComplementaryAreaMoreMenuItem,
    FullscreenMode: () => fullscreen_mode_default,
    InterfaceSkeleton: () => interface_skeleton_default,
    PinnedItems: () => pinned_items_default,
    store: () => store3
  });

  // packages/interface/build-module/components/complementary-area/index.mjs
  var import_components144 = __toESM(require_components(), 1);
  var import_data72 = __toESM(require_data(), 1);
  var import_i18n210 = __toESM(require_i18n(), 1);
  var import_element294 = __toESM(require_element(), 1);
  var import_viewport3 = __toESM(require_viewport(), 1);
  var import_preferences6 = __toESM(require_preferences(), 1);
  var import_compose49 = __toESM(require_compose(), 1);
  var import_plugins3 = __toESM(require_plugins(), 1);

  // packages/interface/build-module/components/complementary-area-toggle/index.mjs
  var import_components141 = __toESM(require_components(), 1);
  var import_data71 = __toESM(require_data(), 1);
  var import_plugins2 = __toESM(require_plugins(), 1);

  // packages/interface/build-module/store/index.mjs
  var import_data70 = __toESM(require_data(), 1);

  // packages/interface/build-module/store/actions.mjs
  var actions_exports2 = {};
  __export(actions_exports2, {
    closeModal: () => closeModal,
    disableComplementaryArea: () => disableComplementaryArea,
    enableComplementaryArea: () => enableComplementaryArea,
    openModal: () => openModal,
    pinItem: () => pinItem,
    setDefaultComplementaryArea: () => setDefaultComplementaryArea,
    setFeatureDefaults: () => setFeatureDefaults,
    setFeatureValue: () => setFeatureValue,
    toggleFeature: () => toggleFeature,
    unpinItem: () => unpinItem
  });
  var import_deprecated5 = __toESM(require_deprecated(), 1);
  var import_preferences4 = __toESM(require_preferences(), 1);

  // packages/interface/build-module/store/deprecated.mjs
  var import_deprecated4 = __toESM(require_deprecated(), 1);
  function normalizeComplementaryAreaScope(scope) {
    if (["core/edit-post", "core/edit-site"].includes(scope)) {
      (0, import_deprecated4.default)(`${scope} interface scope`, {
        alternative: "core interface scope",
        hint: "core/edit-post and core/edit-site are merging.",
        version: "6.6"
      });
      return "core";
    }
    return scope;
  }
  function normalizeComplementaryAreaName(scope, name2) {
    if (scope === "core" && name2 === "edit-site/template") {
      (0, import_deprecated4.default)(`edit-site/template sidebar`, {
        alternative: "edit-post/document",
        version: "6.6"
      });
      return "edit-post/document";
    }
    if (scope === "core" && name2 === "edit-site/block-inspector") {
      (0, import_deprecated4.default)(`edit-site/block-inspector sidebar`, {
        alternative: "edit-post/block",
        version: "6.6"
      });
      return "edit-post/block";
    }
    return name2;
  }

  // packages/interface/build-module/store/actions.mjs
  var setDefaultComplementaryArea = (scope, area) => {
    scope = normalizeComplementaryAreaScope(scope);
    area = normalizeComplementaryAreaName(scope, area);
    return {
      type: "SET_DEFAULT_COMPLEMENTARY_AREA",
      scope,
      area
    };
  };
  var enableComplementaryArea = (scope, area) => ({ registry, dispatch: dispatch9 }) => {
    if (!area) {
      return;
    }
    scope = normalizeComplementaryAreaScope(scope);
    area = normalizeComplementaryAreaName(scope, area);
    const isComplementaryAreaVisible = registry.select(import_preferences4.store).get(scope, "isComplementaryAreaVisible");
    if (!isComplementaryAreaVisible) {
      registry.dispatch(import_preferences4.store).set(scope, "isComplementaryAreaVisible", true);
    }
    dispatch9({
      type: "ENABLE_COMPLEMENTARY_AREA",
      scope,
      area
    });
  };
  var disableComplementaryArea = (scope) => ({ registry }) => {
    scope = normalizeComplementaryAreaScope(scope);
    const isComplementaryAreaVisible = registry.select(import_preferences4.store).get(scope, "isComplementaryAreaVisible");
    if (isComplementaryAreaVisible) {
      registry.dispatch(import_preferences4.store).set(scope, "isComplementaryAreaVisible", false);
    }
  };
  var pinItem = (scope, item) => ({ registry }) => {
    if (!item) {
      return;
    }
    scope = normalizeComplementaryAreaScope(scope);
    item = normalizeComplementaryAreaName(scope, item);
    const pinnedItems = registry.select(import_preferences4.store).get(scope, "pinnedItems");
    if (pinnedItems?.[item] === true) {
      return;
    }
    registry.dispatch(import_preferences4.store).set(scope, "pinnedItems", {
      ...pinnedItems,
      [item]: true
    });
  };
  var unpinItem = (scope, item) => ({ registry }) => {
    if (!item) {
      return;
    }
    scope = normalizeComplementaryAreaScope(scope);
    item = normalizeComplementaryAreaName(scope, item);
    const pinnedItems = registry.select(import_preferences4.store).get(scope, "pinnedItems");
    registry.dispatch(import_preferences4.store).set(scope, "pinnedItems", {
      ...pinnedItems,
      [item]: false
    });
  };
  function toggleFeature(scope, featureName) {
    return function({ registry }) {
      (0, import_deprecated5.default)(`dispatch( 'core/interface' ).toggleFeature`, {
        since: "6.0",
        alternative: `dispatch( 'core/preferences' ).toggle`
      });
      registry.dispatch(import_preferences4.store).toggle(scope, featureName);
    };
  }
  function setFeatureValue(scope, featureName, value) {
    return function({ registry }) {
      (0, import_deprecated5.default)(`dispatch( 'core/interface' ).setFeatureValue`, {
        since: "6.0",
        alternative: `dispatch( 'core/preferences' ).set`
      });
      registry.dispatch(import_preferences4.store).set(scope, featureName, !!value);
    };
  }
  function setFeatureDefaults(scope, defaults2) {
    return function({ registry }) {
      (0, import_deprecated5.default)(`dispatch( 'core/interface' ).setFeatureDefaults`, {
        since: "6.0",
        alternative: `dispatch( 'core/preferences' ).setDefaults`
      });
      registry.dispatch(import_preferences4.store).setDefaults(scope, defaults2);
    };
  }
  function openModal(name2) {
    return {
      type: "OPEN_MODAL",
      name: name2
    };
  }
  function closeModal() {
    return {
      type: "CLOSE_MODAL"
    };
  }

  // packages/interface/build-module/store/selectors.mjs
  var selectors_exports3 = {};
  __export(selectors_exports3, {
    getActiveComplementaryArea: () => getActiveComplementaryArea,
    isComplementaryAreaLoading: () => isComplementaryAreaLoading,
    isFeatureActive: () => isFeatureActive,
    isItemPinned: () => isItemPinned,
    isModalActive: () => isModalActive
  });
  var import_data68 = __toESM(require_data(), 1);
  var import_deprecated7 = __toESM(require_deprecated(), 1);
  var import_preferences5 = __toESM(require_preferences(), 1);
  var getActiveComplementaryArea = (0, import_data68.createRegistrySelector)(
    (select9) => (state2, scope) => {
      scope = normalizeComplementaryAreaScope(scope);
      const isComplementaryAreaVisible = select9(import_preferences5.store).get(
        scope,
        "isComplementaryAreaVisible"
      );
      if (isComplementaryAreaVisible === void 0) {
        return void 0;
      }
      if (isComplementaryAreaVisible === false) {
        return null;
      }
      return state2?.complementaryAreas?.[scope];
    }
  );
  var isComplementaryAreaLoading = (0, import_data68.createRegistrySelector)(
    (select9) => (state2, scope) => {
      scope = normalizeComplementaryAreaScope(scope);
      const isVisible2 = select9(import_preferences5.store).get(
        scope,
        "isComplementaryAreaVisible"
      );
      const identifier = state2?.complementaryAreas?.[scope];
      return isVisible2 && identifier === void 0;
    }
  );
  var isItemPinned = (0, import_data68.createRegistrySelector)(
    (select9) => (state2, scope, item) => {
      scope = normalizeComplementaryAreaScope(scope);
      item = normalizeComplementaryAreaName(scope, item);
      const pinnedItems = select9(
        import_preferences5.store
      ).get(scope, "pinnedItems");
      return pinnedItems?.[item] ?? true;
    }
  );
  var isFeatureActive = (0, import_data68.createRegistrySelector)(
    (select9) => (state2, scope, featureName) => {
      (0, import_deprecated7.default)(
        `select( 'core/interface' ).isFeatureActive( scope, featureName )`,
        {
          since: "6.0",
          alternative: `select( 'core/preferences' ).get( scope, featureName )`
        }
      );
      return !!select9(import_preferences5.store).get(scope, featureName);
    }
  );
  function isModalActive(state2, modalName3) {
    return state2.activeModal === modalName3;
  }

  // packages/interface/build-module/store/reducer.mjs
  var import_data69 = __toESM(require_data(), 1);
  function complementaryAreas(state2 = {}, action) {
    switch (action.type) {
      case "SET_DEFAULT_COMPLEMENTARY_AREA": {
        const { scope, area } = action;
        if (state2[scope]) {
          return state2;
        }
        return {
          ...state2,
          [scope]: area
        };
      }
      case "ENABLE_COMPLEMENTARY_AREA": {
        const { scope, area } = action;
        return {
          ...state2,
          [scope]: area
        };
      }
    }
    return state2;
  }
  function activeModal(state2 = null, action) {
    switch (action.type) {
      case "OPEN_MODAL":
        return action.name;
      case "CLOSE_MODAL":
        return null;
    }
    return state2;
  }
  var reducer_default3 = (0, import_data69.combineReducers)({
    complementaryAreas,
    activeModal
  });

  // packages/interface/build-module/store/constants.mjs
  var STORE_NAME3 = "core/interface";

  // packages/interface/build-module/store/index.mjs
  var store3 = (0, import_data70.createReduxStore)(STORE_NAME3, {
    reducer: reducer_default3,
    actions: actions_exports2,
    selectors: selectors_exports3
  });
  (0, import_data70.register)(store3);

  // packages/interface/build-module/components/complementary-area-toggle/index.mjs
  var import_jsx_runtime469 = __toESM(require_jsx_runtime(), 1);
  function roleSupportsCheckedState(role) {
    return [
      "checkbox",
      "option",
      "radio",
      "switch",
      "menuitemcheckbox",
      "menuitemradio",
      "treeitem"
    ].includes(role);
  }
  function ComplementaryAreaToggle({
    as = import_components141.Button,
    scope,
    identifier: identifierProp,
    icon: iconProp,
    selectedIcon,
    name: name2,
    shortcut,
    ...props
  }) {
    const ComponentToUse = as;
    const context = (0, import_plugins2.usePluginContext)();
    const icon = iconProp || context.icon;
    const identifier = identifierProp || `${context.name}/${name2}`;
    const isSelected2 = (0, import_data71.useSelect)(
      (select9) => select9(store3).getActiveComplementaryArea(scope) === identifier,
      [identifier, scope]
    );
    const { enableComplementaryArea: enableComplementaryArea2, disableComplementaryArea: disableComplementaryArea2 } = (0, import_data71.useDispatch)(store3);
    return /* @__PURE__ */ (0, import_jsx_runtime469.jsx)(
      ComponentToUse,
      {
        icon: selectedIcon && isSelected2 ? selectedIcon : icon,
        "aria-controls": identifier.replace("/", ":"),
        "aria-checked": roleSupportsCheckedState(props.role) ? isSelected2 : void 0,
        onClick: () => {
          if (isSelected2) {
            disableComplementaryArea2(scope);
          } else {
            enableComplementaryArea2(scope, identifier);
          }
        },
        shortcut,
        ...props
      }
    );
  }

  // packages/interface/build-module/components/complementary-area-header/index.mjs
  var import_jsx_runtime470 = __toESM(require_jsx_runtime(), 1);
  var ComplementaryAreaHeader = ({
    children,
    className,
    toggleButtonProps
  }) => {
    const toggleButton = /* @__PURE__ */ (0, import_jsx_runtime470.jsx)(ComplementaryAreaToggle, { icon: close_small_default, ...toggleButtonProps });
    return /* @__PURE__ */ (0, import_jsx_runtime470.jsxs)(
      "div",
      {
        className: clsx_default(
          "components-panel__header",
          "interface-complementary-area-header",
          className
        ),
        tabIndex: -1,
        children: [
          children,
          toggleButton
        ]
      }
    );
  };
  var complementary_area_header_default = ComplementaryAreaHeader;

  // packages/interface/build-module/components/complementary-area-more-menu-item/index.mjs
  var import_compose48 = __toESM(require_compose(), 1);
  var import_element293 = __toESM(require_element(), 1);

  // packages/interface/build-module/components/action-item/index.mjs
  var import_components142 = __toESM(require_components(), 1);
  var import_element292 = __toESM(require_element(), 1);
  var import_jsx_runtime471 = __toESM(require_jsx_runtime(), 1);
  function ActionItemSlot({
    name: name2,
    as: Component3 = import_components142.MenuGroup,
    fillProps = {},
    children,
    ...props
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime471.jsx)(import_components142.Slot, { name: name2, fillProps, children: (fills) => {
      const items = import_element292.Children.toArray(fills);
      if (!items.length) {
        return null;
      }
      if (typeof children === "function") {
        return children(items);
      }
      return /* @__PURE__ */ (0, import_jsx_runtime471.jsx)(Component3, { ...props, children: items });
    } });
  }
  function ActionItem({ name: name2, as, onClick, ...props }) {
    return /* @__PURE__ */ (0, import_jsx_runtime471.jsx)(import_components142.Fill, { name: name2, children: ({ as: slotAs = import_components142.MenuItem, onClick: slotOnClick }) => {
      const Component3 = as ?? slotAs;
      const handlers = [onClick, slotOnClick].filter(Boolean);
      return /* @__PURE__ */ (0, import_jsx_runtime471.jsx)(
        Component3,
        {
          onClick: handlers.length ? (...args) => handlers.forEach(
            (handler) => handler(...args)
          ) : void 0,
          ...props
        }
      );
    } });
  }
  ActionItem.Slot = ActionItemSlot;
  var action_item_default = ActionItem;

  // packages/interface/build-module/components/complementary-area-more-menu-item/index.mjs
  var import_jsx_runtime472 = __toESM(require_jsx_runtime(), 1);
  var menuItems = (0, import_compose48.observableMap)();
  function useHasComplementaryAreaMenuItem(scope, target) {
    return !!(0, import_compose48.useObservableValue)(menuItems, `${scope}/${target}`);
  }
  function DefaultComplementaryAreaMoreMenuItem({
    scope,
    target,
    ...props
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime472.jsx)(
      ComplementaryAreaToggle,
      {
        as: (toggleProps) => /* @__PURE__ */ (0, import_jsx_runtime472.jsx)(
          action_item_default,
          {
            name: `${scope}/plugin-more-menu`,
            ...toggleProps
          }
        ),
        role: "menuitemcheckbox",
        name: target,
        scope,
        ...props
      }
    );
  }
  function ComplementaryAreaMoreMenuItem({
    scope,
    target,
    // Accepted so they don't leak to DOM elements. Registering the menu item is
    // what keeps `ComplementaryArea` from injecting a second one.
    __unstableExplicitMenuItem,
    __unstableTarget,
    ...props
  }) {
    (0, import_element293.useLayoutEffect)(() => {
      const key = `${scope}/${target}`;
      menuItems.set(key, (menuItems.get(key) ?? 0) + 1);
      return () => {
        const count = menuItems.get(key) - 1;
        if (count) {
          menuItems.set(key, count);
        } else {
          menuItems.delete(key);
        }
      };
    }, [scope, target]);
    return /* @__PURE__ */ (0, import_jsx_runtime472.jsx)(
      DefaultComplementaryAreaMoreMenuItem,
      {
        scope,
        target,
        ...props
      }
    );
  }

  // packages/interface/build-module/components/pinned-items/index.mjs
  var import_components143 = __toESM(require_components(), 1);
  var import_jsx_runtime473 = __toESM(require_jsx_runtime(), 1);
  function PinnedItems({ scope, ...props }) {
    return /* @__PURE__ */ (0, import_jsx_runtime473.jsx)(import_components143.Fill, { name: `PinnedItems/${scope}`, ...props });
  }
  function PinnedItemsSlot({
    scope,
    className,
    ...props
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime473.jsx)(import_components143.Slot, { name: `PinnedItems/${scope}`, ...props, children: (fills) => fills?.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime473.jsx)(
      "div",
      {
        className: clsx_default(
          className,
          "interface-pinned-items"
        ),
        children: fills
      }
    ) });
  }
  PinnedItems.Slot = PinnedItemsSlot;
  var pinned_items_default = PinnedItems;

  // packages/interface/build-module/components/complementary-area/index.mjs
  var import_jsx_runtime474 = __toESM(require_jsx_runtime(), 1);
  var ANIMATION_DURATION = 0.3;
  function ComplementaryAreaSlot({
    scope,
    ...props
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime474.jsx)(import_components144.Slot, { name: `ComplementaryArea/${scope}`, ...props });
  }
  var variants = {
    // `auto` leaves the width to the area's own stylesheet, so it stays in one
    // place. framer-motion measures the element to animate, then restores
    // `auto`.
    open: { width: "auto" },
    // Resolved with the `custom` value passed to `AnimatePresence`, which is
    // the only way an already removed element can be given a fresh transition.
    closed: (transition) => ({
      width: 0,
      transition
    })
  };
  function renderContainer(render5, props) {
    if ((0, import_element294.isValidElement)(render5)) {
      return (0, import_element294.cloneElement)(render5, {
        ...props,
        className: clsx_default(render5.props.className, props.className),
        style: { ...render5.props.style, ...props.style }
      });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime474.jsx)("div", { ...props });
  }
  function ComplementaryAreaFill({
    activeArea,
    isActive,
    scope,
    children,
    className,
    id,
    render: render5
  }) {
    const disableMotion = (0, import_compose49.useReducedMotion)();
    const isMobileViewport = (0, import_compose49.useViewportMatch)("medium", "<");
    const previousActiveArea = (0, import_compose49.usePrevious)(activeArea);
    const isSwitchingAreas = !!previousActiveArea && !!activeArea && activeArea !== previousActiveArea;
    const transition = {
      type: "tween",
      duration: disableMotion || isMobileViewport || isSwitchingAreas ? 0 : ANIMATION_DURATION,
      ease: [0.6, 0, 0.4, 1]
    };
    return /* @__PURE__ */ (0, import_jsx_runtime474.jsx)(import_components144.Fill, { name: `ComplementaryArea/${scope}`, children: /* @__PURE__ */ (0, import_jsx_runtime474.jsx)(import_components144.__unstableAnimatePresence, { initial: false, custom: transition, children: isActive && /* @__PURE__ */ (0, import_jsx_runtime474.jsx)(
      import_components144.__unstableMotion.div,
      {
        variants,
        initial: "closed",
        animate: "open",
        exit: "closed",
        transition,
        className: "interface-complementary-area__fill",
        children: renderContainer(render5, {
          id,
          className,
          children
        })
      }
    ) }) });
  }
  function useAdjustComplementaryListener(scope, identifier, activeArea, isActive, isSmall) {
    const previousIsSmallRef = (0, import_element294.useRef)(false);
    const shouldOpenWhenNotSmallRef = (0, import_element294.useRef)(false);
    const { enableComplementaryArea: enableComplementaryArea2, disableComplementaryArea: disableComplementaryArea2 } = (0, import_data72.useDispatch)(store3);
    (0, import_element294.useEffect)(() => {
      if (isActive && isSmall && !previousIsSmallRef.current) {
        disableComplementaryArea2(scope);
        shouldOpenWhenNotSmallRef.current = true;
      } else if (
        // If there is a flag indicating the complementary area should be
        // enabled when we go from small to big window size and we are going
        // from a small to big window size.
        shouldOpenWhenNotSmallRef.current && !isSmall && previousIsSmallRef.current
      ) {
        shouldOpenWhenNotSmallRef.current = false;
        enableComplementaryArea2(scope, identifier);
      } else if (
        // If the flag is indicating the current complementary should be
        // reopened but another complementary area becomes active, remove
        // the flag.
        shouldOpenWhenNotSmallRef.current && activeArea && activeArea !== identifier
      ) {
        shouldOpenWhenNotSmallRef.current = false;
      }
      if (isSmall !== previousIsSmallRef.current) {
        previousIsSmallRef.current = isSmall;
      }
    }, [
      isActive,
      isSmall,
      scope,
      identifier,
      activeArea,
      disableComplementaryArea2,
      enableComplementaryArea2
    ]);
  }
  function ComplementaryArea({
    children,
    className,
    closeLabel = (0, import_i18n210.__)("Close plugin"),
    identifier: identifierProp,
    header,
    headerClassName,
    icon: iconProp,
    isPinnable = true,
    panelClassName,
    render: render5,
    scope,
    name: name2,
    title,
    toggleShortcut,
    isActiveByDefault
  }) {
    const context = (0, import_plugins3.usePluginContext)();
    const icon = iconProp || context.icon;
    const identifier = identifierProp || `${context.name}/${name2}`;
    const [isReady2, setIsReady2] = (0, import_element294.useState)(false);
    const {
      isLoading,
      isActive,
      isPinned,
      activeArea,
      isSmall,
      isLarge,
      showIconLabels
    } = (0, import_data72.useSelect)(
      (select9) => {
        const {
          getActiveComplementaryArea: getActiveComplementaryArea2,
          isComplementaryAreaLoading: isComplementaryAreaLoading2,
          isItemPinned: isItemPinned2
        } = select9(store3);
        const { get } = select9(import_preferences6.store);
        const _activeArea = getActiveComplementaryArea2(scope);
        return {
          isLoading: isComplementaryAreaLoading2(scope),
          isActive: _activeArea === identifier,
          isPinned: isItemPinned2(scope, identifier),
          activeArea: _activeArea,
          isSmall: select9(import_viewport3.store).isViewportMatch("< medium"),
          isLarge: select9(import_viewport3.store).isViewportMatch("large"),
          showIconLabels: get("core", "showIconLabels")
        };
      },
      [identifier, scope]
    );
    const hasMenuItem = useHasComplementaryAreaMenuItem(scope, name2);
    const isMobileViewport = (0, import_compose49.useViewportMatch)("medium", "<");
    useAdjustComplementaryListener(
      scope,
      identifier,
      activeArea,
      isActive,
      isSmall
    );
    const {
      enableComplementaryArea: enableComplementaryArea2,
      disableComplementaryArea: disableComplementaryArea2,
      pinItem: pinItem2,
      unpinItem: unpinItem2
    } = (0, import_data72.useDispatch)(store3);
    (0, import_element294.useEffect)(() => {
      if (isActiveByDefault && activeArea === void 0 && !isSmall) {
        enableComplementaryArea2(scope, identifier);
      } else if (activeArea === void 0 && isSmall) {
        disableComplementaryArea2(scope);
      }
      setIsReady2(true);
    }, [
      activeArea,
      isActiveByDefault,
      scope,
      identifier,
      isSmall,
      enableComplementaryArea2,
      disableComplementaryArea2
    ]);
    if (!isReady2) {
      return;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime474.jsxs)(import_jsx_runtime474.Fragment, { children: [
      isPinnable && /* @__PURE__ */ (0, import_jsx_runtime474.jsx)(pinned_items_default, { scope, children: isPinned && /* @__PURE__ */ (0, import_jsx_runtime474.jsx)(
        ComplementaryAreaToggle,
        {
          scope,
          identifier,
          isPressed: isActive && (!showIconLabels || isLarge),
          "aria-expanded": isActive,
          "aria-disabled": isLoading,
          label: title,
          icon: showIconLabels ? check_default : icon,
          showTooltip: !showIconLabels,
          variant: showIconLabels ? "tertiary" : void 0,
          size: "compact",
          shortcut: toggleShortcut
        }
      ) }),
      name2 && isPinnable && !hasMenuItem && /* @__PURE__ */ (0, import_jsx_runtime474.jsx)(
        DefaultComplementaryAreaMoreMenuItem,
        {
          target: name2,
          scope,
          icon,
          identifier,
          children: title
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime474.jsxs)(
        ComplementaryAreaFill,
        {
          activeArea,
          isActive,
          className: clsx_default("interface-complementary-area", className),
          scope,
          id: identifier.replace("/", ":"),
          render: render5,
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime474.jsx)(
              complementary_area_header_default,
              {
                className: headerClassName,
                toggleButtonProps: {
                  label: closeLabel,
                  size: "compact",
                  shortcut: toggleShortcut,
                  scope,
                  identifier
                },
                children: header || /* @__PURE__ */ (0, import_jsx_runtime474.jsxs)(import_jsx_runtime474.Fragment, { children: [
                  /* @__PURE__ */ (0, import_jsx_runtime474.jsx)("h2", { className: "interface-complementary-area-header__title", children: title }),
                  isPinnable && !isMobileViewport && /* @__PURE__ */ (0, import_jsx_runtime474.jsx)(
                    import_components144.Button,
                    {
                      className: "interface-complementary-area__pin-unpin-item",
                      icon: isPinned ? star_filled_default : star_empty_default,
                      label: isPinned ? (0, import_i18n210.__)("Unpin from toolbar") : (0, import_i18n210.__)("Pin to toolbar"),
                      onClick: () => (isPinned ? unpinItem2 : pinItem2)(
                        scope,
                        identifier
                      ),
                      isPressed: isPinned,
                      size: "compact"
                    }
                  )
                ] })
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime474.jsx)(import_components144.Panel, { className: panelClassName, children })
          ]
        }
      )
    ] });
  }
  ComplementaryArea.Slot = ComplementaryAreaSlot;
  var complementary_area_default = ComplementaryArea;

  // packages/interface/build-module/components/fullscreen-mode/index.mjs
  var import_element295 = __toESM(require_element(), 1);
  var FullscreenMode = ({ isActive }) => {
    (0, import_element295.useEffect)(() => {
      let isSticky = false;
      if (document.body.classList.contains("sticky-menu")) {
        isSticky = true;
        document.body.classList.remove("sticky-menu");
      }
      return () => {
        if (isSticky) {
          document.body.classList.add("sticky-menu");
        }
      };
    }, []);
    (0, import_element295.useEffect)(() => {
      if (isActive) {
        document.body.classList.add("is-fullscreen-mode");
      } else {
        document.body.classList.remove("is-fullscreen-mode");
      }
      return () => {
        if (isActive) {
          document.body.classList.remove("is-fullscreen-mode");
        }
      };
    }, [isActive]);
    return null;
  };
  var fullscreen_mode_default = FullscreenMode;

  // packages/interface/build-module/components/interface-skeleton/index.mjs
  var import_element296 = __toESM(require_element(), 1);
  var import_components145 = __toESM(require_components(), 1);
  var import_i18n211 = __toESM(require_i18n(), 1);
  var import_compose50 = __toESM(require_compose(), 1);
  var import_jsx_runtime475 = __toESM(require_jsx_runtime(), 1);
  var ANIMATION_DURATION2 = 0.25;
  var commonTransition = {
    type: "tween",
    duration: ANIMATION_DURATION2,
    ease: [0.6, 0, 0.4, 1]
  };
  function useHTMLClass(className) {
    (0, import_element296.useEffect)(() => {
      const element = document && document.querySelector(`html:not(.${className})`);
      if (!element) {
        return;
      }
      element.classList.toggle(className);
      return () => {
        element.classList.toggle(className);
      };
    }, [className]);
  }
  var headerVariants = {
    hidden: { opacity: 1, marginTop: -60 },
    visible: { opacity: 1, marginTop: 0 },
    distractionFreeHover: {
      opacity: 1,
      marginTop: 0,
      transition: {
        ...commonTransition,
        delay: 0.2,
        delayChildren: 0.2
      }
    },
    distractionFreeHidden: {
      opacity: 0,
      marginTop: -60
    },
    distractionFreeDisabled: {
      opacity: 0,
      marginTop: 0,
      transition: {
        ...commonTransition,
        delay: 0.8,
        delayChildren: 0.8
      }
    }
  };
  function InterfaceSkeleton({
    isDistractionFree,
    footer,
    header,
    editorNotices,
    sidebar,
    secondarySidebar,
    content,
    actions: actions2,
    labels,
    className
  }, ref) {
    const isMobileViewport = (0, import_compose50.useViewportMatch)("medium", "<");
    const disableMotion = (0, import_compose50.useReducedMotion)();
    const defaultTransition = {
      type: "tween",
      duration: disableMotion ? 0 : ANIMATION_DURATION2,
      ease: [0.6, 0, 0.4, 1]
    };
    useHTMLClass("interface-interface-skeleton__html-container");
    const defaultLabels = {
      /* translators: accessibility text for the top bar landmark region. */
      header: (0, import_i18n211._x)("Header", "header landmark area"),
      /* translators: accessibility text for the content landmark region. */
      body: (0, import_i18n211.__)("Content"),
      /* translators: accessibility text for the secondary sidebar landmark region. */
      secondarySidebar: (0, import_i18n211.__)("Block Library"),
      /* translators: accessibility text for the settings landmark region. */
      sidebar: (0, import_i18n211._x)("Settings", "settings landmark area"),
      /* translators: accessibility text for the publish landmark region. */
      actions: (0, import_i18n211.__)("Publish"),
      /* translators: accessibility text for the footer landmark region. */
      footer: (0, import_i18n211.__)("Footer")
    };
    const mergedLabels = { ...defaultLabels, ...labels };
    return /* @__PURE__ */ (0, import_jsx_runtime475.jsxs)(
      "div",
      {
        ref,
        className: clsx_default(
          className,
          "interface-interface-skeleton",
          !!footer && "has-footer"
        ),
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime475.jsxs)("div", { className: "interface-interface-skeleton__editor", children: [
            /* @__PURE__ */ (0, import_jsx_runtime475.jsx)(import_components145.__unstableAnimatePresence, { initial: false, children: !!header && /* @__PURE__ */ (0, import_jsx_runtime475.jsx)(
              navigable_region_default,
              {
                as: import_components145.__unstableMotion.div,
                className: "interface-interface-skeleton__header",
                ariaLabel: mergedLabels.header,
                initial: isDistractionFree && !isMobileViewport ? "distractionFreeHidden" : "hidden",
                whileHover: isDistractionFree && !isMobileViewport ? "distractionFreeHover" : "visible",
                animate: isDistractionFree && !isMobileViewport ? "distractionFreeDisabled" : "visible",
                exit: isDistractionFree && !isMobileViewport ? "distractionFreeHidden" : "hidden",
                variants: headerVariants,
                transition: defaultTransition,
                children: header
              }
            ) }),
            isDistractionFree && /* @__PURE__ */ (0, import_jsx_runtime475.jsx)("div", { className: "interface-interface-skeleton__header", children: editorNotices }),
            /* @__PURE__ */ (0, import_jsx_runtime475.jsxs)("div", { className: "interface-interface-skeleton__body", children: [
              /* @__PURE__ */ (0, import_jsx_runtime475.jsx)(import_components145.__unstableAnimatePresence, { initial: false, children: !!secondarySidebar && /* @__PURE__ */ (0, import_jsx_runtime475.jsx)(
                navigable_region_default,
                {
                  className: "interface-interface-skeleton__secondary-sidebar",
                  ariaLabel: mergedLabels.secondarySidebar,
                  as: import_components145.__unstableMotion.div,
                  initial: "closed",
                  animate: "open",
                  exit: "closed",
                  variants: {
                    open: { width: "auto" },
                    closed: { width: 0 }
                  },
                  transition: defaultTransition,
                  children: /* @__PURE__ */ (0, import_jsx_runtime475.jsx)(
                    import_components145.__unstableMotion.div,
                    {
                      style: {
                        width: isMobileViewport ? "100vw" : "max-content",
                        height: "100%"
                      },
                      variants: {
                        open: { x: 0 },
                        closed: { x: "-100%" }
                      },
                      transition: defaultTransition,
                      children: secondarySidebar
                    }
                  )
                }
              ) }),
              /* @__PURE__ */ (0, import_jsx_runtime475.jsx)(
                navigable_region_default,
                {
                  className: "interface-interface-skeleton__content",
                  ariaLabel: mergedLabels.body,
                  children: content
                }
              ),
              !!sidebar && /* @__PURE__ */ (0, import_jsx_runtime475.jsx)(
                navigable_region_default,
                {
                  className: "interface-interface-skeleton__sidebar",
                  ariaLabel: mergedLabels.sidebar,
                  children: sidebar
                }
              ),
              !!actions2 && /* @__PURE__ */ (0, import_jsx_runtime475.jsx)(
                navigable_region_default,
                {
                  className: "interface-interface-skeleton__actions",
                  ariaLabel: mergedLabels.actions,
                  children: actions2
                }
              )
            ] })
          ] }),
          !!footer && /* @__PURE__ */ (0, import_jsx_runtime475.jsx)(
            navigable_region_default,
            {
              className: "interface-interface-skeleton__footer",
              ariaLabel: mergedLabels.footer,
              children: footer
            }
          )
        ]
      }
    );
  }
  var interface_skeleton_default = (0, import_element296.forwardRef)(InterfaceSkeleton);

  // packages/editor/build-module/components/commands/index.mjs
  var import_html_entities11 = __toESM(require_html_entities(), 1);

  // packages/editor/build-module/components/pattern-rename-modal/index.mjs
  var import_data73 = __toESM(require_data(), 1);
  var import_patterns6 = __toESM(require_patterns(), 1);
  var import_core_data52 = __toESM(require_core_data(), 1);
  var import_jsx_runtime476 = __toESM(require_jsx_runtime(), 1);
  var { RenamePatternModal } = unlock(import_patterns6.privateApis);
  var modalName = "editor/pattern-rename";
  function PatternRenameModal() {
    const isActive = (0, import_data73.useSelect)(
      (select9) => select9(store3).isModalActive(modalName)
    );
    const { record, postType: postType2 } = (0, import_data73.useSelect)(
      (select9) => {
        if (!isActive) {
          return {};
        }
        const { getCurrentPostType: getCurrentPostType2, getCurrentPostId: getCurrentPostId2 } = select9(store);
        const { getEditedEntityRecord } = select9(import_core_data52.store);
        const _postType = getCurrentPostType2();
        return {
          record: getEditedEntityRecord(
            "postType",
            _postType,
            getCurrentPostId2()
          ),
          postType: _postType
        };
      },
      [isActive]
    );
    const { closeModal: closeModal2 } = (0, import_data73.useDispatch)(store3);
    if (!isActive || postType2 !== PATTERN_POST_TYPE) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime476.jsx)(RenamePatternModal, { onClose: closeModal2, pattern: record });
  }

  // packages/editor/build-module/components/pattern-duplicate-modal/index.mjs
  var import_data74 = __toESM(require_data(), 1);
  var import_patterns7 = __toESM(require_patterns(), 1);
  var import_core_data53 = __toESM(require_core_data(), 1);
  var import_jsx_runtime477 = __toESM(require_jsx_runtime(), 1);
  var { DuplicatePatternModal } = unlock(import_patterns7.privateApis);
  var modalName2 = "editor/pattern-duplicate";
  function PatternDuplicateModal() {
    const isActive = (0, import_data74.useSelect)(
      (select9) => select9(store3).isModalActive(modalName2)
    );
    const { record, postType: postType2 } = (0, import_data74.useSelect)(
      (select9) => {
        if (!isActive) {
          return {};
        }
        const { getCurrentPostType: getCurrentPostType2, getCurrentPostId: getCurrentPostId2 } = select9(store);
        const { getEditedEntityRecord } = select9(import_core_data53.store);
        const _postType = getCurrentPostType2();
        return {
          record: getEditedEntityRecord(
            "postType",
            _postType,
            getCurrentPostId2()
          ),
          postType: _postType
        };
      },
      [isActive]
    );
    const { closeModal: closeModal2 } = (0, import_data74.useDispatch)(store3);
    if (!isActive || postType2 !== PATTERN_POST_TYPE) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime477.jsx)(
      DuplicatePatternModal,
      {
        onClose: closeModal2,
        onSuccess: () => closeModal2(),
        pattern: record
      }
    );
  }

  // packages/editor/build-module/components/commands/index.mjs
  function getTogglePatternEditingCommand({
    disableContentOnlyForPatternsAndTemplateParts,
    stopEditingContentOnlySection,
    updateEditorSettings: updateEditorSettings2
  }) {
    return {
      name: "core/toggle-pattern-editing",
      label: disableContentOnlyForPatternsAndTemplateParts ? (0, import_i18n212.__)("Disable editing all patterns") : (0, import_i18n212.__)("Enable editing all patterns"),
      icon: symbol_default,
      category: "command",
      callback: ({ close }) => {
        const disableContentOnly = !disableContentOnlyForPatternsAndTemplateParts;
        stopEditingContentOnlySection();
        updateEditorSettings2({
          disableContentOnlyForUnsyncedPatterns: disableContentOnly,
          disableContentOnlyForTemplateParts: disableContentOnly
        });
        close();
      }
    };
  }
  function isPatternOrTemplatePartBlock(blockName, attributes) {
    return !!attributes?.metadata?.patternName || blockName === "core/template-part";
  }
  var getEditorCommandLoader = () => function useEditorCommandLoader() {
    const {
      editorMode,
      isListViewOpen,
      showBlockBreadcrumbs,
      isDistractionFree,
      isFocusMode,
      isPreviewMode,
      isViewable,
      isPublished,
      viewLink,
      viewItemLabel,
      isCodeEditingEnabled,
      isRichEditingEnabled,
      isPublishSidebarEnabled: isPublishSidebarEnabled2,
      disableContentOnlyForUnsyncedPatterns,
      disableContentOnlyForTemplateParts
    } = (0, import_data75.useSelect)((select9) => {
      const { get } = select9(import_preferences7.store);
      const {
        isListViewOpened: isListViewOpened2,
        getCurrentPostType: getCurrentPostType2,
        getEditorSettings: getEditorSettings2,
        getEditedPostAttribute: getEditedPostAttribute2,
        isCurrentPostPublished: isCurrentPostPublished2
      } = select9(store);
      const { getSettings: getSettings12 } = select9(import_block_editor24.store);
      const { getPostType } = select9(import_core_data54.store);
      const postType2 = getPostType(getCurrentPostType2());
      return {
        editorMode: get("core", "editorMode") ?? "visual",
        isListViewOpen: isListViewOpened2(),
        showBlockBreadcrumbs: get("core", "showBlockBreadcrumbs"),
        isDistractionFree: get("core", "distractionFree"),
        isFocusMode: get("core", "focusMode"),
        isPreviewMode: getSettings12().isPreviewMode,
        isViewable: postType2?.viewable ?? false,
        isPublished: isCurrentPostPublished2(),
        viewLink: getEditedPostAttribute2("link"),
        viewItemLabel: postType2?.labels?.view_item,
        isCodeEditingEnabled: getEditorSettings2().codeEditingEnabled,
        isRichEditingEnabled: getEditorSettings2().richEditingEnabled,
        isPublishSidebarEnabled: select9(store).isPublishSidebarEnabled(),
        disableContentOnlyForUnsyncedPatterns: !!getEditorSettings2().disableContentOnlyForUnsyncedPatterns,
        disableContentOnlyForTemplateParts: !!getEditorSettings2().disableContentOnlyForTemplateParts
      };
    }, []);
    const { getActiveComplementaryArea: getActiveComplementaryArea2 } = (0, import_data75.useSelect)(store3);
    const { toggle } = (0, import_data75.useDispatch)(import_preferences7.store);
    const { createInfoNotice } = (0, import_data75.useDispatch)(import_notices17.store);
    const {
      __unstableSaveForPreview: __unstableSaveForPreview2,
      setIsListViewOpened: setIsListViewOpened2,
      switchEditorMode: switchEditorMode2,
      toggleDistractionFree: toggleDistractionFree2,
      toggleSpotlightMode: toggleSpotlightMode2,
      toggleTopToolbar: toggleTopToolbar2,
      updateEditorSettings: updateEditorSettings2
    } = (0, import_data75.useDispatch)(store);
    const { stopEditingContentOnlySection } = unlock(
      (0, import_data75.useDispatch)(import_block_editor24.store)
    );
    const { openModal: openModal2, enableComplementaryArea: enableComplementaryArea2, disableComplementaryArea: disableComplementaryArea2 } = (0, import_data75.useDispatch)(store3);
    const { getCurrentPostId: getCurrentPostId2 } = (0, import_data75.useSelect)(store);
    const allowSwitchEditorMode = isCodeEditingEnabled && isRichEditingEnabled;
    if (isPreviewMode) {
      return { commands: [], isLoading: false };
    }
    const commands = [];
    const disableContentOnlyForPatternsAndTemplateParts = disableContentOnlyForUnsyncedPatterns && disableContentOnlyForTemplateParts;
    commands.push({
      name: "core/open-shortcut-help",
      label: (0, import_i18n212.__)("Keyboard shortcuts"),
      category: "view",
      callback: ({ close }) => {
        close();
        openModal2("editor/keyboard-shortcut-help");
      }
    });
    commands.push({
      name: "core/toggle-distraction-free",
      label: isDistractionFree ? (0, import_i18n212.__)("Exit Distraction free") : (0, import_i18n212.__)("Enter Distraction free"),
      category: "command",
      callback: ({ close }) => {
        toggleDistractionFree2();
        close();
      }
    });
    commands.push({
      name: "core/open-preferences",
      label: (0, import_i18n212.__)("Editor preferences"),
      category: "view",
      callback: ({ close }) => {
        close();
        openModal2("editor/preferences");
      }
    });
    commands.push({
      name: "core/toggle-spotlight-mode",
      label: isFocusMode ? (0, import_i18n212.__)("Exit Spotlight mode") : (0, import_i18n212.__)("Enter Spotlight mode"),
      category: "command",
      callback: ({ close }) => {
        toggleSpotlightMode2();
        close();
      }
    });
    commands.push({
      name: "core/toggle-list-view",
      label: isListViewOpen ? (0, import_i18n212.__)("Close List View") : (0, import_i18n212.__)("Open List View"),
      icon: list_view_default,
      category: "command",
      callback: ({ close }) => {
        setIsListViewOpened2(!isListViewOpen);
        close();
        createInfoNotice(
          isListViewOpen ? (0, import_i18n212.__)("List View off.") : (0, import_i18n212.__)("List View on."),
          {
            id: "core/editor/toggle-list-view/notice",
            type: "snackbar"
          }
        );
      }
    });
    commands.push({
      name: "core/toggle-top-toolbar",
      label: (0, import_i18n212.__)("Top toolbar"),
      category: "command",
      callback: ({ close }) => {
        toggleTopToolbar2();
        close();
      }
    });
    commands.push(
      getTogglePatternEditingCommand({
        disableContentOnlyForPatternsAndTemplateParts,
        stopEditingContentOnlySection,
        updateEditorSettings: updateEditorSettings2
      })
    );
    if (allowSwitchEditorMode) {
      commands.push({
        name: "core/toggle-code-editor",
        label: editorMode === "visual" ? (0, import_i18n212.__)("Open code editor") : (0, import_i18n212.__)("Exit code editor"),
        icon: code_default,
        category: "command",
        callback: ({ close }) => {
          switchEditorMode2(
            editorMode === "visual" ? "text" : "visual"
          );
          close();
        }
      });
    }
    commands.push({
      name: "core/toggle-breadcrumbs",
      label: showBlockBreadcrumbs ? (0, import_i18n212.__)("Hide block breadcrumbs") : (0, import_i18n212.__)("Show block breadcrumbs"),
      category: "command",
      callback: ({ close }) => {
        toggle("core", "showBlockBreadcrumbs");
        close();
        createInfoNotice(
          showBlockBreadcrumbs ? (0, import_i18n212.__)("Breadcrumbs hidden.") : (0, import_i18n212.__)("Breadcrumbs visible."),
          {
            id: "core/editor/toggle-breadcrumbs/notice",
            type: "snackbar"
          }
        );
      }
    });
    commands.push({
      name: "core/open-settings-sidebar",
      label: (0, import_i18n212.__)("Show or hide the Settings panel"),
      icon: (0, import_i18n212.isRTL)() ? drawer_left_default : drawer_right_default,
      category: "command",
      callback: ({ close }) => {
        const activeSidebar = getActiveComplementaryArea2("core");
        close();
        if (activeSidebar === "edit-post/document") {
          disableComplementaryArea2("core");
        } else {
          enableComplementaryArea2("core", "edit-post/document");
        }
      }
    });
    commands.push({
      name: "core/open-block-inspector",
      label: (0, import_i18n212.__)("Show or hide the Block settings panel"),
      icon: block_default_default,
      category: "command",
      callback: ({ close }) => {
        const activeSidebar = getActiveComplementaryArea2("core");
        close();
        if (activeSidebar === "edit-post/block") {
          disableComplementaryArea2("core");
        } else {
          enableComplementaryArea2("core", "edit-post/block");
        }
      }
    });
    commands.push({
      name: "core/toggle-publish-sidebar",
      label: isPublishSidebarEnabled2 ? (0, import_i18n212.__)("Disable pre-publish checks") : (0, import_i18n212.__)("Enable pre-publish checks"),
      icon: format_list_bullets_default,
      category: "command",
      callback: ({ close }) => {
        close();
        toggle("core", "isPublishSidebarEnabled");
        createInfoNotice(
          isPublishSidebarEnabled2 ? (0, import_i18n212.__)("Pre-publish checks disabled.") : (0, import_i18n212.__)("Pre-publish checks enabled."),
          {
            id: "core/editor/publish-sidebar/notice",
            type: "snackbar"
          }
        );
      }
    });
    if (isViewable) {
      commands.push({
        name: "core/preview-link",
        label: (0, import_i18n212.__)("Preview in a new tab"),
        icon: external_default,
        category: "view",
        callback: async ({ close }) => {
          close();
          const postId2 = getCurrentPostId2();
          const link = await __unstableSaveForPreview2();
          window.open(link, `wp-preview-${postId2}`);
        }
      });
      if (isPublished && viewLink) {
        commands.push({
          name: "core/view-link",
          label: viewItemLabel || (0, import_i18n212.__)("View post"),
          icon: external_default,
          category: "view",
          callback: ({ close }) => {
            close();
            window.open(viewLink, "_blank");
          }
        });
      }
    }
    return {
      commands,
      isLoading: false
    };
  };
  var getPatternEditingContextualCommands = () => function usePatternEditingContextualCommands({ search }) {
    const {
      disableContentOnlyForPatternsAndTemplateParts,
      hasPatternOrTemplatePartSelection,
      isPreviewMode
    } = (0, import_data75.useSelect)((select9) => {
      const {
        getBlockAttributes: getBlockAttributes2,
        getBlockName: getBlockName2,
        getBlockParents,
        getSelectedBlockClientId: getSelectedBlockClientId2,
        getSelectedBlockClientIds,
        getSettings: getSettings12
      } = select9(import_block_editor24.store);
      const { getEditorSettings: getEditorSettings2 } = select9(store);
      const editorSettings2 = getEditorSettings2();
      const selectedBlockClientId = getSelectedBlockClientId2();
      const selectedBlockClientIds = getSelectedBlockClientIds();
      const clientIdsToCheck = selectedBlockClientId && selectedBlockClientIds.length === 1 ? [
        selectedBlockClientId,
        ...getBlockParents(selectedBlockClientId, true)
      ] : [];
      return {
        disableContentOnlyForPatternsAndTemplateParts: !!editorSettings2.disableContentOnlyForUnsyncedPatterns && !!editorSettings2.disableContentOnlyForTemplateParts,
        hasPatternOrTemplatePartSelection: clientIdsToCheck.some(
          (clientId) => isPatternOrTemplatePartBlock(
            getBlockName2(clientId),
            getBlockAttributes2(clientId)
          )
        ),
        isPreviewMode: getSettings12().isPreviewMode
      };
    }, []);
    const { updateEditorSettings: updateEditorSettings2 } = (0, import_data75.useDispatch)(store);
    const { stopEditingContentOnlySection } = unlock(
      (0, import_data75.useDispatch)(import_block_editor24.store)
    );
    if (search || !hasPatternOrTemplatePartSelection && !disableContentOnlyForPatternsAndTemplateParts || isPreviewMode) {
      return { isLoading: false, commands: [] };
    }
    return {
      isLoading: false,
      commands: [
        getTogglePatternEditingCommand({
          disableContentOnlyForPatternsAndTemplateParts,
          stopEditingContentOnlySection,
          updateEditorSettings: updateEditorSettings2
        })
      ]
    };
  };
  var getEditedEntityContextualCommands = () => function useEditedEntityContextualCommands() {
    const { postType: postType2 } = (0, import_data75.useSelect)((select9) => {
      const { getCurrentPostType: getCurrentPostType2 } = select9(store);
      return {
        postType: getCurrentPostType2()
      };
    }, []);
    const { openModal: openModal2 } = (0, import_data75.useDispatch)(store3);
    const commands = [];
    if (postType2 === PATTERN_POST_TYPE) {
      commands.push({
        name: "core/rename-pattern",
        label: (0, import_i18n212.__)("Rename pattern"),
        icon: pencil_default,
        category: "edit",
        callback: ({ close }) => {
          openModal2(modalName);
          close();
        }
      });
      commands.push({
        name: "core/duplicate-pattern",
        label: (0, import_i18n212.__)("Duplicate pattern"),
        icon: symbol_default,
        category: "command",
        callback: ({ close }) => {
          openModal2(modalName2);
          close();
        }
      });
    }
    return { isLoading: false, commands };
  };
  var getPageContentFocusCommands = () => function usePageContentFocusCommands() {
    const {
      onNavigateToEntityRecord,
      goBack,
      templateId: templateId2,
      isPreviewMode,
      canEditTemplate
    } = (0, import_data75.useSelect)((select9) => {
      const {
        getRenderingMode: getRenderingMode2,
        getEditorSettings: _getEditorSettings,
        getCurrentTemplateId: getCurrentTemplateId2
      } = unlock(select9(store));
      const editorSettings2 = _getEditorSettings();
      const _templateId = getCurrentTemplateId2();
      return {
        isTemplateHidden: getRenderingMode2() === "post-only",
        onNavigateToEntityRecord: editorSettings2.onNavigateToEntityRecord,
        getEditorSettings: _getEditorSettings,
        goBack: editorSettings2.onNavigateToPreviousEntityRecord,
        templateId: _templateId,
        isPreviewMode: editorSettings2.isPreviewMode,
        canEditTemplate: !!_templateId && select9(import_core_data54.store).canUser("update", {
          kind: "postType",
          name: "wp_template",
          id: _templateId
        })
      };
    }, []);
    const { editedRecord: template2, hasResolved } = (0, import_core_data54.useEntityRecord)(
      "postType",
      "wp_template",
      templateId2
    );
    if (isPreviewMode) {
      return { isLoading: false, commands: [] };
    }
    const commands = [];
    if (templateId2 && hasResolved && canEditTemplate) {
      commands.push({
        name: "core/switch-to-template-focus",
        label: (0, import_i18n212.sprintf)(
          /* translators: %s: template title */
          (0, import_i18n212.__)("Edit template: %s"),
          (0, import_html_entities11.decodeEntities)(template2.title)
        ),
        icon: layout_default,
        category: "edit",
        callback: ({ close }) => {
          onNavigateToEntityRecord({
            postId: templateId2,
            postType: "wp_template"
          });
          close();
        }
      });
    }
    if (!!goBack) {
      commands.push({
        name: "core/switch-to-previous-entity",
        label: (0, import_i18n212.__)("Back"),
        category: "view",
        callback: ({ close }) => {
          goBack();
          close();
        }
      });
    }
    return { isLoading: false, commands };
  };
  var getManipulateDocumentCommands = () => function useManipulateDocumentCommands() {
    const { postType: postType2, postId: postId2 } = (0, import_data75.useSelect)((select9) => {
      const { getCurrentPostId: getCurrentPostId2, getCurrentPostType: getCurrentPostType2 } = select9(store);
      return {
        postType: getCurrentPostType2(),
        postId: getCurrentPostId2()
      };
    }, []);
    const { editedRecord: template2, hasResolved } = (0, import_core_data54.useEntityRecord)(
      "postType",
      postType2,
      postId2
    );
    const { revertTemplate: revertTemplate3 } = unlock((0, import_data75.useDispatch)(store));
    if (!hasResolved || ![TEMPLATE_PART_POST_TYPE, TEMPLATE_POST_TYPE].includes(
      postType2
    )) {
      return { isLoading: true, commands: [] };
    }
    const commands = [];
    if (isTemplateRevertable(template2)) {
      const label = template2.type === TEMPLATE_POST_TYPE ? (0, import_i18n212.sprintf)(
        /* translators: %s: template title */
        (0, import_i18n212.__)("Reset template: %s"),
        (0, import_html_entities11.decodeEntities)(template2.title)
      ) : (0, import_i18n212.sprintf)(
        /* translators: %s: template part title */
        (0, import_i18n212.__)("Reset template part: %s"),
        (0, import_html_entities11.decodeEntities)(template2.title)
      );
      commands.push({
        name: "core/reset-template",
        label,
        icon: (0, import_i18n212.isRTL)() ? rotate_right_default : rotate_left_default,
        category: "command",
        callback: ({ close }) => {
          revertTemplate3(template2);
          close();
        }
      });
    }
    return {
      isLoading: !hasResolved,
      commands
    };
  };
  function useCommands() {
    (0, import_commands.useCommandLoader)({
      name: "core/editor/edit-ui",
      hook: getEditorCommandLoader()
    });
    (0, import_commands.useCommandLoader)({
      name: "core/editor/contextual-commands",
      hook: getEditedEntityContextualCommands(),
      context: "entity-edit"
    });
    (0, import_commands.useCommandLoader)({
      name: "core/editor/pattern-editing-contextual-commands",
      hook: getPatternEditingContextualCommands(),
      context: "block-selection-edit"
    });
    (0, import_commands.useCommandLoader)({
      name: "core/editor/page-content-focus",
      hook: getPageContentFocusCommands(),
      context: "entity-edit"
    });
    (0, import_commands.useCommandLoader)({
      name: "core/edit-site/manipulate-document",
      hook: getManipulateDocumentCommands()
    });
  }

  // packages/editor/build-module/components/provider/use-upload-save-lock.mjs
  var import_data76 = __toESM(require_data(), 1);
  var import_element297 = __toESM(require_element(), 1);
  var import_upload_media = __toESM(require_upload_media(), 1);
  var LOCK_NAME = "upload-in-progress";
  function useUploadSaveLock() {
    const isUploading = (0, import_data76.useSelect)(
      (select9) => select9(import_upload_media.store).isUploading(),
      []
    );
    const {
      lockPostSaving: lockPostSaving2,
      unlockPostSaving: unlockPostSaving2,
      lockPostAutosaving: lockPostAutosaving2,
      unlockPostAutosaving: unlockPostAutosaving2
    } = (0, import_data76.useDispatch)(store);
    (0, import_element297.useEffect)(() => {
      if (isUploading) {
        lockPostSaving2(LOCK_NAME);
        lockPostAutosaving2(LOCK_NAME);
      } else {
        unlockPostSaving2(LOCK_NAME);
        unlockPostAutosaving2(LOCK_NAME);
      }
      return () => {
        unlockPostSaving2(LOCK_NAME);
        unlockPostAutosaving2(LOCK_NAME);
      };
    }, [
      isUploading,
      lockPostSaving2,
      unlockPostSaving2,
      lockPostAutosaving2,
      unlockPostAutosaving2
    ]);
  }

  // packages/editor/build-module/components/provider/use-network-reconnect.mjs
  var import_element298 = __toESM(require_element(), 1);
  var import_data77 = __toESM(require_data(), 1);
  var import_upload_media2 = __toESM(require_upload_media(), 1);
  function useNetworkReconnect() {
    const isEnabled = window.__clientSideMediaProcessing;
    const registry = (0, import_data77.useRegistry)();
    (0, import_element298.useEffect)(() => {
      if (!isEnabled) {
        return;
      }
      const handleOffline = () => {
        unlock(registry.dispatch(import_upload_media2.store)).pauseQueue();
      };
      const handleOnline = () => {
        unlock(registry.dispatch(import_upload_media2.store)).resumeQueue();
      };
      window.addEventListener("offline", handleOffline);
      window.addEventListener("online", handleOnline);
      return () => {
        window.removeEventListener("offline", handleOffline);
        window.removeEventListener("online", handleOnline);
      };
    }, [isEnabled, registry]);
  }

  // packages/editor/build-module/components/block-removal-warnings/index.mjs
  var import_i18n213 = __toESM(require_i18n(), 1);
  var import_block_editor25 = __toESM(require_block_editor(), 1);
  var import_data78 = __toESM(require_data(), 1);
  var import_element299 = __toESM(require_element(), 1);
  var import_jsx_runtime478 = __toESM(require_jsx_runtime(), 1);
  var { BlockRemovalWarningModal } = unlock(import_block_editor25.privateApis);
  var TEMPLATE_BLOCKS = [
    "core/post-content",
    "core/post-template",
    "core/query"
  ];
  var BLOCK_REMOVAL_RULES = [
    {
      // Template blocks.
      // The warning is only shown when a user manipulates templates or template parts.
      postTypes: ["wp_template", "wp_template_part"],
      callback(removedBlocks) {
        const removedPostContentBlocks = removedBlocks.filter(
          ({ name: name2 }) => name2 === "core/post-content"
        );
        if (removedPostContentBlocks.length) {
          return {
            description: (0, import_i18n213.__)(
              "This block displays the content of posts and pages using this template."
            ),
            warning: (0, import_i18n213.__)(
              "If you delete it, posts or pages using this template will not display any content."
            ),
            subtext: (0, import_i18n213.__)("Visitors will see blank pages."),
            requireConfirmation: true
          };
        }
        const removedTemplateBlocks = removedBlocks.filter(
          ({ name: name2 }) => TEMPLATE_BLOCKS.includes(name2)
        );
        if (removedTemplateBlocks.length) {
          return (0, import_i18n213._n)(
            "Deleting this block will stop your post or page content from displaying on this template. It is not recommended.",
            "Some of the deleted blocks will stop your post or page content from displaying on this template. It is not recommended.",
            removedBlocks.length
          );
        }
      }
    },
    {
      // Pattern overrides.
      // The warning is only shown when the user edits a pattern.
      postTypes: ["wp_block"],
      callback(removedBlocks) {
        const removedBlocksWithOverrides = removedBlocks.filter(
          ({ attributes }) => attributes?.metadata?.bindings && Object.values(attributes.metadata.bindings).some(
            (binding) => binding.source === "core/pattern-overrides"
          )
        );
        if (removedBlocksWithOverrides.length) {
          return (0, import_i18n213._n)(
            "The deleted block allows instance overrides. Removing it may result in content not displaying where this pattern is used. Are you sure you want to proceed?",
            "Some of the deleted blocks allow instance overrides. Removing them may result in content not displaying where this pattern is used. Are you sure you want to proceed?",
            removedBlocks.length
          );
        }
      }
    }
  ];
  function BlockRemovalWarnings() {
    const currentPostType = (0, import_data78.useSelect)(
      (select9) => select9(store).getCurrentPostType(),
      []
    );
    const removalRulesForPostType = (0, import_element299.useMemo)(
      () => BLOCK_REMOVAL_RULES.filter(
        (rule) => rule.postTypes.includes(currentPostType)
      ),
      [currentPostType]
    );
    if (!removalRulesForPostType) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime478.jsx)(BlockRemovalWarningModal, { rules: removalRulesForPostType });
  }

  // packages/editor/build-module/components/start-page-options/index.mjs
  var import_components146 = __toESM(require_components(), 1);
  var import_i18n214 = __toESM(require_i18n(), 1);
  var import_element300 = __toESM(require_element(), 1);
  var import_block_editor26 = __toESM(require_block_editor(), 1);
  var import_data79 = __toESM(require_data(), 1);
  var import_core_data55 = __toESM(require_core_data(), 1);
  var import_blocks15 = __toESM(require_blocks(), 1);
  var import_preferences8 = __toESM(require_preferences(), 1);
  var import_jsx_runtime479 = __toESM(require_jsx_runtime(), 1);
  var { getPopulatedCategories, searchItems: searchItems2 } = unlock(
    import_block_editor26.privateApis
  );
  var ALL_PATTERNS_CATEGORY = {
    name: "allPatterns",
    label: (0, import_i18n214._x)("All", "patterns")
  };
  function useStartPatterns() {
    const { blockPatternsWithPostContentBlockType, postType: postType2 } = (0, import_data79.useSelect)(
      (select9) => {
        const { getPatternsByBlockTypes, getBlocksByName } = select9(import_block_editor26.store);
        const { getCurrentPostType: getCurrentPostType2, getRenderingMode: getRenderingMode2 } = select9(store);
        const rootClientId = getRenderingMode2() === "post-only" ? "" : getBlocksByName("core/post-content")?.[0];
        return {
          blockPatternsWithPostContentBlockType: getPatternsByBlockTypes(
            "core/post-content",
            rootClientId
          ),
          postType: getCurrentPostType2()
        };
      },
      []
    );
    return (0, import_element300.useMemo)(() => {
      if (!blockPatternsWithPostContentBlockType?.length) {
        return [];
      }
      return blockPatternsWithPostContentBlockType.filter((pattern) => {
        return postType2 === "page" && !pattern.postTypes || Array.isArray(pattern.postTypes) && pattern.postTypes.includes(postType2);
      });
    }, [postType2, blockPatternsWithPostContentBlockType]);
  }
  function useStartPatternCategories(startPatterns) {
    const { registeredCategories, userCategories } = (0, import_data79.useSelect)((select9) => {
      return {
        // The block editor settings already merge the categories from the
        // REST API with the ones added through `block_editor_settings_all`.
        registeredCategories: select9(import_block_editor26.store).getSettings().__experimentalBlockPatternCategories,
        userCategories: select9(import_core_data55.store).getUserPatternCategories()
      };
    }, []);
    return (0, import_element300.useMemo)(() => {
      const allCategories = [...registeredCategories ?? []];
      userCategories?.forEach((userCategory) => {
        if (!allCategories.some(
          ({ name: name2 }) => name2 === userCategory.name
        )) {
          allCategories.push(userCategory);
        }
      });
      const categories = getPopulatedCategories(
        startPatterns,
        allCategories
      );
      if (categories.every(({ name: name2 }) => name2 === "uncategorized")) {
        return [];
      }
      return [ALL_PATTERNS_CATEGORY, ...categories];
    }, [startPatterns, registeredCategories, userCategories]);
  }
  function PatternSelection({ blockPatterns, onChoosePattern }) {
    const { editEntityRecord } = (0, import_data79.useDispatch)(import_core_data55.store);
    const { postType: postType2, postId: postId2 } = (0, import_data79.useSelect)((select9) => {
      const { getCurrentPostType: getCurrentPostType2, getCurrentPostId: getCurrentPostId2 } = select9(store);
      return {
        postType: getCurrentPostType2(),
        postId: getCurrentPostId2()
      };
    }, []);
    return /* @__PURE__ */ (0, import_jsx_runtime479.jsx)(
      import_block_editor26.__experimentalBlockPatternsList,
      {
        blockPatterns,
        onClickPattern: (_pattern, blocks) => {
          editEntityRecord("postType", postType2, postId2, {
            blocks,
            content: ({ blocks: blocksForSerialization = [] }) => (0, import_blocks15.__unstableSerializeAndClean)(blocksForSerialization)
          });
          onChoosePattern();
        }
      }
    );
  }
  function StartPageOptionsModal({ onClose }) {
    const [showStartPatterns, setShowStartPatterns] = (0, import_element300.useState)(true);
    const [selectedCategory, setSelectedCategory] = (0, import_element300.useState)(
      ALL_PATTERNS_CATEGORY.name
    );
    const [searchValue, setSearchValue] = (0, import_element300.useState)("");
    const { set: setPreference } = (0, import_data79.useDispatch)(import_preferences8.store);
    const startPatterns = useStartPatterns();
    const patternCategories = useStartPatternCategories(startPatterns);
    const hasCategories = patternCategories.length > 0;
    const hasStartPattern = startPatterns.length > 0;
    const activeCategory = patternCategories.some(
      ({ name: name2 }) => name2 === selectedCategory
    ) ? selectedCategory : ALL_PATTERNS_CATEGORY.name;
    const filteredStartPatterns = (0, import_element300.useMemo)(() => {
      let patterns2 = startPatterns;
      if (activeCategory !== ALL_PATTERNS_CATEGORY.name) {
        patterns2 = patterns2.filter(
          (pattern) => activeCategory === "uncategorized" ? !pattern.categories?.some(
            (patternCategory) => patternCategories.some(
              ({ name: name2 }) => name2 === patternCategory
            )
          ) : pattern.categories?.includes(activeCategory)
        );
      }
      if (searchValue) {
        patterns2 = searchItems2(patterns2, searchValue);
      }
      return patterns2;
    }, [startPatterns, activeCategory, patternCategories, searchValue]);
    if (!hasStartPattern) {
      return null;
    }
    function handleClose() {
      onClose();
      setPreference("core", "enableChoosePatternModal", showStartPatterns);
    }
    return /* @__PURE__ */ (0, import_jsx_runtime479.jsxs)(
      import_components146.Modal,
      {
        className: "editor-start-page-options__modal",
        title: (0, import_i18n214.__)("Choose a pattern"),
        isFullScreen: true,
        onRequestClose: handleClose,
        children: [
          hasCategories ? /* @__PURE__ */ (0, import_jsx_runtime479.jsxs)(
            tabs_exports.Root,
            {
              orientation: "vertical",
              value: activeCategory,
              onValueChange: setSelectedCategory,
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime479.jsxs)(
                  Stack,
                  {
                    direction: "column",
                    gap: "lg",
                    className: "editor-start-page-options__sidebar",
                    children: [
                      /* @__PURE__ */ (0, import_jsx_runtime479.jsx)(
                        import_components146.SearchControl,
                        {
                          onChange: setSearchValue,
                          value: searchValue,
                          label: (0, import_i18n214.__)("Search"),
                          placeholder: (0, import_i18n214.__)("Search")
                        }
                      ),
                      /* @__PURE__ */ (0, import_jsx_runtime479.jsx)(tabs_exports.List, { children: patternCategories.map(({ name: name2, label }) => /* @__PURE__ */ (0, import_jsx_runtime479.jsx)(tabs_exports.Tab, { value: name2, children: label }, name2)) })
                    ]
                  }
                ),
                patternCategories.map(({ name: name2 }) => /* @__PURE__ */ (0, import_jsx_runtime479.jsx)(
                  tabs_exports.Panel,
                  {
                    value: name2,
                    tabIndex: -1,
                    className: "editor-start-page-options__modal-content has-pattern-categories",
                    children: filteredStartPatterns.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime479.jsx)(
                      PatternSelection,
                      {
                        blockPatterns: filteredStartPatterns,
                        onChoosePattern: handleClose
                      }
                    ) : /* @__PURE__ */ (0, import_jsx_runtime479.jsx)(
                      Text,
                      {
                        render: /* @__PURE__ */ (0, import_jsx_runtime479.jsx)("p", {}),
                        className: "editor-start-page-options__no-results",
                        children: (0, import_i18n214.__)("No results found.")
                      }
                    )
                  },
                  name2
                ))
              ]
            }
          ) : /* @__PURE__ */ (0, import_jsx_runtime479.jsx)("div", { className: "editor-start-page-options__modal-content", children: /* @__PURE__ */ (0, import_jsx_runtime479.jsx)(
            PatternSelection,
            {
              blockPatterns: filteredStartPatterns,
              onChoosePattern: handleClose
            }
          ) }),
          /* @__PURE__ */ (0, import_jsx_runtime479.jsx)(
            import_components146.Flex,
            {
              className: "editor-start-page-options__modal__actions",
              justify: "flex-start",
              expanded: false,
              children: /* @__PURE__ */ (0, import_jsx_runtime479.jsx)(import_components146.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime479.jsx)(
                import_components146.CheckboxControl,
                {
                  checked: showStartPatterns,
                  label: (0, import_i18n214.__)(
                    "Always show starter patterns for new pages"
                  ),
                  onChange: (newValue) => {
                    setShowStartPatterns(newValue);
                  }
                }
              ) })
            }
          )
        ]
      }
    );
  }
  function StartPageOptions() {
    const [isOpen2, setIsOpen] = (0, import_element300.useState)(false);
    const { isEditedPostEmpty: isEditedPostEmpty2 } = (0, import_data79.useSelect)(store);
    const { getEntityRecordNonTransientEdits } = (0, import_data79.useSelect)(import_core_data55.store);
    const { isModalActive: isModalActive2 } = (0, import_data79.useSelect)(store3);
    const { enabled, postType: postType2, postId: postId2 } = (0, import_data79.useSelect)((select9) => {
      const { getCurrentPostId: getCurrentPostId2, getCurrentPostType: getCurrentPostType2 } = select9(store);
      const choosePatternModalEnabled = select9(import_preferences8.store).get(
        "core",
        "enableChoosePatternModal"
      );
      const currentPostType = getCurrentPostType2();
      return {
        postType: currentPostType,
        postId: getCurrentPostId2(),
        enabled: choosePatternModalEnabled && ATTACHMENT_POST_TYPE !== currentPostType && TEMPLATE_POST_TYPE !== currentPostType && TEMPLATE_PART_POST_TYPE !== currentPostType
      };
    }, []);
    (0, import_element300.useEffect)(() => {
      const hasEdits = Object.keys(
        getEntityRecordNonTransientEdits(
          "postType",
          postType2,
          postId2
        ) ?? {}
      ).length > 0;
      const isFreshPage = !hasEdits && isEditedPostEmpty2();
      const isPreferencesModalActive = isModalActive2("editor/preferences");
      if (!enabled || !isFreshPage || isPreferencesModalActive) {
        return;
      }
      setIsOpen(true);
    }, [
      enabled,
      postType2,
      postId2,
      getEntityRecordNonTransientEdits,
      isEditedPostEmpty2,
      isModalActive2
    ]);
    if (!isOpen2) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime479.jsx)(StartPageOptionsModal, { onClose: () => setIsOpen(false) });
  }

  // packages/editor/build-module/components/keyboard-shortcut-help-modal/index.mjs
  var import_components147 = __toESM(require_components(), 1);
  var import_i18n216 = __toESM(require_i18n(), 1);
  var import_keyboard_shortcuts3 = __toESM(require_keyboard_shortcuts(), 1);
  var import_data81 = __toESM(require_data(), 1);

  // packages/editor/build-module/components/keyboard-shortcut-help-modal/config.mjs
  var import_i18n215 = __toESM(require_i18n(), 1);
  var textFormattingShortcuts = [
    {
      keyCombination: { modifier: "primary", character: "b" },
      description: (0, import_i18n215.__)("Make the selected text bold.")
    },
    {
      keyCombination: { modifier: "primary", character: "i" },
      description: (0, import_i18n215.__)("Make the selected text italic.")
    },
    {
      keyCombination: { modifier: "primary", character: "k" },
      description: (0, import_i18n215.__)("Convert the selected text into a link.")
    },
    {
      keyCombination: { modifier: "primaryShift", character: "k" },
      description: (0, import_i18n215.__)("Remove a link.")
    },
    {
      keyCombination: { character: "[[" },
      description: (0, import_i18n215.__)("Insert a link to a post or page.")
    },
    {
      keyCombination: { modifier: "primary", character: "u" },
      description: (0, import_i18n215.__)("Underline the selected text.")
    },
    {
      keyCombination: { modifier: "access", character: "d" },
      description: (0, import_i18n215.__)("Strikethrough the selected text.")
    },
    {
      keyCombination: { modifier: "access", character: "x" },
      description: (0, import_i18n215.__)("Make the selected text inline code.")
    },
    {
      keyCombination: {
        modifier: "access",
        character: "0"
      },
      aliases: [
        {
          modifier: "access",
          character: "7"
        }
      ],
      description: (0, import_i18n215.__)("Convert the current heading to a paragraph.")
    },
    {
      keyCombination: { modifier: "access", character: "1-6" },
      description: (0, import_i18n215.__)(
        "Convert the current paragraph or heading to a heading of level 1 to 6."
      )
    },
    {
      keyCombination: { modifier: "primaryShift", character: "SPACE" },
      description: (0, import_i18n215.__)("Add non breaking space.")
    }
  ];

  // packages/editor/build-module/components/keyboard-shortcut-help-modal/shortcut.mjs
  var import_element301 = __toESM(require_element(), 1);
  var import_keycodes6 = __toESM(require_keycodes(), 1);
  var import_jsx_runtime480 = __toESM(require_jsx_runtime(), 1);
  function KeyCombination({ keyCombination, forceAriaLabel }) {
    const shortcut = keyCombination.modifier ? import_keycodes6.displayShortcutList[keyCombination.modifier](
      keyCombination.character
    ) : keyCombination.character;
    const ariaLabel = keyCombination.modifier ? import_keycodes6.shortcutAriaLabel[keyCombination.modifier](
      keyCombination.character
    ) : keyCombination.character;
    return /* @__PURE__ */ (0, import_jsx_runtime480.jsx)(
      "kbd",
      {
        className: "editor-keyboard-shortcut-help-modal__shortcut-key-combination",
        "aria-label": forceAriaLabel || ariaLabel,
        children: (Array.isArray(shortcut) ? shortcut : [shortcut]).map(
          (character, index3) => {
            if (character === "+") {
              return /* @__PURE__ */ (0, import_jsx_runtime480.jsx)(import_element301.Fragment, { children: character }, index3);
            }
            return /* @__PURE__ */ (0, import_jsx_runtime480.jsx)(
              "kbd",
              {
                className: "editor-keyboard-shortcut-help-modal__shortcut-key",
                children: character
              },
              index3
            );
          }
        )
      }
    );
  }
  function Shortcut({ description, keyCombination, aliases = [], ariaLabel }) {
    return /* @__PURE__ */ (0, import_jsx_runtime480.jsxs)(import_jsx_runtime480.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime480.jsx)("div", { className: "editor-keyboard-shortcut-help-modal__shortcut-description", children: description }),
      /* @__PURE__ */ (0, import_jsx_runtime480.jsxs)("div", { className: "editor-keyboard-shortcut-help-modal__shortcut-term", children: [
        /* @__PURE__ */ (0, import_jsx_runtime480.jsx)(
          KeyCombination,
          {
            keyCombination,
            forceAriaLabel: ariaLabel
          }
        ),
        aliases.map((alias, index3) => /* @__PURE__ */ (0, import_jsx_runtime480.jsx)(
          KeyCombination,
          {
            keyCombination: alias,
            forceAriaLabel: ariaLabel
          },
          index3
        ))
      ] })
    ] });
  }
  var shortcut_default = Shortcut;

  // packages/editor/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.mjs
  var import_data80 = __toESM(require_data(), 1);
  var import_keyboard_shortcuts2 = __toESM(require_keyboard_shortcuts(), 1);
  var import_jsx_runtime481 = __toESM(require_jsx_runtime(), 1);
  function DynamicShortcut({ name: name2 }) {
    const { keyCombination, description, aliases } = (0, import_data80.useSelect)(
      (select9) => {
        const {
          getShortcutKeyCombination,
          getShortcutDescription,
          getShortcutAliases
        } = select9(import_keyboard_shortcuts2.store);
        return {
          keyCombination: getShortcutKeyCombination(name2),
          aliases: getShortcutAliases(name2),
          description: getShortcutDescription(name2)
        };
      },
      [name2]
    );
    if (!keyCombination) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime481.jsx)(
      shortcut_default,
      {
        keyCombination,
        description,
        aliases
      }
    );
  }
  var dynamic_shortcut_default = DynamicShortcut;

  // packages/editor/build-module/components/keyboard-shortcut-help-modal/index.mjs
  var import_jsx_runtime482 = __toESM(require_jsx_runtime(), 1);
  var KEYBOARD_SHORTCUT_HELP_MODAL_NAME = "editor/keyboard-shortcut-help";
  var ShortcutList = ({ shortcuts }) => (
    /*
     * Disable reason: The `list` ARIA role is redundant but
     * Safari+VoiceOver won't announce the list otherwise.
     */
    /* eslint-disable jsx-a11y/no-redundant-roles */
    /* @__PURE__ */ (0, import_jsx_runtime482.jsx)(
      "ul",
      {
        className: "editor-keyboard-shortcut-help-modal__shortcut-list",
        role: "list",
        children: shortcuts.map((shortcut, index3) => /* @__PURE__ */ (0, import_jsx_runtime482.jsx)(
          "li",
          {
            className: "editor-keyboard-shortcut-help-modal__shortcut",
            children: typeof shortcut === "string" ? /* @__PURE__ */ (0, import_jsx_runtime482.jsx)(dynamic_shortcut_default, { name: shortcut }) : /* @__PURE__ */ (0, import_jsx_runtime482.jsx)(shortcut_default, { ...shortcut })
          },
          index3
        ))
      }
    )
  );
  var ShortcutSection = ({ title, shortcuts, className }) => /* @__PURE__ */ (0, import_jsx_runtime482.jsxs)(
    "section",
    {
      className: clsx_default(
        "editor-keyboard-shortcut-help-modal__section",
        className
      ),
      children: [
        !!title && /* @__PURE__ */ (0, import_jsx_runtime482.jsx)("h2", { className: "editor-keyboard-shortcut-help-modal__section-title", children: title }),
        /* @__PURE__ */ (0, import_jsx_runtime482.jsx)(ShortcutList, { shortcuts })
      ]
    }
  );
  var ShortcutCategorySection = ({
    title,
    categoryName,
    additionalShortcuts = []
  }) => {
    const categoryShortcuts = (0, import_data81.useSelect)(
      (select9) => {
        return select9(import_keyboard_shortcuts3.store).getCategoryShortcuts(
          categoryName
        );
      },
      [categoryName]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime482.jsx)(
      ShortcutSection,
      {
        title,
        shortcuts: categoryShortcuts.concat(additionalShortcuts)
      }
    );
  };
  function KeyboardShortcutHelpModal() {
    const isModalActive2 = (0, import_data81.useSelect)(
      (select9) => select9(store3).isModalActive(
        KEYBOARD_SHORTCUT_HELP_MODAL_NAME
      ),
      []
    );
    const { openModal: openModal2, closeModal: closeModal2 } = (0, import_data81.useDispatch)(store3);
    const toggleModal = () => {
      if (isModalActive2) {
        closeModal2();
      } else {
        openModal2(KEYBOARD_SHORTCUT_HELP_MODAL_NAME);
      }
    };
    (0, import_keyboard_shortcuts3.useShortcut)("core/editor/keyboard-shortcuts", toggleModal);
    if (!isModalActive2) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime482.jsxs)(
      import_components147.Modal,
      {
        className: "editor-keyboard-shortcut-help-modal",
        title: (0, import_i18n216.__)("Keyboard shortcuts"),
        closeButtonLabel: (0, import_i18n216.__)("Close"),
        onRequestClose: toggleModal,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime482.jsx)(
            ShortcutSection,
            {
              className: "editor-keyboard-shortcut-help-modal__main-shortcuts",
              shortcuts: ["core/editor/keyboard-shortcuts"]
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime482.jsx)(
            ShortcutCategorySection,
            {
              title: (0, import_i18n216.__)("Global shortcuts"),
              categoryName: "global"
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime482.jsx)(
            ShortcutCategorySection,
            {
              title: (0, import_i18n216.__)("Selection shortcuts"),
              categoryName: "selection"
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime482.jsx)(
            ShortcutCategorySection,
            {
              title: (0, import_i18n216.__)("Block shortcuts"),
              categoryName: "block",
              additionalShortcuts: [
                {
                  keyCombination: { character: "/" },
                  description: (0, import_i18n216.__)(
                    "Change the block type after adding a new paragraph."
                  ),
                  /* translators: The forward-slash character. e.g. '/'. */
                  ariaLabel: (0, import_i18n216.__)("Forward-slash")
                }
              ]
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime482.jsx)(
            ShortcutSection,
            {
              title: (0, import_i18n216.__)("Text formatting"),
              shortcuts: textFormattingShortcuts
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime482.jsx)(
            ShortcutCategorySection,
            {
              title: (0, import_i18n216.__)("List View shortcuts"),
              categoryName: "list-view"
            }
          )
        ]
      }
    );
  }
  var keyboard_shortcut_help_modal_default = KeyboardShortcutHelpModal;

  // packages/editor/build-module/components/start-template-options/index.mjs
  var import_components148 = __toESM(require_components(), 1);
  var import_i18n217 = __toESM(require_i18n(), 1);
  var import_element302 = __toESM(require_element(), 1);
  var import_block_editor27 = __toESM(require_block_editor(), 1);
  var import_data82 = __toESM(require_data(), 1);
  var import_blocks16 = __toESM(require_blocks(), 1);
  var import_core_data56 = __toESM(require_core_data(), 1);
  var import_jsx_runtime483 = __toESM(require_jsx_runtime(), 1);
  function useFallbackTemplateContent(slug, isCustom = false) {
    return (0, import_data82.useSelect)(
      (select9) => {
        const { getEntityRecord, getDefaultTemplateId } = select9(import_core_data56.store);
        const templateId2 = getDefaultTemplateId({
          slug,
          is_custom: isCustom,
          ignore_empty: true
        });
        return templateId2 ? getEntityRecord("postType", TEMPLATE_POST_TYPE, templateId2)?.content?.raw : void 0;
      },
      [slug, isCustom]
    );
  }
  function useStartPatterns2(fallbackContent) {
    const { slug, patterns: patterns2 } = (0, import_data82.useSelect)((select9) => {
      const { getCurrentPostType: getCurrentPostType2, getCurrentPostId: getCurrentPostId2 } = select9(store);
      const { getEntityRecord, getBlockPatterns } = select9(import_core_data56.store);
      const postId2 = getCurrentPostId2();
      const postType2 = getCurrentPostType2();
      const record = getEntityRecord("postType", postType2, postId2);
      return {
        slug: record.slug,
        patterns: getBlockPatterns()
      };
    }, []);
    const currentThemeStylesheet = (0, import_data82.useSelect)(
      (select9) => select9(import_core_data56.store).getCurrentTheme().stylesheet
    );
    function injectThemeAttributeInBlockTemplateContent2(block) {
      if (block.innerBlocks.find(
        (innerBlock) => innerBlock.name === "core/template-part"
      )) {
        block.innerBlocks = block.innerBlocks.map((innerBlock) => {
          if (innerBlock.name === "core/template-part" && innerBlock.attributes.theme === void 0) {
            innerBlock.attributes.theme = currentThemeStylesheet;
          }
          return innerBlock;
        });
      }
      if (block.name === "core/template-part" && block.attributes.theme === void 0) {
        block.attributes.theme = currentThemeStylesheet;
      }
      return block;
    }
    return (0, import_element302.useMemo)(() => {
      return [
        {
          name: "fallback",
          blocks: (0, import_blocks16.parse)(fallbackContent),
          title: (0, import_i18n217.__)("Fallback content")
        },
        ...patterns2.filter((pattern) => {
          return Array.isArray(pattern.templateTypes) && pattern.templateTypes.some(
            (templateType) => slug.startsWith(templateType)
          );
        }).map((pattern) => {
          return {
            ...pattern,
            blocks: (0, import_blocks16.parse)(pattern.content).map(
              (block) => injectThemeAttributeInBlockTemplateContent2(block)
            )
          };
        })
      ];
    }, [fallbackContent, slug, patterns2]);
  }
  function PatternSelection2({ fallbackContent, onChoosePattern, postType: postType2 }) {
    const [, , onChange] = (0, import_core_data56.useEntityBlockEditor)("postType", postType2);
    const blockPatterns = useStartPatterns2(fallbackContent);
    return /* @__PURE__ */ (0, import_jsx_runtime483.jsx)(
      import_block_editor27.__experimentalBlockPatternsList,
      {
        blockPatterns,
        onClickPattern: (pattern, blocks) => {
          onChange(blocks, { selection: void 0 });
          onChoosePattern();
        }
      }
    );
  }
  function StartModal({ slug, isCustom, onClose, postType: postType2 }) {
    const fallbackContent = useFallbackTemplateContent(slug, isCustom);
    if (!fallbackContent) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime483.jsxs)(
      import_components148.Modal,
      {
        className: "editor-start-template-options__modal",
        title: (0, import_i18n217.__)("Choose a pattern"),
        closeLabel: (0, import_i18n217.__)("Cancel"),
        focusOnMount: "firstElement",
        onRequestClose: onClose,
        isFullScreen: true,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime483.jsx)("div", { className: "editor-start-template-options__modal-content", children: /* @__PURE__ */ (0, import_jsx_runtime483.jsx)(
            PatternSelection2,
            {
              fallbackContent,
              slug,
              isCustom,
              postType: postType2,
              onChoosePattern: () => {
                onClose();
              }
            }
          ) }),
          /* @__PURE__ */ (0, import_jsx_runtime483.jsx)(
            import_components148.Flex,
            {
              className: "editor-start-template-options__modal__actions",
              justify: "flex-end",
              expanded: false,
              children: /* @__PURE__ */ (0, import_jsx_runtime483.jsx)(import_components148.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime483.jsx)(
                import_components148.Button,
                {
                  __next40pxDefaultSize: true,
                  variant: "tertiary",
                  onClick: onClose,
                  children: (0, import_i18n217.__)("Skip")
                }
              ) })
            }
          )
        ]
      }
    );
  }
  function StartTemplateOptions() {
    const [isClosed, setIsClosed] = (0, import_element302.useState)(false);
    const { shouldOpenModal, slug, isCustom, postType: postType2, postId: postId2 } = (0, import_data82.useSelect)(
      (select9) => {
        const { getCurrentPostType: getCurrentPostType2, getCurrentPostId: getCurrentPostId2 } = select9(store);
        const _postType = getCurrentPostType2();
        const _postId = getCurrentPostId2();
        const { getEditedEntityRecord, getEntityRecordNonTransientEdits } = select9(import_core_data56.store);
        const templateRecord = getEditedEntityRecord(
          "postType",
          _postType,
          _postId
        );
        const hasEdits = Object.keys(
          getEntityRecordNonTransientEdits(
            "postType",
            _postType,
            _postId
          ) ?? {}
        ).length > 0;
        return {
          shouldOpenModal: !hasEdits && "" === templateRecord.content && TEMPLATE_POST_TYPE === _postType,
          slug: templateRecord.slug,
          isCustom: templateRecord.is_custom,
          postType: _postType,
          postId: _postId
        };
      },
      []
    );
    (0, import_element302.useEffect)(() => {
      setIsClosed(false);
    }, [postType2, postId2]);
    if (!shouldOpenModal || isClosed) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime483.jsx)(
      StartModal,
      {
        slug,
        isCustom,
        postType: postType2,
        onClose: () => setIsClosed(true)
      }
    );
  }

  // packages/editor/build-module/components/global-keyboard-shortcuts/index.mjs
  var import_keyboard_shortcuts4 = __toESM(require_keyboard_shortcuts(), 1);
  var import_data83 = __toESM(require_data(), 1);
  var import_block_editor28 = __toESM(require_block_editor(), 1);
  var { usesNativeUndo } = unlock(import_block_editor28.privateApis);
  function EditorKeyboardShortcuts() {
    const isModeToggleDisabled = (0, import_data83.useSelect)((select9) => {
      const { richEditingEnabled, codeEditingEnabled } = select9(store).getEditorSettings();
      return !richEditingEnabled || !codeEditingEnabled;
    }, []);
    const { getBlockSelectionStart: getBlockSelectionStart2 } = (0, import_data83.useSelect)(import_block_editor28.store);
    const { getActiveComplementaryArea: getActiveComplementaryArea2 } = (0, import_data83.useSelect)(store3);
    const { enableComplementaryArea: enableComplementaryArea2, disableComplementaryArea: disableComplementaryArea2 } = (0, import_data83.useDispatch)(store3);
    const {
      redo: redo2,
      undo: undo2,
      savePost: savePost2,
      setIsListViewOpened: setIsListViewOpened2,
      switchEditorMode: switchEditorMode2,
      toggleDistractionFree: toggleDistractionFree2
    } = (0, import_data83.useDispatch)(store);
    const {
      isEditedPostDirty: isEditedPostDirty2,
      isPostSavingLocked: isPostSavingLocked2,
      isListViewOpened: isListViewOpened2,
      getEditorMode: getEditorMode2,
      isSavingNonPostEntityChanges: isSavingNonPostEntityChanges2
    } = (0, import_data83.useSelect)(store);
    (0, import_keyboard_shortcuts4.useShortcut)(
      "core/editor/toggle-mode",
      () => {
        switchEditorMode2(
          getEditorMode2() === "visual" ? "text" : "visual"
        );
      },
      {
        isDisabled: isModeToggleDisabled
      }
    );
    (0, import_keyboard_shortcuts4.useShortcut)("core/editor/toggle-distraction-free", () => {
      toggleDistractionFree2();
    });
    (0, import_keyboard_shortcuts4.useShortcut)("core/editor/undo", (event) => {
      if (usesNativeUndo(event)) {
        return;
      }
      undo2();
      event.preventDefault();
    });
    (0, import_keyboard_shortcuts4.useShortcut)("core/editor/redo", (event) => {
      if (usesNativeUndo(event)) {
        return;
      }
      redo2();
      event.preventDefault();
    });
    (0, import_keyboard_shortcuts4.useShortcut)("core/editor/save", (event) => {
      event.preventDefault();
      if (isPostSavingLocked2() || isSavingNonPostEntityChanges2()) {
        return;
      }
      if (!isEditedPostDirty2()) {
        return;
      }
      savePost2();
    });
    (0, import_keyboard_shortcuts4.useShortcut)("core/editor/toggle-list-view", (event) => {
      if (!isListViewOpened2()) {
        event.preventDefault();
        setIsListViewOpened2(true);
      }
    });
    (0, import_keyboard_shortcuts4.useShortcut)("core/editor/toggle-sidebar", (event) => {
      event.preventDefault();
      const isEditorSidebarOpened = [
        "edit-post/document",
        "edit-post/block"
      ].includes(getActiveComplementaryArea2("core"));
      if (isEditorSidebarOpened) {
        disableComplementaryArea2("core");
      } else {
        const sidebarToOpen = getBlockSelectionStart2() ? "edit-post/block" : "edit-post/document";
        enableComplementaryArea2("core", sidebarToOpen);
      }
    });
    return null;
  }

  // packages/editor/build-module/components/global-keyboard-shortcuts/register-shortcuts.mjs
  var import_element303 = __toESM(require_element(), 1);
  var import_data84 = __toESM(require_data(), 1);
  var import_i18n218 = __toESM(require_i18n(), 1);
  var import_block_editor29 = __toESM(require_block_editor(), 1);
  var import_keyboard_shortcuts5 = __toESM(require_keyboard_shortcuts(), 1);
  var import_keycodes7 = __toESM(require_keycodes(), 1);
  var import_jsx_runtime484 = __toESM(require_jsx_runtime(), 1);
  function EditorKeyboardShortcutsRegister() {
    const { registerShortcut } = (0, import_data84.useDispatch)(import_keyboard_shortcuts5.store);
    (0, import_element303.useEffect)(() => {
      registerShortcut({
        name: "core/editor/toggle-mode",
        category: "global",
        description: (0, import_i18n218.__)("Switch between visual editor and code editor."),
        keyCombination: {
          modifier: "secondary",
          character: "m"
        }
      });
      registerShortcut({
        name: "core/editor/save",
        category: "global",
        description: (0, import_i18n218.__)("Save your changes."),
        keyCombination: {
          modifier: "primary",
          character: "s"
        }
      });
      registerShortcut({
        name: "core/editor/undo",
        category: "global",
        description: (0, import_i18n218.__)("Undo your last changes."),
        keyCombination: {
          modifier: "primary",
          character: "z"
        }
      });
      registerShortcut({
        name: "core/editor/redo",
        category: "global",
        description: (0, import_i18n218.__)("Redo your last undo."),
        keyCombination: {
          modifier: "primaryShift",
          character: "z"
        },
        // Disable on Apple OS because it conflicts with the browser's
        // history shortcut. It's a fine alias for both Windows and Linux.
        // Since there's no conflict for Ctrl+Shift+Z on both Windows and
        // Linux, we keep it as the default for consistency.
        aliases: (0, import_keycodes7.isAppleOS)() ? [] : [
          {
            modifier: "primary",
            character: "y"
          }
        ]
      });
      registerShortcut({
        name: "core/editor/toggle-list-view",
        category: "global",
        description: (0, import_i18n218.__)("Show or hide the List View."),
        keyCombination: {
          modifier: "access",
          character: "o"
        }
      });
      registerShortcut({
        name: "core/editor/toggle-distraction-free",
        category: "global",
        description: (0, import_i18n218.__)("Enter or exit distraction free mode."),
        keyCombination: {
          modifier: "primaryShift",
          character: "\\"
        }
      });
      registerShortcut({
        name: "core/editor/toggle-sidebar",
        category: "global",
        description: (0, import_i18n218.__)("Show or hide the Settings panel."),
        keyCombination: {
          modifier: "primaryShift",
          character: ","
        }
      });
      registerShortcut({
        name: "core/editor/keyboard-shortcuts",
        category: "main",
        description: (0, import_i18n218.__)("Display these keyboard shortcuts."),
        keyCombination: {
          modifier: "access",
          character: "h"
        }
      });
      registerShortcut({
        name: "core/editor/new-note",
        category: "block",
        description: (0, import_i18n218.__)("Add a new note."),
        keyCombination: {
          modifier: "primaryAlt",
          character: "m"
        }
      });
      registerShortcut({
        name: "core/editor/next-region",
        category: "global",
        description: (0, import_i18n218.__)("Navigate to the next part of the editor."),
        keyCombination: {
          modifier: "ctrl",
          character: "`"
        },
        aliases: [
          {
            modifier: "access",
            character: "n"
          }
        ]
      });
      registerShortcut({
        name: "core/editor/previous-region",
        category: "global",
        description: (0, import_i18n218.__)("Navigate to the previous part of the editor."),
        keyCombination: {
          modifier: "ctrlShift",
          character: "`"
        },
        aliases: [
          {
            modifier: "access",
            character: "p"
          },
          {
            modifier: "ctrlShift",
            character: "~"
          }
        ]
      });
    }, [registerShortcut]);
    return /* @__PURE__ */ (0, import_jsx_runtime484.jsx)(import_block_editor29.BlockEditorKeyboardShortcuts.Register, {});
  }
  var register_shortcuts_default = EditorKeyboardShortcutsRegister;

  // packages/editor/build-module/components/template-part-menu-items/index.mjs
  var import_data87 = __toESM(require_data(), 1);
  var import_block_editor32 = __toESM(require_block_editor(), 1);

  // packages/editor/build-module/components/template-part-menu-items/convert-to-regular.mjs
  var import_data85 = __toESM(require_data(), 1);
  var import_block_editor30 = __toESM(require_block_editor(), 1);
  var import_core_data57 = __toESM(require_core_data(), 1);
  var import_components149 = __toESM(require_components(), 1);
  var import_i18n219 = __toESM(require_i18n(), 1);
  var import_html_entities12 = __toESM(require_html_entities(), 1);
  var import_element304 = __toESM(require_element(), 1);
  var import_jsx_runtime485 = __toESM(require_jsx_runtime(), 1);
  function ConvertToRegularBlocks({ clientId, onClose }) {
    const [showConfirmDialog, setShowConfirmDialog] = (0, import_element304.useState)(false);
    const { getBlocks: getBlocks2 } = (0, import_data85.useSelect)(import_block_editor30.store);
    const { replaceBlocks: replaceBlocks2 } = (0, import_data85.useDispatch)(import_block_editor30.store);
    const { canRemove, templatePartTitle } = (0, import_data85.useSelect)(
      (select9) => {
        const { canRemoveBlock, getBlock: getBlock2 } = select9(import_block_editor30.store);
        const { getEntityRecord, getCurrentTheme } = select9(import_core_data57.store);
        const block = getBlock2(clientId);
        const { slug, theme: theme2 } = block?.attributes ?? {};
        const themeSlug = theme2 || getCurrentTheme()?.stylesheet;
        const templatePartId = themeSlug && slug ? `${themeSlug}//${slug}` : null;
        const entity = templatePartId ? getEntityRecord(
          "postType",
          "wp_template_part",
          templatePartId
        ) : null;
        return {
          canRemove: canRemoveBlock(clientId),
          templatePartTitle: entity?.title?.rendered ? (0, import_html_entities12.decodeEntities)(entity.title.rendered) : null
        };
      },
      [clientId]
    );
    if (!canRemove) {
      return null;
    }
    const title = templatePartTitle ? (0, import_i18n219.sprintf)(
      /* translators: %s: template part title, e.g. "Header" */
      (0, import_i18n219.__)("Detach %s?"),
      templatePartTitle
    ) : (0, import_i18n219.__)("Detach template part?");
    const message2 = templatePartTitle ? (0, import_i18n219.sprintf)(
      /* translators: %s: template part title, e.g. "Header" */
      (0, import_i18n219.__)(
        "The blocks will be separated from the original template part and will be fully editable. Future changes to the %s template part will not apply here."
      ),
      templatePartTitle
    ) : (0, import_i18n219.__)(
      "The blocks will be separated from the original template part and will be fully editable. Future changes to the template part will not apply here."
    );
    return /* @__PURE__ */ (0, import_jsx_runtime485.jsxs)(import_jsx_runtime485.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime485.jsx)(import_components149.MenuItem, { onClick: () => setShowConfirmDialog(true), children: (0, import_i18n219.__)("Detach") }),
      /* @__PURE__ */ (0, import_jsx_runtime485.jsx)(
        import_components149.__experimentalConfirmDialog,
        {
          isOpen: showConfirmDialog,
          onConfirm: () => {
            replaceBlocks2(clientId, getBlocks2(clientId));
            onClose();
          },
          onCancel: () => setShowConfirmDialog(false),
          confirmButtonText: (0, import_i18n219.__)("Detach"),
          size: "medium",
          title,
          __experimentalHideHeader: false,
          children: message2
        }
      )
    ] });
  }

  // packages/editor/build-module/components/template-part-menu-items/convert-to-template-part.mjs
  var import_data86 = __toESM(require_data(), 1);
  var import_block_editor31 = __toESM(require_block_editor(), 1);
  var import_components150 = __toESM(require_components(), 1);
  var import_blocks17 = __toESM(require_blocks(), 1);
  var import_i18n220 = __toESM(require_i18n(), 1);
  var import_element305 = __toESM(require_element(), 1);
  var import_notices18 = __toESM(require_notices(), 1);
  var import_core_data58 = __toESM(require_core_data(), 1);
  var import_jsx_runtime486 = __toESM(require_jsx_runtime(), 1);
  function ConvertToTemplatePart({ clientIds, blocks }) {
    const [isModalOpen, setIsModalOpen] = (0, import_element305.useState)(false);
    const { replaceBlocks: replaceBlocks2 } = (0, import_data86.useDispatch)(import_block_editor31.store);
    const { createSuccessNotice } = (0, import_data86.useDispatch)(import_notices18.store);
    const { isBlockBasedTheme, canCreate } = (0, import_data86.useSelect)((select9) => {
      return {
        isBlockBasedTheme: select9(import_core_data58.store).getCurrentTheme()?.is_block_theme,
        canCreate: select9(import_block_editor31.store).canInsertBlockType(
          "core/template-part"
        )
      };
    }, []);
    if (!isBlockBasedTheme || !canCreate) {
      return null;
    }
    const onConvert = async (templatePart) => {
      replaceBlocks2(
        clientIds,
        (0, import_blocks17.createBlock)("core/template-part", {
          slug: templatePart.slug,
          theme: templatePart.theme
        })
      );
      createSuccessNotice((0, import_i18n220.__)("Template part created."), {
        type: "snackbar"
      });
    };
    return /* @__PURE__ */ (0, import_jsx_runtime486.jsxs)(import_jsx_runtime486.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime486.jsx)(
        import_components150.MenuItem,
        {
          icon: symbol_filled_default,
          onClick: () => {
            setIsModalOpen(true);
          },
          "aria-expanded": isModalOpen,
          "aria-haspopup": "dialog",
          children: (0, import_i18n220.__)("Create template part")
        }
      ),
      isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime486.jsx)(
        CreateTemplatePartModal,
        {
          closeModal: () => {
            setIsModalOpen(false);
          },
          blocks,
          onCreate: onConvert
        }
      )
    ] });
  }

  // packages/editor/build-module/components/template-part-menu-items/index.mjs
  var import_jsx_runtime487 = __toESM(require_jsx_runtime(), 1);
  function TemplatePartMenuItems() {
    return /* @__PURE__ */ (0, import_jsx_runtime487.jsx)(import_block_editor32.BlockSettingsMenuControls, { children: ({ selectedClientIds, onClose }) => /* @__PURE__ */ (0, import_jsx_runtime487.jsx)(
      TemplatePartConverterMenuItem,
      {
        clientIds: selectedClientIds,
        onClose
      }
    ) });
  }
  function TemplatePartConverterMenuItem({ clientIds, onClose }) {
    const { blocks } = (0, import_data87.useSelect)(
      (select9) => {
        const { getBlocksByClientId: getBlocksByClientId2 } = select9(import_block_editor32.store);
        return {
          blocks: getBlocksByClientId2(clientIds)
        };
      },
      [clientIds]
    );
    if (blocks.length === 1 && blocks[0]?.name === "core/template-part") {
      return /* @__PURE__ */ (0, import_jsx_runtime487.jsx)(
        ConvertToRegularBlocks,
        {
          clientId: clientIds[0],
          onClose
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime487.jsx)(ConvertToTemplatePart, { clientIds, blocks });
  }

  // packages/editor/build-module/components/media/media-editor-modal.mjs
  var import_block_editor33 = __toESM(require_block_editor(), 1);
  var import_data89 = __toESM(require_data(), 1);
  var import_element307 = __toESM(require_element(), 1);

  // packages/editor/build-module/components/post-fields/index.mjs
  var import_element306 = __toESM(require_element(), 1);
  var import_data88 = __toESM(require_data(), 1);
  function usePostFields({
    postType: postType2
  }) {
    const { registerPostTypeSchema: registerPostTypeSchema2 } = unlock((0, import_data88.useDispatch)(store));
    (0, import_element306.useEffect)(() => {
      registerPostTypeSchema2(postType2);
    }, [registerPostTypeSchema2, postType2]);
    const { fields: fields2 } = (0, import_data88.useSelect)(
      (select9) => {
        const { getEntityFields: getEntityFields3 } = unlock(select9(store));
        return {
          fields: getEntityFields3("postType", postType2)
        };
      },
      [postType2]
    );
    return fields2;
  }
  var post_fields_default = usePostFields;

  // packages/editor/build-module/components/media/media-editor-modal.mjs
  var import_jsx_runtime488 = __toESM(require_jsx_runtime(), 1);
  var { MediaEditorModal: MediaEditorModal2, store: mediaEditorStore2 } = unlock(
    privateApis2
  );
  function ratioToNumber(ratio) {
    if (ratio === void 0 || ratio === null) {
      return NaN;
    }
    const [a2, b2, ...rest] = String(ratio).split("/").map(Number);
    if (a2 <= 0 || b2 <= 0 || Number.isNaN(a2) || Number.isNaN(b2) || rest.length) {
      return NaN;
    }
    return b2 ? a2 / b2 : a2;
  }
  function aspectRatioPresetFromSettings({ name: name2, ratio } = {}) {
    const value = ratioToNumber(ratio);
    if (!name2 || !Number.isFinite(value) || value <= 0) {
      return null;
    }
    return {
      label: name2,
      value
    };
  }
  function MediaEditorModalMount() {
    const isOpen2 = (0, import_data89.useSelect)(
      (select9) => select9(mediaEditorStore2).isOpen(),
      []
    );
    if (!isOpen2) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime488.jsx)(MediaEditorModalContent, {});
  }
  function MediaEditorModalContent() {
    const fields2 = post_fields_default({ postType: "attachment" });
    const [defaultRatios, themeRatios, showDefaultRatios] = (0, import_block_editor33.useSettings)(
      "dimensions.aspectRatios.default",
      "dimensions.aspectRatios.theme",
      "dimensions.defaultAspectRatios"
    );
    const aspectRatioPresets = (0, import_element307.useMemo)(() => {
      const hasAspectRatioSettings = Array.isArray(defaultRatios) || Array.isArray(themeRatios) || typeof showDefaultRatios === "boolean";
      if (!hasAspectRatioSettings) {
        return void 0;
      }
      const candidateRatios = [
        ...showDefaultRatios && Array.isArray(defaultRatios) ? defaultRatios : [],
        ...Array.isArray(themeRatios) ? themeRatios : []
      ];
      const presets = candidateRatios.map(aspectRatioPresetFromSettings).filter(Boolean);
      if (presets.length || showDefaultRatios === false) {
        return presets;
      }
      return void 0;
    }, [defaultRatios, themeRatios, showDefaultRatios]);
    return /* @__PURE__ */ (0, import_jsx_runtime488.jsx)(
      MediaEditorModal2,
      {
        fields: fields2,
        aspectRatioPresets
      }
    );
  }

  // packages/editor/build-module/components/provider/index.mjs
  var import_jsx_runtime489 = __toESM(require_jsx_runtime(), 1);
  var { ExperimentalBlockEditorProvider } = unlock(import_block_editor34.privateApis);
  var { PatternsMenuItems } = unlock(import_patterns8.privateApis);
  var noop8 = () => {
  };
  var NON_CONTEXTUAL_POST_TYPES = [
    "wp_block",
    "wp_navigation",
    "wp_template_part"
  ];
  function useBlockEditorProps(post2, template2, mode) {
    const revisionBlocks = useRevisionBlocks();
    const rootLevelPost = mode === "template-locked" ? "template" : "post";
    const [postBlocks, onInput, onChange] = (0, import_core_data59.useEntityBlockEditor)(
      "postType",
      post2.type,
      { id: post2.id }
    );
    const [templateBlocks, onInputTemplate, onChangeTemplate] = (0, import_core_data59.useEntityBlockEditor)("postType", template2?.type, {
      id: template2?.id
    });
    const maybeNavigationBlocks = (0, import_element308.useMemo)(() => {
      if (post2.type === "wp_navigation") {
        return [
          (0, import_blocks18.createBlock)("core/navigation", {
            ref: post2.id,
            // As the parent editor is locked with `templateLock`, the template locking
            // must be explicitly "unset" on the block itself to allow the user to modify
            // the block's content.
            templateLock: false
          })
        ];
      }
    }, [post2.type, post2.id]);
    const blocks = (0, import_element308.useMemo)(() => {
      if (maybeNavigationBlocks) {
        return maybeNavigationBlocks;
      }
      if (rootLevelPost === "template") {
        return templateBlocks;
      }
      return postBlocks;
    }, [maybeNavigationBlocks, rootLevelPost, templateBlocks, postBlocks]);
    if (revisionBlocks !== null) {
      return [revisionBlocks, noop8, noop8];
    }
    const disableRootLevelChanges = !!template2 && mode === "template-locked" || post2.type === "wp_navigation";
    if (disableRootLevelChanges) {
      return [blocks, noop8, noop8];
    }
    return [
      blocks,
      rootLevelPost === "post" ? onInput : onInputTemplate,
      rootLevelPost === "post" ? onChange : onChangeTemplate
    ];
  }
  var ExperimentalEditorProvider = with_registry_provider_default(
    ({
      post: post2,
      settings,
      recovery,
      initialEdits,
      initialViewport,
      renderingMode: renderingMode2,
      children,
      BlockEditorProviderComponent = ExperimentalBlockEditorProvider,
      __unstableTemplate: template2
    }) => {
      const hasTemplate = !!template2;
      const {
        editorSettings: editorSettings2,
        selection,
        isReady: isReady2,
        mode,
        defaultMode,
        postTypeEntities,
        isInRevisionsMode,
        currentRevisionId
      } = (0, import_data90.useSelect)(
        (select9) => {
          const {
            getEditorSettings: getEditorSettings2,
            getRenderingMode: getRenderingMode2,
            __unstableIsEditorReady: __unstableIsEditorReady2,
            getDefaultRenderingMode: getDefaultRenderingMode2,
            isRevisionsMode: _isRevisionsMode,
            getCurrentRevisionId: _getCurrentRevisionId
          } = unlock(select9(store));
          const { getEntitiesConfig, getEntityRecordEdits } = select9(import_core_data59.store);
          const _mode = getRenderingMode2();
          const _defaultMode = renderingMode2 ?? getDefaultRenderingMode2(post2.type);
          const hasResolvedDefaultMode = _defaultMode === "template-locked" ? hasTemplate : _defaultMode !== void 0;
          const isRenderingModeReady = _defaultMode !== void 0;
          const entityEdits = getEntityRecordEdits(
            "postType",
            post2.type,
            post2.id
          );
          return {
            editorSettings: getEditorSettings2(),
            isReady: __unstableIsEditorReady2(),
            mode: isRenderingModeReady ? _mode : void 0,
            defaultMode: hasResolvedDefaultMode ? _defaultMode : void 0,
            selection: entityEdits?.selection,
            postTypeEntities: post2.type === "wp_template" ? getEntitiesConfig("postType") : null,
            isInRevisionsMode: _isRevisionsMode(),
            currentRevisionId: _getCurrentRevisionId()
          };
        },
        [post2.type, post2.id, hasTemplate, renderingMode2]
      );
      const shouldRenderTemplate = hasTemplate && mode !== "post-only";
      const rootLevelPost = shouldRenderTemplate ? template2 : post2;
      const defaultBlockContext = (0, import_element308.useMemo)(() => {
        const postContext = {};
        if (post2.type === "wp_template") {
          if (post2.slug === "page") {
            postContext.postType = "page";
          } else if (post2.slug === "single") {
            postContext.postType = "post";
          } else if (post2.slug.split("-")[0] === "single") {
            const postTypeNames = postTypeEntities?.map((entity) => entity.name) || [];
            const match3 = post2.slug.match(
              `^single-(${postTypeNames.join("|")})(?:-.+)?$`
            );
            if (match3) {
              postContext.postType = match3[1];
            }
          }
        } else if (!NON_CONTEXTUAL_POST_TYPES.includes(rootLevelPost.type) || shouldRenderTemplate) {
          postContext.postId = post2.id;
          postContext.postType = post2.type;
        }
        return {
          ...postContext,
          templateSlug: rootLevelPost.type === "wp_template" ? rootLevelPost.slug : void 0
        };
      }, [
        shouldRenderTemplate,
        post2.id,
        post2.type,
        post2.slug,
        rootLevelPost.type,
        rootLevelPost.slug,
        postTypeEntities
      ]);
      const { id, type } = rootLevelPost;
      const blockEditorSettings = use_block_editor_settings_default(
        editorSettings2,
        type,
        id,
        mode
      );
      const [blocks, onInput, onChange] = useBlockEditorProps(
        post2,
        template2,
        mode
      );
      const initialCanvasWidth = getCanvasWidthByDeviceType(
        initialViewport,
        blockEditorSettings.__experimentalFeatures?.viewport
      );
      const {
        updatePostLock: updatePostLock2,
        setupEditor: setupEditor2,
        updateEditorSettings: updateEditorSettings2,
        setCurrentTemplateId: setCurrentTemplateId2,
        setEditedPost: setEditedPost2,
        setRenderingMode: setRenderingMode2,
        setCanvasWidth: setCanvasWidth2
      } = unlock((0, import_data90.useDispatch)(store));
      const { editEntityRecord } = (0, import_data90.useDispatch)(import_core_data59.store);
      const registry = (0, import_data90.useRegistry)();
      const onChangeSelection = (0, import_element308.useCallback)(
        (newSelection) => {
          editEntityRecord(
            "postType",
            post2.type,
            post2.id,
            { selection: newSelection },
            { undoIgnore: true }
          );
        },
        [editEntityRecord, post2.type, post2.id]
      );
      (0, import_element308.useLayoutEffect)(() => {
        if (recovery) {
          return;
        }
        updatePostLock2(settings.postLock);
        if (!registry.select(store).__unstableIsEditorReady()) {
          setupEditor2(post2, initialEdits, settings.template);
        }
      }, []);
      useAutosaveNotice({ post: post2, recovery, settings });
      (0, import_element308.useEffect)(() => {
        setEditedPost2(post2.type, post2.id);
        return () => setEditedPost2(null, null);
      }, [post2.type, post2.id, setEditedPost2]);
      (0, import_element308.useEffect)(() => {
        if (initialViewport) {
          setCanvasWidth2(initialCanvasWidth);
        }
      }, [
        post2.type,
        post2.id,
        initialViewport,
        initialCanvasWidth,
        setCanvasWidth2
      ]);
      (0, import_element308.useLayoutEffect)(() => {
        updateEditorSettings2({ ...settings, renderingMode: renderingMode2 });
        return () => updateEditorSettings2({ renderingMode: void 0 });
      }, [settings, renderingMode2, updateEditorSettings2]);
      (0, import_element308.useEffect)(() => {
        setCurrentTemplateId2(template2?.id);
      }, [template2?.id, setCurrentTemplateId2]);
      (0, import_element308.useEffect)(() => {
        if (defaultMode) {
          setRenderingMode2(defaultMode);
        }
      }, [defaultMode, setRenderingMode2]);
      useHideBlocksFromInserter(post2.type, mode);
      useCommands();
      useUploadSaveLock();
      useNetworkReconnect();
      if (!isReady2 || !mode) {
        return null;
      }
      return /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(import_core_data59.EntityProvider, { kind: "root", type: "site", children: /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(
        import_core_data59.EntityProvider,
        {
          kind: "postType",
          type: post2.type,
          id: post2.id,
          revisionId: currentRevisionId ?? void 0,
          children: /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(import_block_editor34.BlockContextProvider, { value: defaultBlockContext, children: /* @__PURE__ */ (0, import_jsx_runtime489.jsxs)(
            BlockEditorProviderComponent,
            {
              value: blocks,
              onChange,
              onInput,
              selection: isInRevisionsMode ? void 0 : selection,
              onChangeSelection: isInRevisionsMode ? noop8 : onChangeSelection,
              settings: blockEditorSettings,
              useSubRegistry: false,
              children: [
                children,
                !settings.isPreviewMode && /* @__PURE__ */ (0, import_jsx_runtime489.jsxs)(import_jsx_runtime489.Fragment, { children: [
                  /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(PatternsMenuItems, {}),
                  /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(TemplatePartMenuItems, {}),
                  mode === "template-locked" && /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(DisableNonPageContentBlocks, {}),
                  type === "wp_navigation" && /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(NavigationBlockEditingMode, {}),
                  /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(register_shortcuts_default, {}),
                  /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(EditorKeyboardShortcuts, {}),
                  /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(keyboard_shortcut_help_modal_default, {}),
                  /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(BlockRemovalWarnings, {}),
                  /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(StartPageOptions, {}),
                  /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(StartTemplateOptions, {}),
                  /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(PatternRenameModal, {}),
                  /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(PatternDuplicateModal, {}),
                  /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(MediaEditorModalMount, {})
                ] })
              ]
            }
          ) })
        }
      ) });
    }
  );
  function EditorProvider(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime489.jsx)(
      ExperimentalEditorProvider,
      {
        ...props,
        BlockEditorProviderComponent: import_block_editor34.BlockEditorProvider,
        children: props.children
      }
    );
  }
  var provider_default = EditorProvider;

  // packages/editor/build-module/dataviews/fields/content-preview/content-preview-view.mjs
  var import_jsx_runtime490 = __toESM(require_jsx_runtime(), 1);
  function PostPreviewContainer({
    template: template2,
    post: post2
  }) {
    const [backgroundColor = "white"] = useStyle2("color.background");
    const [postBlocks] = (0, import_core_data60.useEntityBlockEditor)("postType", post2.type, {
      id: post2.id
    });
    const [templateBlocks] = (0, import_core_data60.useEntityBlockEditor)(
      "postType",
      template2?.type,
      {
        id: template2?.id
      }
    );
    const blocks = template2 && templateBlocks ? templateBlocks : postBlocks;
    const isEmpty2 = !blocks?.length;
    return /* @__PURE__ */ (0, import_jsx_runtime490.jsxs)(
      "div",
      {
        className: "editor-fields-content-preview",
        style: {
          backgroundColor
        },
        children: [
          isEmpty2 && /* @__PURE__ */ (0, import_jsx_runtime490.jsx)("span", { className: "editor-fields-content-preview__empty", children: (0, import_i18n221.__)("Empty content") }),
          !isEmpty2 && /* @__PURE__ */ (0, import_jsx_runtime490.jsx)(import_block_editor35.BlockPreview.Async, { children: /* @__PURE__ */ (0, import_jsx_runtime490.jsx)(import_block_editor35.BlockPreview, { blocks }) })
        ]
      }
    );
  }
  function PostPreviewView({ item }) {
    const { settings, template: template2 } = (0, import_data91.useSelect)(
      (select9) => {
        const { canUser, getPostType, getTemplateId, getEntityRecord } = unlock(select9(import_core_data60.store));
        const canViewTemplate = canUser("read", {
          kind: "postType",
          name: "wp_template"
        });
        const _settings = select9(store).getEditorSettings();
        const supportsTemplateMode = _settings.supportsTemplateMode;
        const isViewable = getPostType(item.type)?.viewable ?? false;
        const templateId2 = supportsTemplateMode && isViewable && canViewTemplate ? getTemplateId(item.type, item.id) : null;
        return {
          settings: _settings,
          template: templateId2 ? getEntityRecord("postType", "wp_template", templateId2) : void 0
        };
      },
      [item.type, item.id]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime490.jsx)(
      EditorProvider,
      {
        post: item,
        settings,
        __unstableTemplate: template2,
        children: /* @__PURE__ */ (0, import_jsx_runtime490.jsx)(PostPreviewContainer, { template: template2, post: item })
      }
    );
  }

  // packages/editor/build-module/dataviews/fields/content-preview/index.mjs
  var postPreviewField = {
    type: "media",
    id: "content-preview",
    label: (0, import_i18n222.__)("Content preview"),
    render: PostPreviewView,
    enableSorting: false
  };
  var content_preview_default = postPreviewField;

  // packages/editor/build-module/dataviews/store/private-actions.mjs
  function hasEditorNotesSupport(supports) {
    const editor = supports?.editor;
    if (Array.isArray(editor)) {
      return !!editor[0]?.notes;
    }
    return false;
  }
  function registerEntityAction(kind, name2, config2) {
    return {
      type: "REGISTER_ENTITY_ACTION",
      kind,
      name: name2,
      config: config2
    };
  }
  function unregisterEntityAction(kind, name2, actionId) {
    return {
      type: "UNREGISTER_ENTITY_ACTION",
      kind,
      name: name2,
      actionId
    };
  }
  function registerEntityField(kind, name2, config2) {
    return {
      type: "REGISTER_ENTITY_FIELD",
      kind,
      name: name2,
      config: config2
    };
  }
  function unregisterEntityField(kind, name2, fieldId) {
    return {
      type: "UNREGISTER_ENTITY_FIELD",
      kind,
      name: name2,
      fieldId
    };
  }
  function setIsReady(kind, name2) {
    return {
      type: "SET_IS_READY",
      kind,
      name: name2
    };
  }
  var ORDERED_MEDIA_FIELDS = [
    // Metadata in panels (collapsed by default).
    date_added_default,
    author_default2,
    filename_default,
    mime_type_default,
    filesize_default,
    media_dimensions_default,
    attached_to_default,
    // Regular layout fields (always visible).
    title_default,
    alt_text_default,
    caption_default,
    description_default2
  ];
  var registerPostTypeSchema = (postType2) => async ({ registry }) => {
    const isReady2 = unlock(registry.select(store)).isEntityReady(
      "postType",
      postType2
    );
    if (isReady2) {
      return;
    }
    unlock(registry.dispatch(store)).setIsReady(
      "postType",
      postType2
    );
    const postTypeConfig = await registry.resolveSelect(import_core_data61.store).getPostType(postType2);
    const canCreate = await registry.resolveSelect(import_core_data61.store).canUser("create", {
      kind: "postType",
      name: postType2
    });
    const currentTheme = await registry.resolveSelect(import_core_data61.store).getCurrentTheme();
    const { disablePostFormats } = registry.select(store).getEditorSettings();
    let canDuplicate = !["wp_block", "wp_template_part", "wp_template"].includes(
      postTypeConfig.slug
    ) && canCreate && duplicate_post_default;
    if (false) {
      canDuplicate = void 0;
    }
    const actions2 = [
      postTypeConfig.viewable ? view_post_default : void 0,
      !!postTypeConfig.supports?.revisions ? view_post_revisions_default : void 0,
      canDuplicate,
      postTypeConfig.slug === "wp_template_part" && canCreate && currentTheme?.is_block_theme ? duplicate_template_part_default : void 0,
      canCreate && postTypeConfig.slug === "wp_block" ? duplicate_pattern_default : void 0,
      postTypeConfig.supports?.title ? rename_post_default : void 0,
      postTypeConfig.supports?.["page-attributes"] ? reorder_page_default : void 0,
      postTypeConfig.slug === "wp_block" ? export_pattern_default : void 0,
      restore_post_default,
      reset_post_default,
      delete_post_default,
      trash_post_default,
      permanently_delete_post_default
    ].filter(Boolean);
    let fields2;
    if (postType2 === ATTACHMENT_POST_TYPE) {
      fields2 = ORDERED_MEDIA_FIELDS;
    } else {
      const postTypeSlug = postTypeConfig.slug;
      const isDesignPostType = DESIGN_POST_TYPES.includes(postTypeSlug);
      const isPattern = postTypeSlug === "wp_block";
      const postThumbnails = currentTheme?.theme_supports?.["post-thumbnails"];
      const themeSupportsThumbnails = Array.isArray(postThumbnails) ? postThumbnails.includes(postTypeSlug) : !!postThumbnails;
      fields2 = [
        postTypeConfig.supports?.thumbnail && themeSupportsThumbnails && featured_image_default,
        !isDesignPostType && postTypeConfig.supports?.author && author_default,
        postTypeSlug === "wp_template" && templateAuthorField,
        postTypeSlug === "wp_template_part" && templatePartAuthorField,
        !isDesignPostType && status_default,
        !isDesignPostType && date_default,
        !isDesignPostType && scheduled_date_default,
        last_edited_default,
        // There is no post type support flag for permalinks, and
        // `viewable` alone is not the full condition (the type must
        // also be public), so the field also checks each post.
        !isDesignPostType && postTypeConfig.viewable && slug_default,
        !isDesignPostType && postTypeConfig.supports?.excerpt && excerpt_default,
        isPattern && postTypeConfig.supports?.excerpt && pattern_description_default,
        postTypeConfig.supports?.["page-attributes"] && parent_default,
        postTypeConfig.supports?.comments && comment_status_default,
        postTypeConfig.supports?.trackbacks && ping_status_default,
        (postTypeConfig.supports?.comments || postTypeConfig.supports?.trackbacks) && discussion_default,
        !isDesignPostType && template_default,
        postTypeConfig.supports?.["post-formats"] && !disablePostFormats && format_default,
        (!isDesignPostType || isPattern) && postTypeConfig.supports?.editor && post_content_info_default,
        !isDesignPostType && password_default,
        postTypeSlug === "post" && sticky_default,
        postTypeSlug === "wp_template" && description_default,
        postTypeSlug === "wp_template" && readOnlyDescriptionField,
        // The `home`/`index` template summary exposes a few fields that
        // target other entities (`root/site` and the posts page).
        // `DataFormPostSummary` overrides them to read/write the right
        // entity and to control their visibility.
        postTypeSlug === "wp_template" && posts_page_title_default,
        postTypeSlug === "wp_template" && posts_per_page_default,
        postTypeSlug === "wp_template" && site_discussion_default,
        postTypeConfig.supports?.editor && postTypeConfig.viewable && content_preview_default,
        hasEditorNotesSupport(postTypeConfig.supports) && notes_default,
        isPattern && pattern_sync_status_default
      ].filter(Boolean);
      if (postTypeConfig.supports?.title) {
        let _titleField;
        if (postType2 === "page") {
          _titleField = page_title_default;
        } else if (postType2 === "wp_template") {
          _titleField = template_title_default;
        } else if (["wp_block", "wp_template_part"].includes(postType2)) {
          _titleField = pattern_title_default;
        } else {
          _titleField = title_default;
        }
        fields2.push(_titleField);
      }
    }
    registry.batch(() => {
      actions2.forEach((action) => {
        unlock(registry.dispatch(store)).registerEntityAction(
          "postType",
          postType2,
          action
        );
      });
      fields2.forEach((field) => {
        unlock(registry.dispatch(store)).registerEntityField(
          "postType",
          postType2,
          field
        );
      });
    });
    (0, import_hooks41.doAction)("core.registerPostTypeSchema", postType2);
  };

  // packages/editor/build-module/store/private-actions.mjs
  function setCurrentTemplateId(id) {
    return {
      type: "SET_CURRENT_TEMPLATE_ID",
      id
    };
  }
  var createTemplate = (template2) => async ({ select: select9, dispatch: dispatch9, registry }) => {
    const savedTemplate = await registry.dispatch(import_core_data62.store).saveEntityRecord("postType", "wp_template", template2);
    registry.dispatch(import_core_data62.store).editEntityRecord(
      "postType",
      select9.getCurrentPostType(),
      select9.getCurrentPostId(),
      {
        template: savedTemplate.slug
      }
    );
    const { defaultRenderingMode, renderingMode: renderingMode2 } = select9.getEditorSettings();
    registry.dispatch(import_notices19.store).createSuccessNotice(
      (0, import_i18n223.__)("Custom template created. You're in template mode now."),
      {
        type: "snackbar",
        // An editor with a fixed rendering mode has no other mode
        // to go back to, so the action is not offered.
        actions: renderingMode2 ? [] : [
          {
            label: (0, import_i18n223.__)("Back"),
            onClick: () => dispatch9.setRenderingMode(
              defaultRenderingMode
            )
          }
        ]
      }
    );
    return savedTemplate;
  };
  var showBlockTypes = (blockNames) => ({ registry }) => {
    const existingBlockNames = registry.select(import_preferences9.store).get("core", "hiddenBlockTypes") ?? [];
    const newBlockNames = existingBlockNames.filter(
      (type) => !(Array.isArray(blockNames) ? blockNames : [blockNames]).includes(type)
    );
    registry.dispatch(import_preferences9.store).set("core", "hiddenBlockTypes", newBlockNames);
  };
  var hideBlockTypes = (blockNames) => ({ registry }) => {
    const existingBlockNames = registry.select(import_preferences9.store).get("core", "hiddenBlockTypes") ?? [];
    const mergedBlockNames = /* @__PURE__ */ new Set([
      ...existingBlockNames,
      ...Array.isArray(blockNames) ? blockNames : [blockNames]
    ]);
    registry.dispatch(import_preferences9.store).set("core", "hiddenBlockTypes", [...mergedBlockNames]);
  };
  var revertTemplate2 = (template2, { allowUndo = true } = {}) => async ({ registry }) => {
    const noticeId = "edit-site-template-reverted";
    registry.dispatch(import_notices19.store).removeNotice(noticeId);
    if (!isTemplateRevertable(template2)) {
      registry.dispatch(import_notices19.store).createErrorNotice((0, import_i18n223.__)("This template is not revertable."), {
        type: "snackbar"
      });
      return;
    }
    try {
      const templateEntityConfig = registry.select(import_core_data62.store).getEntityConfig("postType", template2.type);
      if (!templateEntityConfig) {
        registry.dispatch(import_notices19.store).createErrorNotice(
          (0, import_i18n223.__)(
            "The editor has encountered an unexpected error. Please reload."
          ),
          { type: "snackbar" }
        );
        return;
      }
      const fileTemplatePath = (0, import_url14.addQueryArgs)(
        `${templateEntityConfig.baseURL}/${template2.id}`,
        { context: "edit", source: template2.origin }
      );
      const fileTemplate = await (0, import_api_fetch7.default)({ path: fileTemplatePath });
      if (!fileTemplate) {
        registry.dispatch(import_notices19.store).createErrorNotice(
          (0, import_i18n223.__)(
            "The editor has encountered an unexpected error. Please reload."
          ),
          { type: "snackbar" }
        );
        return;
      }
      const serializeBlocks = ({
        blocks: blocksForSerialization = []
      }) => (0, import_blocks19.__unstableSerializeAndClean)(blocksForSerialization);
      const edited = registry.select(import_core_data62.store).getEditedEntityRecord(
        "postType",
        template2.type,
        template2.id
      );
      registry.dispatch(import_core_data62.store).editEntityRecord(
        "postType",
        template2.type,
        template2.id,
        {
          content: serializeBlocks,
          // Required to make the `undo` behave correctly.
          blocks: edited.blocks,
          // Required to revert the blocks in the editor.
          source: "custom"
          // required to avoid turning the editor into a dirty state
        },
        {
          undoIgnore: true
          // Required to merge this edit with the last undo level.
        }
      );
      const blocks = (0, import_blocks19.parse)(fileTemplate?.content?.raw);
      registry.dispatch(import_core_data62.store).editEntityRecord("postType", template2.type, fileTemplate.id, {
        content: serializeBlocks,
        blocks,
        source: "theme"
      });
      if (allowUndo) {
        const undoRevert = () => {
          registry.dispatch(import_core_data62.store).editEntityRecord(
            "postType",
            template2.type,
            edited.id,
            {
              content: serializeBlocks,
              blocks: edited.blocks,
              source: "custom"
            }
          );
        };
        registry.dispatch(import_notices19.store).createSuccessNotice((0, import_i18n223.__)("Template reset."), {
          type: "snackbar",
          id: noticeId,
          actions: [
            {
              label: (0, import_i18n223.__)("Undo"),
              onClick: undoRevert
            }
          ]
        });
      }
    } catch (error2) {
      const errorMessage = error2.message && error2.code !== "unknown_error" ? error2.message : (0, import_i18n223.__)("Template revert failed. Please reload.");
      registry.dispatch(import_notices19.store).createErrorNotice(errorMessage, { type: "snackbar" });
    }
  };
  var removeTemplates = (items) => async ({ registry }) => {
    const isResetting = items.every((item) => item?.has_theme_file);
    const promiseResult = await Promise.allSettled(
      items.map((item) => {
        return registry.dispatch(import_core_data62.store).deleteEntityRecord(
          "postType",
          item.type,
          item.id,
          { force: true },
          { throwOnError: true }
        );
      })
    );
    if (promiseResult.every(({ status }) => status === "fulfilled")) {
      let successMessage;
      if (items.length === 1) {
        let title;
        if (typeof items[0].title === "string") {
          title = items[0].title;
        } else if (typeof items[0].title?.rendered === "string") {
          title = items[0].title?.rendered;
        } else if (typeof items[0].title?.raw === "string") {
          title = items[0].title?.raw;
        }
        successMessage = isResetting ? (0, import_i18n223.sprintf)(
          /* translators: %s: The template/part's name. */
          (0, import_i18n223.__)('"%s" reset.'),
          (0, import_html_entities13.decodeEntities)(title)
        ) : (0, import_i18n223.sprintf)(
          /* translators: %s: The template/part's name. */
          (0, import_i18n223._x)('"%s" deleted.', "template part"),
          (0, import_html_entities13.decodeEntities)(title)
        );
      } else {
        successMessage = isResetting ? (0, import_i18n223.__)("Items reset.") : (0, import_i18n223.__)("Items deleted.");
      }
      registry.dispatch(import_notices19.store).createSuccessNotice(successMessage, {
        type: "snackbar",
        id: "editor-template-deleted-success"
      });
    } else {
      let errorMessage;
      if (promiseResult.length === 1) {
        if (promiseResult[0].reason?.message) {
          errorMessage = promiseResult[0].reason.message;
        } else {
          errorMessage = isResetting ? (0, import_i18n223.__)("An error occurred while reverting the item.") : (0, import_i18n223.__)("An error occurred while deleting the item.");
        }
      } else {
        const errorMessages = /* @__PURE__ */ new Set();
        const failedPromises = promiseResult.filter(
          ({ status }) => status === "rejected"
        );
        for (const failedPromise of failedPromises) {
          if (failedPromise.reason?.message) {
            errorMessages.add(failedPromise.reason.message);
          }
        }
        if (errorMessages.size === 0) {
          errorMessage = (0, import_i18n223.__)(
            "An error occurred while deleting the items."
          );
        } else if (errorMessages.size === 1) {
          errorMessage = isResetting ? (0, import_i18n223.sprintf)(
            /* translators: %s: an error message */
            (0, import_i18n223.__)(
              "An error occurred while reverting the items: %s"
            ),
            [...errorMessages][0]
          ) : (0, import_i18n223.sprintf)(
            /* translators: %s: an error message */
            (0, import_i18n223.__)(
              "An error occurred while deleting the items: %s"
            ),
            [...errorMessages][0]
          );
        } else {
          errorMessage = isResetting ? (0, import_i18n223.sprintf)(
            /* translators: %s: a list of comma separated error messages */
            (0, import_i18n223.__)(
              "Some errors occurred while reverting the items: %s"
            ),
            [...errorMessages].join(",")
          ) : (0, import_i18n223.sprintf)(
            /* translators: %s: a list of comma separated error messages */
            (0, import_i18n223.__)(
              "Some errors occurred while deleting the items: %s"
            ),
            [...errorMessages].join(",")
          );
        }
      }
      registry.dispatch(import_notices19.store).createErrorNotice(errorMessage, { type: "snackbar" });
    }
  };
  var setDefaultRenderingMode = (mode) => ({ select: select9, registry }) => {
    const postType2 = select9.getCurrentPostType();
    const theme2 = registry.select(import_core_data62.store).getCurrentTheme()?.stylesheet;
    const renderingModes = registry.select(import_preferences9.store).get("core", "renderingModes")?.[theme2] ?? {};
    if (renderingModes[postType2] === mode) {
      return;
    }
    const newModes = {
      [theme2]: {
        ...renderingModes,
        [postType2]: mode
      }
    };
    registry.dispatch(import_preferences9.store).set("core", "renderingModes", newModes);
  };
  function setStylesPath(path) {
    return {
      type: "SET_STYLES_PATH",
      path
    };
  }
  function setShowStylebook(show) {
    return {
      type: "SET_SHOW_STYLEBOOK",
      show
    };
  }
  function resetStylesNavigation() {
    return {
      type: "RESET_STYLES_NAVIGATION"
    };
  }
  function setCanvasWidth(width) {
    return ({ dispatch: dispatch9, registry }) => {
      dispatch9({
        type: "SET_CANVAS_WIDTH",
        width
      });
      const blockEditorSelect = unlock(registry.select(import_block_editor36.store));
      if (blockEditorSelect.isResponsiveEditing()) {
        const viewportSettings = blockEditorSelect.getSettings().__experimentalFeatures?.viewport;
        const deviceType = getDeviceTypeByCanvasWidth(
          width,
          viewportSettings
        );
        unlock(
          registry.dispatch(import_block_editor36.store)
        ).setStyleStateViewport(
          VIEWPORT_STATE_BY_DEVICE_TYPE[deviceType] ?? "default"
        );
      }
    };
  }
  function setCurrentRevisionId(revisionId2) {
    return {
      type: "SET_CURRENT_REVISION_ID",
      revisionId: revisionId2
    };
  }
  var setRevisionPage = (page) => async ({ dispatch: dispatch9, select: select9, registry }) => {
    const postType2 = select9.getCurrentPostType();
    const postId2 = select9.getCurrentPostId();
    const entityConfig = registry.select(import_core_data62.store).getEntityConfig("postType", postType2);
    const revisionKey = entityConfig?.revisionKey || "id";
    const revisions = await registry.resolveSelect(import_core_data62.store).getRevisions(
      "postType",
      postType2,
      postId2,
      buildRevisionsPageQuery(revisionKey, page)
    );
    registry.batch(() => {
      dispatch9({ type: "SET_REVISION_PAGE", page });
      if (revisions?.length) {
        dispatch9.setCurrentRevisionId(revisions[0][revisionKey]);
      }
    });
  };
  function createRevisionsLoadFailedNotice(registry) {
    registry.dispatch(import_notices19.store).createNotice("warning", (0, import_i18n223.__)("Revisions could not be loaded."), {
      type: "snackbar",
      id: "editor-revisions-load-failed"
    });
  }
  var openRevision = (revisionId2) => async ({ dispatch: dispatch9, select: select9, registry }) => {
    dispatch9.setCurrentRevisionId(revisionId2);
    const postType2 = select9.getCurrentPostType();
    const postId2 = select9.getCurrentPostId();
    const entityConfig = registry.select(import_core_data62.store).getEntityConfig("postType", postType2);
    const revisionKey = entityConfig?.revisionKey || "id";
    const revisions = await registry.resolveSelect(import_core_data62.store).getRevisions("postType", postType2, postId2, {
      per_page: -1,
      context: "edit",
      orderby: "date",
      order: "desc",
      _fields: revisionKey
    });
    if (select9.getCurrentRevisionId() !== revisionId2) {
      return;
    }
    if (!revisions) {
      createRevisionsLoadFailedNotice(registry);
      return;
    }
    const index3 = revisions.findIndex(
      (revision) => revision[revisionKey] === revisionId2
    );
    if (index3 === -1) {
      let revision;
      try {
        revision = await (0, import_api_fetch7.default)({
          path: (0, import_url14.addQueryArgs)(
            entityConfig.getRevisionsUrl(postId2, revisionId2),
            { context: "edit" }
          )
        });
      } catch (error2) {
        if (select9.getCurrentRevisionId() !== revisionId2) {
          return;
        }
        if (error2?.data?.status !== 404) {
          createRevisionsLoadFailedNotice(registry);
          return;
        }
        dispatch9.setCurrentRevisionId(null);
        registry.dispatch(import_notices19.store).createNotice("warning", (0, import_i18n223.__)("Invalid revision ID."), {
          type: "snackbar",
          id: "editor-revision-invalid"
        });
        return;
      }
      if (select9.getCurrentRevisionId() !== revisionId2) {
        return;
      }
      if (!revision) {
        createRevisionsLoadFailedNotice(registry);
        return;
      }
      await registry.dispatch(import_core_data62.store).receiveRevisions("postType", postType2, postId2, revision, {
        context: "edit"
      });
      return;
    }
    const page = Math.floor(index3 / select9.getRevisionsPerPage()) + 1;
    if (page !== select9.getRevisionPage()) {
      dispatch9({ type: "SET_REVISION_PAGE", page });
    }
  };
  function setShowRevisionDiff(showDiff) {
    return {
      type: "SET_SHOW_REVISION_DIFF",
      showDiff
    };
  }
  var restoreRevision = (revisionId2) => async ({ select: select9, dispatch: dispatch9, registry }) => {
    const postType2 = select9.getCurrentPostType();
    const postId2 = select9.getCurrentPostId();
    const entityConfig = registry.select(import_core_data62.store).getEntityConfig("postType", postType2);
    const revisionKey = entityConfig?.revisionKey || "id";
    const revision = await registry.resolveSelect(import_core_data62.store).getRevision("postType", postType2, postId2, revisionId2, {
      context: "edit",
      _fields: [
        .../* @__PURE__ */ new Set([
          "id",
          "date",
          "modified",
          "author",
          "meta",
          "title",
          "excerpt",
          "content.raw",
          revisionKey
        ])
      ].join()
    });
    if (!revision) {
      return;
    }
    const edits = {
      blocks: void 0,
      content: revision.content.raw
    };
    if (revision.title?.raw !== void 0) {
      edits.title = revision.title.raw;
    }
    if (revision.excerpt?.raw !== void 0) {
      edits.excerpt = revision.excerpt.raw;
    }
    if (revision.meta !== void 0) {
      edits.meta = revision.meta;
    }
    dispatch9.editPost(edits);
    dispatch9.setCurrentRevisionId(null);
    await dispatch9.savePost();
    if (select9.didPostSaveRequestFail()) {
      return;
    }
    registry.dispatch(import_notices19.store).removeNotice("autosave-exists");
    registry.dispatch(import_notices19.store).createSuccessNotice(
      (0, import_i18n223.sprintf)(
        /* translators: %s: Date and time of the revision. */
        (0, import_i18n223.__)("Restored to revision from %s."),
        (0, import_date19.dateI18n)((0, import_date19.getSettings)().formats.datetime, revision.date)
      ),
      {
        type: "snackbar",
        id: "editor-revision-restored"
      }
    );
  };
  function selectNote(noteId, options = { focus: false }) {
    return {
      type: "SELECT_NOTE",
      noteId,
      options
    };
  }

  // packages/editor/build-module/store/actions.mjs
  var { getEntitySnapshot } = unlock(import_core_data63.privateApis);
  var CLIENT_GENERATED_ERROR_CODES = ["offline_error", "fetch_error"];
  var setupEditor = (post2, edits, template2) => ({ dispatch: dispatch9 }) => {
    dispatch9.setEditedPost(post2.type, post2.id);
    const isNewPost = post2.status === "auto-draft";
    if (isNewPost && template2) {
      let content;
      if ("content" in edits) {
        content = edits.content;
      } else {
        content = post2.content.raw;
      }
      let blocks = (0, import_blocks20.parse)(content);
      blocks = (0, import_blocks20.synchronizeBlocksWithTemplate)(blocks, template2);
      dispatch9.resetEditorBlocks(blocks, {
        __unstableShouldCreateUndoLevel: false
      });
    }
    if (edits && Object.entries(edits).some(
      ([key, edit]) => edit !== (post2[key]?.raw ?? post2[key])
    )) {
      dispatch9.editPost(edits);
    }
  };
  function __experimentalTearDownEditor() {
    (0, import_deprecated9.default)(
      "wp.data.dispatch( 'core/editor' ).__experimentalTearDownEditor",
      {
        since: "6.5"
      }
    );
    return { type: "DO_NOTHING" };
  }
  function resetPost() {
    (0, import_deprecated9.default)("wp.data.dispatch( 'core/editor' ).resetPost", {
      since: "6.0",
      version: "6.3",
      alternative: "Initialize the editor with the setupEditorState action"
    });
    return { type: "DO_NOTHING" };
  }
  function updatePost() {
    (0, import_deprecated9.default)("wp.data.dispatch( 'core/editor' ).updatePost", {
      since: "5.7",
      alternative: "Use the core entities store instead"
    });
    return {
      type: "DO_NOTHING"
    };
  }
  function setupEditorState(post2) {
    (0, import_deprecated9.default)("wp.data.dispatch( 'core/editor' ).setupEditorState", {
      since: "6.5",
      alternative: "wp.data.dispatch( 'core/editor' ).setEditedPost"
    });
    return setEditedPost(post2.type, post2.id);
  }
  function setEditedPost(postType2, postId2) {
    return {
      type: "SET_EDITED_POST",
      postType: postType2,
      postId: postId2
    };
  }
  var editPost = (edits, options) => ({ select: select9, registry }) => {
    const { id, type } = select9.getCurrentPost();
    registry.dispatch(import_core_data63.store).editEntityRecord("postType", type, id, edits, options);
  };
  var savePost = (options = {}) => async ({ select: select9, dispatch: dispatch9, registry }) => {
    if (!select9.isEditedPostSaveable()) {
      return;
    }
    const content = select9.getEditedPostContent();
    dispatch9.editPost({ content }, { undoIgnore: true });
    const previousRecord = select9.getCurrentPost();
    const savedBlocks = select9.getEditorBlocks();
    let edits = {
      id: previousRecord.id,
      ...registry.select(import_core_data63.store).getEntityRecordNonTransientEdits(
        "postType",
        previousRecord.type,
        previousRecord.id
      ),
      content
    };
    dispatch9({ type: "REQUEST_POST_UPDATE_START", options });
    let error2 = false;
    try {
      edits = await (0, import_hooks42.applyFiltersAsync)(
        "editor.preSavePost",
        edits,
        options
      );
    } catch (err) {
      error2 = err;
    }
    if (!error2) {
      try {
        await registry.dispatch(import_core_data63.store).saveEntityRecord(
          "postType",
          previousRecord.type,
          edits,
          options
        );
      } catch (err) {
        error2 = err.message && err.code !== "unknown_error" ? err.message : (0, import_i18n224.__)("An error occurred while updating.");
      }
    }
    if (!error2) {
      error2 = registry.select(import_core_data63.store).getLastEntitySaveError(
        "postType",
        previousRecord.type,
        previousRecord.id
      );
    }
    if (!error2) {
      try {
        await (0, import_hooks42.applyFilters)(
          "editor.__unstableSavePost",
          Promise.resolve(),
          options
        );
      } catch (err) {
        error2 = err;
      }
    }
    if (!error2) {
      try {
        await (0, import_hooks42.doActionAsync)(
          "editor.savePost",
          { id: previousRecord.id, type: previousRecord.type },
          options
        );
      } catch (err) {
        error2 = err;
      }
    }
    dispatch9({ type: "REQUEST_POST_UPDATE_FINISH", options });
    if (!error2 && !options.isAutosave && !options.isPreview && !select9.isDeletingPost() && previousRecord.status !== "trash" && select9.getEditorSettings().autoAttachMediaEnabled) {
      attachMediaInPost(registry, {
        id: previousRecord.id,
        type: previousRecord.type,
        blocks: savedBlocks
      });
    }
    if (error2) {
      const args = getNotificationArgumentsForSaveFail({
        post: previousRecord,
        edits,
        error: error2,
        options
      });
      if (args.length) {
        const [noticeMessage] = args;
        if (error2.message && !CLIENT_GENERATED_ERROR_CODES.includes(error2.code) && !/<\/?[^>]*>/.test(error2.message)) {
          args[0] = `${(0, import_escape_html.escapeHTML)(
            noticeMessage
          )} <details class="editor-save-error-details"><summary>${(0, import_escape_html.escapeHTML)(
            (0, import_i18n224.__)("Show details")
          )}</summary><span class="editor-save-error-details__message">${(0, import_escape_html.escapeHTML)(
            error2.message
          )}</span></details>`;
          args[1] = {
            ...args[1],
            __unstableHTML: true,
            speak: false
          };
          (0, import_a11y10.speak)(noticeMessage, "assertive");
        }
        registry.dispatch(import_notices20.store).createErrorNotice(...args);
      }
    } else {
      const updatedRecord = select9.getCurrentPost();
      const args = getNotificationArgumentsForSaveSuccess({
        previousPost: previousRecord,
        post: updatedRecord,
        postType: await registry.resolveSelect(import_core_data63.store).getPostType(updatedRecord.type),
        options
      });
      if (args.length) {
        registry.dispatch(import_notices20.store).createSuccessNotice(...args);
      }
      if (!options.isAutosave) {
        registry.dispatch(import_block_editor37.store).__unstableMarkLastChangeAsPersistent();
      }
    }
  };
  function refreshPost() {
    (0, import_deprecated9.default)("wp.data.dispatch( 'core/editor' ).refreshPost", {
      since: "6.0",
      version: "6.3",
      alternative: "Use the core entities store instead"
    });
    return { type: "DO_NOTHING" };
  }
  var trashPost2 = () => async ({ select: select9, dispatch: dispatch9, registry }) => {
    const postTypeSlug = select9.getCurrentPostType();
    const postType2 = await registry.resolveSelect(import_core_data63.store).getPostType(postTypeSlug);
    const { rest_base: restBase, rest_namespace: restNamespace = "wp/v2" } = postType2;
    dispatch9({ type: "REQUEST_POST_DELETE_START" });
    try {
      const post2 = select9.getCurrentPost();
      await (0, import_api_fetch8.default)({
        path: `/${restNamespace}/${restBase}/${post2.id}`,
        method: "DELETE"
      });
      await dispatch9.savePost();
    } catch (error2) {
      registry.dispatch(import_notices20.store).createErrorNotice(
        ...getNotificationArgumentsForTrashFail({ error: error2 })
      );
    }
    dispatch9({ type: "REQUEST_POST_DELETE_FINISH" });
  };
  var autosave = ({ local = false, ...options } = {}) => async ({ select: select9, dispatch: dispatch9 }) => {
    const post2 = select9.getCurrentPost();
    if (local) {
      const isPostNew = select9.isEditedPostNew();
      const title = select9.getEditedPostAttribute("title");
      const content = select9.getEditedPostAttribute("content");
      const excerpt = select9.getEditedPostAttribute("excerpt");
      const crdtSnapshot = getEntitySnapshot(
        "postType",
        post2.type,
        post2.id
      );
      localAutosaveSet(
        post2.id,
        isPostNew,
        title,
        content,
        excerpt,
        crdtSnapshot
      );
    } else {
      await dispatch9.savePost({ isAutosave: true, ...options });
    }
  };
  var __unstableSaveForPreview = ({ forceIsAutosaveable } = {}) => async ({ select: select9, dispatch: dispatch9 }) => {
    if ((forceIsAutosaveable || select9.isEditedPostAutosaveable()) && !select9.isPostLocked()) {
      const isDraft = ["draft", "auto-draft"].includes(
        select9.getEditedPostAttribute("status")
      );
      if (isDraft) {
        await dispatch9.savePost({ isPreview: true });
      } else {
        await dispatch9.autosave({ isPreview: true });
      }
    }
    return select9.getEditedPostPreviewLink();
  };
  var redo = () => ({ registry }) => {
    registry.dispatch(import_core_data63.store).redo();
  };
  var undo = () => ({ registry }) => {
    registry.dispatch(import_core_data63.store).undo();
  };
  function createUndoLevel() {
    (0, import_deprecated9.default)("wp.data.dispatch( 'core/editor' ).createUndoLevel", {
      since: "6.0",
      version: "6.3",
      alternative: "Use the core entities store instead"
    });
    return { type: "DO_NOTHING" };
  }
  function updatePostLock(lock8) {
    return {
      type: "UPDATE_POST_LOCK",
      lock: lock8
    };
  }
  var enablePublishSidebar = () => ({ registry }) => {
    registry.dispatch(import_preferences10.store).set("core", "isPublishSidebarEnabled", true);
  };
  var disablePublishSidebar = () => ({ registry }) => {
    registry.dispatch(import_preferences10.store).set("core", "isPublishSidebarEnabled", false);
  };
  function lockPostSaving(lockName) {
    return {
      type: "LOCK_POST_SAVING",
      lockName
    };
  }
  function unlockPostSaving(lockName) {
    return {
      type: "UNLOCK_POST_SAVING",
      lockName
    };
  }
  function lockPostAutosaving(lockName) {
    return {
      type: "LOCK_POST_AUTOSAVING",
      lockName
    };
  }
  function unlockPostAutosaving(lockName) {
    return {
      type: "UNLOCK_POST_AUTOSAVING",
      lockName
    };
  }
  var resetEditorBlocks = (blocks, options = {}) => ({ select: select9, dispatch: dispatch9, registry }) => {
    const { __unstableShouldCreateUndoLevel, selection } = options;
    const edits = { blocks, selection };
    if (__unstableShouldCreateUndoLevel !== false) {
      const { id, type } = select9.getCurrentPost();
      const noChange = registry.select(import_core_data63.store).getEditedEntityRecord("postType", type, id).blocks === edits.blocks;
      if (noChange) {
        registry.dispatch(import_core_data63.store).__unstableCreateUndoLevel("postType", type, id);
        return;
      }
      edits.content = ({ blocks: blocksForSerialization = [] }) => (0, import_blocks20.__unstableSerializeAndClean)(blocksForSerialization);
    }
    dispatch9.editPost(edits);
  };
  function updateEditorSettings(settings) {
    return {
      type: "UPDATE_EDITOR_SETTINGS",
      settings
    };
  }
  var setRenderingMode = (mode) => ({ dispatch: dispatch9, registry, select: select9 }) => {
    const settings = select9.getEditorSettings();
    if (settings.renderingMode && mode !== settings.renderingMode) {
      (0, import_warning3.default)(
        `setRenderingMode( '${mode}' ) was ignored: this editor is using overriding rendering mode from '${settings.renderingMode}'.`
      );
      return;
    }
    if (select9.__unstableIsEditorReady() && !settings.isPreviewMode) {
      registry.dispatch(import_block_editor37.store).clearSelectedBlock();
    }
    dispatch9({
      type: "SET_RENDERING_MODE",
      mode
    });
  };
  function setDeviceType(deviceType) {
    return ({ dispatch: dispatch9, registry }) => {
      const viewportSettings = unlock(
        registry.select(import_block_editor37.store)
      ).getSettings().__experimentalFeatures?.viewport;
      const width = getCanvasWidthByDeviceType(
        deviceType,
        viewportSettings
      );
      dispatch9(setCanvasWidth(width));
    };
  }
  var toggleEditorPanelEnabled = (panelName) => ({ registry }) => {
    const inactivePanels = registry.select(import_preferences10.store).get("core", "inactivePanels") ?? [];
    const isPanelInactive = !!inactivePanels?.includes(panelName);
    let updatedInactivePanels;
    if (isPanelInactive) {
      updatedInactivePanels = inactivePanels.filter(
        (invactivePanelName) => invactivePanelName !== panelName
      );
    } else {
      updatedInactivePanels = [...inactivePanels, panelName];
    }
    registry.dispatch(import_preferences10.store).set("core", "inactivePanels", updatedInactivePanels);
  };
  var toggleEditorPanelOpened = (panelName) => ({ registry }) => {
    const openPanels = registry.select(import_preferences10.store).get("core", "openPanels") ?? [];
    const isPanelOpen = !!openPanels?.includes(panelName);
    let updatedOpenPanels;
    if (isPanelOpen) {
      updatedOpenPanels = openPanels.filter(
        (openPanelName) => openPanelName !== panelName
      );
    } else {
      updatedOpenPanels = [...openPanels, panelName];
    }
    registry.dispatch(import_preferences10.store).set("core", "openPanels", updatedOpenPanels);
  };
  function removeEditorPanel(panelName) {
    return {
      type: "REMOVE_PANEL",
      panelName
    };
  }
  var setIsInserterOpened = (value) => ({ dispatch: dispatch9, registry }) => {
    if (typeof value === "object" && value.hasOwnProperty("rootClientId") && value.hasOwnProperty("insertionIndex")) {
      unlock(registry.dispatch(import_block_editor37.store)).setInsertionPoint({
        rootClientId: value.rootClientId,
        index: value.insertionIndex
      });
    }
    dispatch9({
      type: "SET_IS_INSERTER_OPENED",
      value
    });
  };
  function setIsListViewOpened(isOpen2) {
    return {
      type: "SET_IS_LIST_VIEW_OPENED",
      isOpen: isOpen2
    };
  }
  var toggleDistractionFree = ({ createNotice = true } = {}) => ({ dispatch: dispatch9, registry }) => {
    const isDistractionFree = registry.select(import_preferences10.store).get("core", "distractionFree");
    if (isDistractionFree) {
      registry.dispatch(import_preferences10.store).set("core", "fixedToolbar", false);
    }
    if (!isDistractionFree) {
      registry.batch(() => {
        registry.dispatch(import_preferences10.store).set("core", "fixedToolbar", true);
        dispatch9.setIsInserterOpened(false);
        dispatch9.setIsListViewOpened(false);
        unlock(
          registry.dispatch(import_block_editor37.store)
        ).resetZoomLevel();
      });
    }
    registry.batch(() => {
      registry.dispatch(import_preferences10.store).set("core", "distractionFree", !isDistractionFree);
      if (createNotice) {
        registry.dispatch(import_notices20.store).createInfoNotice(
          isDistractionFree ? (0, import_i18n224.__)("Distraction free mode deactivated.") : (0, import_i18n224.__)("Distraction free mode activated."),
          {
            id: "core/editor/distraction-free-mode/notice",
            type: "snackbar",
            actions: [
              {
                label: (0, import_i18n224.__)("Undo"),
                onClick: () => {
                  registry.batch(() => {
                    registry.dispatch(import_preferences10.store).set(
                      "core",
                      "fixedToolbar",
                      isDistractionFree
                    );
                    registry.dispatch(import_preferences10.store).toggle(
                      "core",
                      "distractionFree"
                    );
                  });
                }
              }
            ]
          }
        );
      }
    });
  };
  var toggleSpotlightMode = () => ({ registry }) => {
    registry.dispatch(import_preferences10.store).toggle("core", "focusMode");
    const isFocusMode = registry.select(import_preferences10.store).get("core", "focusMode");
    registry.dispatch(import_notices20.store).createInfoNotice(
      isFocusMode ? (0, import_i18n224.__)("Spotlight mode activated.") : (0, import_i18n224.__)("Spotlight mode deactivated."),
      {
        id: "core/editor/toggle-spotlight-mode/notice",
        type: "snackbar",
        actions: [
          {
            label: (0, import_i18n224.__)("Undo"),
            onClick: () => {
              registry.dispatch(import_preferences10.store).toggle("core", "focusMode");
            }
          }
        ]
      }
    );
  };
  var toggleTopToolbar = () => ({ registry }) => {
    registry.dispatch(import_preferences10.store).toggle("core", "fixedToolbar");
    const isTopToolbar = registry.select(import_preferences10.store).get("core", "fixedToolbar");
    registry.dispatch(import_notices20.store).createInfoNotice(
      isTopToolbar ? (0, import_i18n224.__)("Top toolbar activated.") : (0, import_i18n224.__)("Top toolbar deactivated."),
      {
        id: "core/editor/toggle-top-toolbar/notice",
        type: "snackbar",
        actions: [
          {
            label: (0, import_i18n224.__)("Undo"),
            onClick: () => {
              registry.dispatch(import_preferences10.store).toggle("core", "fixedToolbar");
            }
          }
        ]
      }
    );
  };
  var switchEditorMode = (mode) => ({ dispatch: dispatch9, registry }) => {
    registry.dispatch(import_preferences10.store).set("core", "editorMode", mode);
    if (mode !== "visual") {
      registry.dispatch(import_block_editor37.store).clearSelectedBlock();
      unlock(registry.dispatch(import_block_editor37.store)).resetZoomLevel();
    }
    if (mode === "visual") {
      (0, import_a11y10.speak)((0, import_i18n224.__)("Visual editor selected"), "assertive");
    } else if (mode === "text") {
      const isDistractionFree = registry.select(import_preferences10.store).get("core", "distractionFree");
      if (isDistractionFree) {
        dispatch9.toggleDistractionFree();
      }
      (0, import_a11y10.speak)((0, import_i18n224.__)("Code editor selected"), "assertive");
    }
  };
  function openPublishSidebar() {
    return {
      type: "OPEN_PUBLISH_SIDEBAR"
    };
  }
  function closePublishSidebar() {
    return {
      type: "CLOSE_PUBLISH_SIDEBAR"
    };
  }
  function togglePublishSidebar() {
    return {
      type: "TOGGLE_PUBLISH_SIDEBAR"
    };
  }
  var getBlockEditorAction = (name2) => (...args) => ({ registry }) => {
    (0, import_deprecated9.default)("`wp.data.dispatch( 'core/editor' )." + name2 + "`", {
      since: "5.3",
      alternative: "`wp.data.dispatch( 'core/block-editor' )." + name2 + "`",
      version: "6.2"
    });
    registry.dispatch(import_block_editor37.store)[name2](...args);
  };
  var resetBlocks = getBlockEditorAction("resetBlocks");
  var receiveBlocks = getBlockEditorAction("receiveBlocks");
  var updateBlock = getBlockEditorAction("updateBlock");
  var updateBlockAttributes = getBlockEditorAction(
    "updateBlockAttributes"
  );
  var selectBlock = getBlockEditorAction("selectBlock");
  var startMultiSelect = getBlockEditorAction("startMultiSelect");
  var stopMultiSelect = getBlockEditorAction("stopMultiSelect");
  var multiSelect = getBlockEditorAction("multiSelect");
  var clearSelectedBlock = getBlockEditorAction("clearSelectedBlock");
  var toggleSelection = getBlockEditorAction("toggleSelection");
  var replaceBlocks = getBlockEditorAction("replaceBlocks");
  var replaceBlock = getBlockEditorAction("replaceBlock");
  var moveBlocksDown = getBlockEditorAction("moveBlocksDown");
  var moveBlocksUp = getBlockEditorAction("moveBlocksUp");
  var moveBlockToPosition = getBlockEditorAction(
    "moveBlockToPosition"
  );
  var insertBlock = getBlockEditorAction("insertBlock");
  var insertBlocks = getBlockEditorAction("insertBlocks");
  var showInsertionPoint = getBlockEditorAction("showInsertionPoint");
  var hideInsertionPoint = getBlockEditorAction("hideInsertionPoint");
  var setTemplateValidity = getBlockEditorAction(
    "setTemplateValidity"
  );
  var synchronizeTemplate = getBlockEditorAction(
    "synchronizeTemplate"
  );
  var mergeBlocks = getBlockEditorAction("mergeBlocks");
  var removeBlocks = getBlockEditorAction("removeBlocks");
  var removeBlock = getBlockEditorAction("removeBlock");
  var toggleBlockMode = getBlockEditorAction("toggleBlockMode");
  var startTyping = getBlockEditorAction("startTyping");
  var stopTyping = getBlockEditorAction("stopTyping");
  var enterFormattedText = getBlockEditorAction("enterFormattedText");
  var exitFormattedText = getBlockEditorAction("exitFormattedText");
  var insertDefaultBlock = getBlockEditorAction("insertDefaultBlock");
  var updateBlockListSettings = getBlockEditorAction(
    "updateBlockListSettings"
  );

  // packages/editor/build-module/store/index.mjs
  var storeConfig = {
    reducer: reducer_default2,
    selectors: selectors_exports,
    actions: actions_exports3
  };
  var store = (0, import_data92.createReduxStore)(STORE_NAME, {
    ...storeConfig
  });
  (0, import_data92.register)(store);
  unlock(store).registerPrivateActions(private_actions_exports);
  unlock(store).registerPrivateSelectors(private_selectors_exports);

  // packages/editor/build-module/hooks/custom-sources-backwards-compatibility.mjs
  var import_jsx_runtime491 = __toESM(require_jsx_runtime(), 1);
  var createWithMetaAttributeSource = (metaAttributes) => (0, import_compose51.createHigherOrderComponent)(
    (BlockEdit2) => ({ attributes, setAttributes, ...props }) => {
      const postType2 = (0, import_data93.useSelect)(
        (select9) => select9(store).getCurrentPostType(),
        []
      );
      const [meta2, setMeta] = (0, import_core_data64.useEntityProp)(
        "postType",
        postType2,
        "meta"
      );
      const mergedAttributes = (0, import_element309.useMemo)(
        () => ({
          ...attributes,
          ...Object.fromEntries(
            Object.entries(metaAttributes).map(
              ([attributeKey, metaKey]) => [
                attributeKey,
                meta2[metaKey]
              ]
            )
          )
        }),
        [attributes, meta2]
      );
      return /* @__PURE__ */ (0, import_jsx_runtime491.jsx)(
        BlockEdit2,
        {
          attributes: mergedAttributes,
          setAttributes: (nextAttributes) => {
            const nextMeta = Object.fromEntries(
              Object.entries(nextAttributes ?? {}).filter(
                // Filter to intersection of keys between the updated
                // attributes and those with an associated meta key.
                ([key]) => key in metaAttributes
              ).map(([attributeKey, value]) => [
                // Rename the keys to the expected meta key name.
                metaAttributes[attributeKey],
                value
              ])
            );
            if (Object.entries(nextMeta).length) {
              setMeta(nextMeta);
            }
            setAttributes(nextAttributes);
          },
          ...props
        }
      );
    },
    "withMetaAttributeSource"
  );
  function shimAttributeSource(settings) {
    const metaAttributes = Object.fromEntries(
      Object.entries(settings.attributes ?? {}).filter(([, { source }]) => source === "meta").map(([attributeKey, { meta: meta2 }]) => [attributeKey, meta2])
    );
    if (Object.entries(metaAttributes).length) {
      settings.edit = createWithMetaAttributeSource(metaAttributes)(
        settings.edit
      );
    }
    return settings;
  }
  (0, import_hooks43.addFilter)(
    "blocks.registerBlockType",
    "core/editor/custom-sources-backwards-compatibility/shim-attribute-source",
    shimAttributeSource
  );

  // packages/editor/build-module/hooks/default-autocompleters.mjs
  var import_hooks55 = __toESM(require_hooks(), 1);

  // packages/editor/build-module/components/index.mjs
  var import_core_data113 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/autocompleters/link.mjs
  var import_api_fetch9 = __toESM(require_api_fetch(), 1);
  var import_url15 = __toESM(require_url(), 1);
  var import_html_entities14 = __toESM(require_html_entities(), 1);
  var import_jsx_runtime492 = __toESM(require_jsx_runtime(), 1);
  var SHOWN_SUGGESTIONS = 10;
  var link_default2 = {
    name: "links",
    className: "editor-autocompleters__link",
    triggerPrefix: "[[",
    isDebounced: true,
    async options(filterValue) {
      const options = await (0, import_api_fetch9.default)({
        path: (0, import_url15.addQueryArgs)("/wp/v2/search", {
          per_page: SHOWN_SUGGESTIONS,
          search: filterValue,
          type: "post"
        })
      });
      return options.filter((option) => option.title !== "");
    },
    getOptionKeywords(item) {
      const expansionWords = item.title.split(/\s+/);
      return [...expansionWords];
    },
    getOptionLabel(item) {
      return /* @__PURE__ */ (0, import_jsx_runtime492.jsxs)(import_jsx_runtime492.Fragment, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime492.jsx)(icon_default, { icon: item.subtype === "page" ? page_default : post_default }),
        (0, import_html_entities14.decodeEntities)(item.title)
      ] });
    },
    getOptionCompletion(item) {
      return /* @__PURE__ */ (0, import_jsx_runtime492.jsx)("a", { href: item.url, children: item.title });
    }
  };

  // packages/editor/build-module/components/autocompleters/user.mjs
  var import_element310 = __toESM(require_element(), 1);
  var import_data94 = __toESM(require_data(), 1);
  var import_core_data65 = __toESM(require_core_data(), 1);
  var import_jsx_runtime493 = __toESM(require_jsx_runtime(), 1);
  function getUserLabel(user) {
    const avatar = user.avatar_urls && user.avatar_urls[24] ? /* @__PURE__ */ (0, import_jsx_runtime493.jsx)(
      "img",
      {
        className: "editor-autocompleters__user-avatar",
        alt: "",
        src: user.avatar_urls[24]
      }
    ) : /* @__PURE__ */ (0, import_jsx_runtime493.jsx)("span", { className: "editor-autocompleters__no-avatar" });
    return /* @__PURE__ */ (0, import_jsx_runtime493.jsxs)(import_jsx_runtime493.Fragment, { children: [
      avatar,
      /* @__PURE__ */ (0, import_jsx_runtime493.jsx)("span", { className: "editor-autocompleters__user-name", children: user.name }),
      /* @__PURE__ */ (0, import_jsx_runtime493.jsx)("span", { className: "editor-autocompleters__user-slug", children: user.slug })
    ] });
  }
  var user_default = {
    name: "users",
    className: "editor-autocompleters__user",
    triggerPrefix: "@",
    allowContext(before) {
      return /\B$/.test(before);
    },
    useItems(filterValue) {
      const users = (0, import_data94.useSelect)(
        (select9) => {
          const { getUsers } = select9(import_core_data65.store);
          return getUsers({
            context: "view",
            search: filterValue
          });
        },
        [filterValue]
      );
      const options = (0, import_element310.useMemo)(
        () => users ? users.map((user) => ({
          key: `user-${user.slug}`,
          value: user,
          label: getUserLabel(user)
        })) : [],
        [users]
      );
      return [options];
    },
    getOptionCompletion(user) {
      return `@${user.slug}`;
    }
  };

  // packages/editor/build-module/components/autosave-monitor/index.mjs
  var import_element311 = __toESM(require_element(), 1);
  var import_data95 = __toESM(require_data(), 1);
  var import_core_data66 = __toESM(require_core_data(), 1);
  function useInterval(callback, intervalInSeconds) {
    const callbackRef = (0, import_element311.useRef)(callback);
    (0, import_element311.useEffect)(() => {
      callbackRef.current = callback;
    }, [callback]);
    (0, import_element311.useEffect)(() => {
      if (!intervalInSeconds) {
        return;
      }
      const id = setInterval(
        () => callbackRef.current(),
        intervalInSeconds * 1e3
      );
      return () => clearInterval(id);
    }, [intervalInSeconds]);
  }
  function AutosaveMonitor({ interval, autosave: autosave2 }) {
    const { autosave: autosaveAction } = (0, import_data95.useDispatch)(store);
    const triggerAutosave = autosave2 ?? autosaveAction;
    const { getReferenceByDistinctEdits } = (0, import_data95.useSelect)(import_core_data66.store);
    const { isEditedPostDirty: isEditedPostDirty2, isEditedPostAutosaveable: isEditedPostAutosaveable2, isAutosavingPost: isAutosavingPost2 } = (0, import_data95.useSelect)(store);
    const autosaveInterval = (0, import_data95.useSelect)(
      (select9) => {
        if (interval !== void 0) {
          return interval;
        }
        return select9(store).getEditorSettings().autosaveInterval;
      },
      [interval]
    );
    const lastEditsReferenceRef = (0, import_element311.useRef)();
    useInterval(() => {
      if (!isEditedPostAutosaveable2()) {
        return;
      }
      const editsReference = getReferenceByDistinctEdits();
      const hasNewEdits = editsReference !== lastEditsReferenceRef.current;
      if (hasNewEdits && isEditedPostDirty2() && !isAutosavingPost2()) {
        lastEditsReferenceRef.current = editsReference;
        triggerAutosave();
      }
    }, autosaveInterval);
    return null;
  }

  // packages/editor/build-module/components/document-bar/index.mjs
  var import_i18n231 = __toESM(require_i18n(), 1);
  var import_data104 = __toESM(require_data(), 1);
  var import_components158 = __toESM(require_components(), 1);
  var import_block_editor42 = __toESM(require_block_editor(), 1);
  var import_core_data70 = __toESM(require_core_data(), 1);
  var import_commands3 = __toESM(require_commands(), 1);
  var import_element318 = __toESM(require_element(), 1);
  var import_compose54 = __toESM(require_compose(), 1);
  var import_html_entities16 = __toESM(require_html_entities(), 1);
  var import_dom34 = __toESM(require_dom(), 1);

  // packages/editor/build-module/utils/pageTypeBadge.mjs
  var import_i18n225 = __toESM(require_i18n(), 1);
  var import_data96 = __toESM(require_data(), 1);
  var import_core_data67 = __toESM(require_core_data(), 1);
  function usePageTypeBadge(postId2) {
    const { isFrontPage, isPostsPage, isPrivacyPolicyPage } = (0, import_data96.useSelect)(
      (select9) => {
        const { canUser, getEditedEntityRecord } = select9(import_core_data67.store);
        const siteSettings = canUser("read", {
          kind: "root",
          name: "site"
        }) ? getEditedEntityRecord("root", "site") : void 0;
        const _postId = parseInt(postId2, 10);
        return {
          isFrontPage: siteSettings?.page_on_front === _postId,
          isPostsPage: siteSettings?.page_for_posts === _postId,
          isPrivacyPolicyPage: siteSettings?.page_for_privacy_policy === _postId
        };
      }
    );
    if (isFrontPage) {
      return (0, import_i18n225.__)("Homepage");
    } else if (isPostsPage) {
      return (0, import_i18n225.__)("Posts Page");
    } else if (isPrivacyPolicyPage) {
      return (0, import_i18n225.__)("Privacy Policy Page");
    }
    return false;
  }

  // packages/editor/build-module/components/styles-canvas/index.mjs
  var import_components157 = __toESM(require_components(), 1);
  var import_keycodes10 = __toESM(require_keycodes(), 1);
  var import_i18n230 = __toESM(require_i18n(), 1);
  var import_data102 = __toESM(require_data(), 1);
  var import_compose53 = __toESM(require_compose(), 1);
  var import_preferences11 = __toESM(require_preferences(), 1);

  // packages/editor/build-module/components/styles-canvas/style-book.mjs
  var import_element315 = __toESM(require_element(), 1);

  // packages/editor/build-module/components/style-book/index.mjs
  var import_components153 = __toESM(require_components(), 1);
  var import_i18n228 = __toESM(require_i18n(), 1);
  var import_block_editor39 = __toESM(require_block_editor(), 1);
  var import_data99 = __toESM(require_data(), 1);
  var import_element314 = __toESM(require_element(), 1);
  var import_keycodes8 = __toESM(require_keycodes(), 1);
  var import_media_utils7 = __toESM(require_media_utils(), 1);
  var import_core_data68 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/style-book/constants.mjs
  var import_i18n226 = __toESM(require_i18n(), 1);
  var STYLE_BOOK_COLOR_GROUPS = [
    {
      slug: "theme-colors",
      title: (0, import_i18n226.__)("Theme Colors"),
      origin: "theme",
      type: "colors"
    },
    {
      slug: "theme-gradients",
      title: (0, import_i18n226.__)("Theme Gradients"),
      origin: "theme",
      type: "gradients"
    },
    {
      slug: "custom-colors",
      title: (0, import_i18n226.__)("Custom Colors"),
      origin: "custom",
      type: "colors"
    },
    {
      slug: "custom-gradients",
      title: (0, import_i18n226.__)("Custom Gradients"),
      origin: "custom",
      // User.
      type: "gradients"
    },
    {
      slug: "duotones",
      title: (0, import_i18n226.__)("Duotones"),
      origin: "theme",
      type: "duotones"
    },
    {
      slug: "default-colors",
      title: (0, import_i18n226.__)("Default Colors"),
      origin: "default",
      type: "colors"
    },
    {
      slug: "default-gradients",
      title: (0, import_i18n226.__)("Default Gradients"),
      origin: "default",
      type: "gradients"
    }
  ];
  var STYLE_BOOK_THEME_SUBCATEGORIES = [
    {
      slug: "site-identity",
      title: (0, import_i18n226.__)("Site Identity"),
      blocks: ["core/site-logo", "core/site-title", "core/site-tagline"]
    },
    {
      slug: "design",
      title: (0, import_i18n226.__)("Design"),
      blocks: ["core/navigation", "core/avatar", "core/post-time-to-read"],
      exclude: ["core/home-link", "core/navigation-link"]
    },
    {
      slug: "posts",
      title: (0, import_i18n226.__)("Posts"),
      blocks: [
        "core/post-title",
        "core/post-excerpt",
        "core/post-author",
        "core/post-author-name",
        "core/post-author-biography",
        "core/post-date",
        "core/post-terms",
        "core/term-description",
        "core/query-title",
        "core/query-no-results",
        "core/query-pagination",
        "core/query-numbers"
      ]
    },
    {
      slug: "comments",
      title: (0, import_i18n226.__)("Comments"),
      blocks: [
        "core/comments-title",
        "core/comments-pagination",
        "core/comments-pagination-numbers",
        "core/comments",
        "core/comments-author-name",
        "core/comment-content",
        "core/comment-date",
        "core/comment-edit-link",
        "core/comment-reply-link",
        "core/comment-template",
        "core/post-comments-count",
        "core/post-comments-link"
      ]
    }
  ];
  var STYLE_BOOK_CATEGORIES = [
    {
      slug: "overview",
      title: (0, import_i18n226.__)("Overview"),
      blocks: []
    },
    {
      slug: "text",
      title: (0, import_i18n226.__)("Text"),
      blocks: [
        "core/post-content",
        "core/home-link",
        "core/navigation-link"
      ]
    },
    {
      slug: "colors",
      title: (0, import_i18n226.__)("Colors"),
      blocks: []
    },
    {
      slug: "theme",
      title: (0, import_i18n226.__)("Theme"),
      subcategories: STYLE_BOOK_THEME_SUBCATEGORIES
    },
    {
      slug: "media",
      title: (0, import_i18n226.__)("Media"),
      blocks: ["core/post-featured-image"]
    },
    {
      slug: "widgets",
      title: (0, import_i18n226.__)("Widgets"),
      blocks: []
    },
    {
      slug: "embed",
      title: (0, import_i18n226.__)("Embeds"),
      include: []
    }
  ];
  var STYLE_BOOK_ALL_BLOCKS_SUBCATEGORIES = [
    ...STYLE_BOOK_THEME_SUBCATEGORIES,
    {
      slug: "media",
      title: (0, import_i18n226.__)("Media"),
      blocks: ["core/post-featured-image"]
    },
    {
      slug: "widgets",
      title: (0, import_i18n226.__)("Widgets"),
      blocks: []
    },
    {
      slug: "embed",
      title: (0, import_i18n226.__)("Embeds"),
      include: []
    }
  ];
  var STYLE_BOOK_PREVIEW_CATEGORIES = [
    {
      slug: "overview",
      title: (0, import_i18n226.__)("Overview"),
      blocks: []
    },
    {
      slug: "text",
      title: (0, import_i18n226.__)("Text"),
      blocks: [
        "core/post-content",
        "core/home-link",
        "core/navigation-link"
      ]
    },
    {
      slug: "colors",
      title: (0, import_i18n226.__)("Colors"),
      blocks: []
    },
    {
      slug: "blocks",
      title: (0, import_i18n226.__)("All Blocks"),
      blocks: [],
      subcategories: STYLE_BOOK_ALL_BLOCKS_SUBCATEGORIES
    }
  ];
  var ROOT_CONTAINER = `
	.is-root-container {
		display: flow-root;
	}
`;
  var STYLE_BOOK_IFRAME_STYLES = `
	body {
		position: relative;
		padding: 32px !important;
	}

	${ROOT_CONTAINER}

	.editor-style-book__examples {
		max-width: 1200px;
		margin: 0 auto;
	}

	.editor-style-book__example {
	    max-width: 900px;
		border-radius: 2px;
		cursor: var(--wpds-cursor-control, pointer);
		display: flex;
		flex-direction: column;
		gap: 40px;
		padding: 16px;
		width: 100%;
		box-sizing: border-box;
		scroll-margin-top: 32px;
		scroll-margin-bottom: 32px;
		margin: 0 auto 40px auto;
	}

	.editor-style-book__example.is-selected {
		box-shadow: 0 0 0 1px var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));
	}

	.editor-style-book__example.is-disabled-example {
		pointer-events: none;
	}

	.editor-style-book__example:focus:not(:disabled) {
		box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));
		outline: 3px solid transparent;
	}

	.editor-style-book__duotone-example > div:first-child {
		display: flex;
		aspect-ratio: 16 / 9;
		grid-row: span 1;
		grid-column: span 2;
	}
	.editor-style-book__duotone-example img {
		width: 100%;
		height: 100%;
		object-fit: cover;
	}
	.editor-style-book__duotone-example > div:not(:first-child) {
		height: 20px;
		border: 1px solid color-mix( in srgb, currentColor 10%, transparent );
	}

	.editor-style-book__color-example {
		border: 1px solid color-mix( in srgb, currentColor 10%, transparent );
	}

	.editor-style-book__subcategory-title,
	.editor-style-book__example-title {
		font-family: -apple-system, system-ui, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
		font-size: 13px;
		font-weight: normal;
		line-height: normal;
		margin: 0;
		text-align: left;
		padding-top: 8px;
		border-top: 1px solid color-mix( in srgb, currentColor 10%, transparent );
		color: color-mix( in srgb, currentColor 60%, transparent );
	}

	.editor-style-book__subcategory-title {
		font-size: 16px;
		margin-bottom: 40px;
    	padding-bottom: 8px;
	}

	.editor-style-book__example-preview {
		width: 100%;
	}

	.editor-style-book__example-preview .block-editor-block-list__insertion-point,
	.editor-style-book__example-preview .block-list-appender {
		display: none;
	}
	:where(.is-root-container > .wp-block:first-child) {
		margin-top: 0;
	}
	:where(.is-root-container > .wp-block:last-child) {
		margin-bottom: 0;
	}
`;

  // packages/editor/build-module/components/style-book/categories.mjs
  var import_blocks21 = __toESM(require_blocks(), 1);
  function getExamplesByCategory(categoryDefinition, examples) {
    if (!categoryDefinition?.slug || !examples?.length) {
      return;
    }
    const categories = categoryDefinition?.subcategories ?? [];
    if (categories.length) {
      return categories.reduce(
        (acc, subcategoryDefinition) => {
          const subcategoryExamples = getExamplesByCategory(
            subcategoryDefinition,
            examples
          );
          if (subcategoryExamples) {
            if (!acc.subcategories) {
              acc.subcategories = [];
            }
            acc.subcategories = [
              ...acc.subcategories,
              subcategoryExamples
            ];
          }
          return acc;
        },
        {
          title: categoryDefinition.title,
          slug: categoryDefinition.slug
        }
      );
    }
    const blocksToInclude = categoryDefinition?.blocks || [];
    const blocksToExclude = categoryDefinition?.exclude || [];
    const categoryExamples = examples.filter((example) => {
      return !blocksToExclude.includes(example.name) && (example.category === categoryDefinition.slug || blocksToInclude.includes(example.name));
    });
    if (!categoryExamples.length) {
      return;
    }
    return {
      title: categoryDefinition.title,
      slug: categoryDefinition.slug,
      examples: categoryExamples
    };
  }
  function getTopLevelStyleBookCategories() {
    const reservedCategories = [
      ...STYLE_BOOK_THEME_SUBCATEGORIES,
      ...STYLE_BOOK_CATEGORIES
    ].map(({ slug }) => slug);
    const extraCategories = (0, import_blocks21.getCategories)();
    const extraCategoriesFiltered = extraCategories.filter(
      ({ slug }) => !reservedCategories.includes(slug)
    );
    return [...STYLE_BOOK_CATEGORIES, ...extraCategoriesFiltered];
  }

  // packages/editor/build-module/components/style-book/examples.mjs
  var import_i18n227 = __toESM(require_i18n(), 1);
  var import_blocks22 = __toESM(require_blocks(), 1);

  // packages/editor/build-module/components/style-book/color-examples.mjs
  var import_components151 = __toESM(require_components(), 1);
  var import_block_editor38 = __toESM(require_block_editor(), 1);
  var import_jsx_runtime494 = __toESM(require_jsx_runtime(), 1);
  var ColorExamples = ({
    colors: colors2,
    type,
    templateColumns = "1fr 1fr",
    itemHeight = "52px"
  }) => {
    if (!colors2) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime494.jsx)(import_components151.__experimentalGrid, { templateColumns, rowGap: 8, columnGap: 16, children: colors2.map((color) => {
      const className = type === "gradients" ? (0, import_block_editor38.__experimentalGetGradientClass)(color.slug) : (0, import_block_editor38.getColorClassName)("background-color", color.slug);
      const classes = clsx_default(
        "editor-style-book__color-example",
        className
      );
      return /* @__PURE__ */ (0, import_jsx_runtime494.jsx)(
        "div",
        {
          className: classes,
          style: { height: itemHeight }
        },
        color.slug
      );
    }) });
  };
  var color_examples_default = ColorExamples;

  // packages/editor/build-module/components/style-book/duotone-examples.mjs
  var import_components152 = __toESM(require_components(), 1);
  var import_jsx_runtime495 = __toESM(require_jsx_runtime(), 1);
  var DuotoneExamples = ({ duotones }) => {
    if (!duotones) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime495.jsx)(import_components152.__experimentalGrid, { columns: 2, rowGap: 16, columnGap: 16, children: duotones.map((duotone) => {
      return /* @__PURE__ */ (0, import_jsx_runtime495.jsxs)(
        import_components152.__experimentalGrid,
        {
          className: "editor-style-book__duotone-example",
          columns: 2,
          rowGap: 8,
          columnGap: 8,
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime495.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime495.jsx)(
              "img",
              {
                alt: `Duotone example: ${duotone.slug}`,
                src: "https://s.w.org/images/core/5.3/MtBlanc1.jpg",
                style: {
                  filter: `url(#wp-duotone-${duotone.slug})`
                }
              }
            ) }),
            duotone.colors.map((color) => {
              return /* @__PURE__ */ (0, import_jsx_runtime495.jsx)(
                "div",
                {
                  className: "editor-style-book__color-example",
                  style: { backgroundColor: color }
                },
                color
              );
            })
          ]
        },
        duotone.slug
      );
    }) });
  };
  var duotone_examples_default = DuotoneExamples;

  // packages/editor/build-module/components/style-book/examples.mjs
  var import_jsx_runtime496 = __toESM(require_jsx_runtime(), 1);
  function getColorExamples(colors2) {
    if (!colors2) {
      return [];
    }
    const examples = [];
    STYLE_BOOK_COLOR_GROUPS.forEach((group) => {
      const palette = colors2[group.type];
      const paletteFiltered = Array.isArray(palette) ? palette.find(
        (origin) => origin.slug === group.origin
      ) : void 0;
      if (paletteFiltered?.[group.type]) {
        const example = {
          name: group.slug,
          title: group.title,
          category: "colors"
        };
        if (group.type === "duotones") {
          example.content = /* @__PURE__ */ (0, import_jsx_runtime496.jsx)(
            duotone_examples_default,
            {
              duotones: paletteFiltered[group.type]
            }
          );
          examples.push(example);
        } else {
          example.content = /* @__PURE__ */ (0, import_jsx_runtime496.jsx)(
            color_examples_default,
            {
              colors: paletteFiltered[group.type],
              type: group.type
            }
          );
          examples.push(example);
        }
      }
    });
    return examples;
  }
  function getOverviewBlockExamples(colors2) {
    const examples = [];
    const themePalette = Array.isArray(colors2?.colors) ? colors2.colors.find(
      (origin) => origin.slug === "theme"
    ) : void 0;
    if (themePalette) {
      const themeColorexample = {
        name: "theme-colors",
        title: (0, import_i18n227.__)("Colors"),
        category: "overview",
        content: /* @__PURE__ */ (0, import_jsx_runtime496.jsx)(
          color_examples_default,
          {
            colors: themePalette.colors,
            type: "colors",
            templateColumns: "repeat(auto-fill, minmax( 200px, 1fr ))",
            itemHeight: "32px"
          }
        )
      };
      examples.push(themeColorexample);
    }
    const typographyBlockExamples = [];
    if ((0, import_blocks22.getBlockType)("core/heading")) {
      const headingBlock = (0, import_blocks22.createBlock)("core/heading", {
        // translators: Typography example. Your local alphabet, numbers and some common special characters.
        content: (0, import_i18n227.__)(
          `AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789X{(\u2026)},.-<>?!*&:/A@HELFO\u2122\xA9`
        ),
        level: 1
      });
      typographyBlockExamples.push(headingBlock);
    }
    if ((0, import_blocks22.getBlockType)("core/paragraph")) {
      const firstParagraphBlock = (0, import_blocks22.createBlock)("core/paragraph", {
        content: (0, import_i18n227.__)(
          `A paragraph in a website refers to a distinct block of text that is used to present and organize information. It is a fundamental unit of content in web design and is typically composed of a group of related sentences or thoughts focused on a particular topic or idea. Paragraphs play a crucial role in improving the readability and user experience of a website. They break down the text into smaller, manageable chunks, allowing readers to scan the content more easily.`
        )
      });
      const secondParagraphBlock = (0, import_blocks22.createBlock)("core/paragraph", {
        content: (0, import_i18n227.__)(
          `Additionally, paragraphs help structure the flow of information and provide logical breaks between different concepts or pieces of information. In terms of formatting, paragraphs in websites are commonly denoted by a vertical gap or indentation between each block of text. This visual separation helps visually distinguish one paragraph from another, creating a clear and organized layout that guides the reader through the content smoothly.`
        )
      });
      if ((0, import_blocks22.getBlockType)("core/group")) {
        const groupBlock = (0, import_blocks22.createBlock)(
          "core/group",
          {
            layout: {
              type: "grid",
              columnCount: 2,
              minimumColumnWidth: "12rem"
            },
            style: {
              spacing: {
                blockGap: "1.5rem"
              }
            }
          },
          [firstParagraphBlock, secondParagraphBlock]
        );
        typographyBlockExamples.push(groupBlock);
      } else {
        typographyBlockExamples.push(firstParagraphBlock);
      }
    }
    if (!!typographyBlockExamples.length) {
      examples.push({
        name: "typography",
        title: (0, import_i18n227.__)("Typography"),
        category: "overview",
        blocks: typographyBlockExamples
      });
    }
    const otherBlockExamples = [
      "core/image",
      "core/separator",
      "core/buttons",
      "core/pullquote",
      "core/search"
    ];
    otherBlockExamples.forEach((blockName) => {
      const blockType = (0, import_blocks22.getBlockType)(blockName);
      if (blockType && blockType.example) {
        const blockExample = {
          name: blockName,
          title: blockType.title,
          category: "overview",
          /*
           * CSS generated from style attributes will take precedence over global styles CSS,
           * so remove the style attribute from the example to ensure the example
           * demonstrates changes to global styles.
           */
          blocks: (0, import_blocks22.getBlockFromExample)(blockName, {
            ...blockType.example,
            attributes: {
              ...blockType.example.attributes,
              style: void 0
            }
          })
        };
        examples.push(blockExample);
      }
    });
    return examples;
  }
  function getExamples(colors2) {
    const nonHeadingBlockExamples = (0, import_blocks22.getBlockTypes)().filter((blockType) => {
      const { name: name2, example, supports } = blockType;
      return name2 !== "core/heading" && !!example && supports?.inserter !== false;
    }).map((blockType) => ({
      name: blockType.name,
      title: blockType.title,
      category: blockType.category,
      /*
       * CSS generated from style attributes will take precedence over global styles CSS,
       * so remove the style attribute from the example to ensure the example
       * demonstrates changes to global styles.
       */
      blocks: (0, import_blocks22.getBlockFromExample)(blockType.name, {
        ...blockType.example,
        attributes: {
          ...blockType.example?.attributes,
          style: void 0
        }
      })
    }));
    const isHeadingBlockRegistered = !!(0, import_blocks22.getBlockType)("core/heading");
    if (!isHeadingBlockRegistered) {
      return nonHeadingBlockExamples;
    }
    const headingsExample = {
      name: "core/heading",
      title: (0, import_i18n227.__)("Headings"),
      category: "text",
      blocks: [1, 2, 3, 4, 5, 6].map((level) => {
        return (0, import_blocks22.createBlock)("core/heading", {
          content: (0, import_i18n227.sprintf)(
            // translators: %d: heading level e.g: "1", "2", "3"
            (0, import_i18n227.__)("Heading %d"),
            level
          ),
          level
        });
      })
    };
    const colorExamples = getColorExamples(colors2);
    const overviewBlockExamples = getOverviewBlockExamples(colors2);
    return [
      headingsExample,
      ...colorExamples,
      ...nonHeadingBlockExamples,
      ...overviewBlockExamples
    ];
  }

  // packages/editor/build-module/components/global-styles-renderer/index.mjs
  var import_element313 = __toESM(require_element(), 1);
  var import_data98 = __toESM(require_data(), 1);

  // packages/editor/build-module/hooks/use-global-styles-output.mjs
  var import_blocks23 = __toESM(require_blocks(), 1);
  var import_data97 = __toESM(require_data(), 1);
  var import_element312 = __toESM(require_element(), 1);
  function useGlobalStylesOutputWithConfig(mergedConfig = {}, disableRootPadding = false) {
    const { disableLayoutStyles, getBlockStyles } = (0, import_data97.useSelect)((select9) => {
      const { getEditorSettings: getEditorSettings2 } = select9(store);
      const { getBlockStyles: getBlockStylesSelector } = select9(import_blocks23.store);
      const settings = getEditorSettings2();
      return {
        disableLayoutStyles: !!settings?.disableLayoutStyles,
        getBlockStyles: getBlockStylesSelector
      };
    }, []);
    return (0, import_element312.useMemo)(() => {
      if (!mergedConfig?.styles || !mergedConfig?.settings) {
        return [[], {}];
      }
      const blockTypes = (0, import_blocks23.getBlockTypes)();
      return generateGlobalStyles(mergedConfig, blockTypes, {
        disableLayoutStyles,
        disableRootPadding,
        getBlockStyles
      });
    }, [
      mergedConfig,
      disableLayoutStyles,
      disableRootPadding,
      getBlockStyles
    ]);
  }
  function useGlobalStylesOutput(disableRootPadding = false) {
    const { merged: mergedConfig } = useGlobalStyles();
    return useGlobalStylesOutputWithConfig(mergedConfig, disableRootPadding);
  }

  // packages/editor/build-module/components/global-styles-renderer/index.mjs
  function useGlobalStylesRenderer(disableRootPadding) {
    const [styles, settings] = useGlobalStylesOutput(disableRootPadding);
    const { getEditorSettings: getEditorSettings2 } = (0, import_data98.useSelect)(store);
    const { updateEditorSettings: updateEditorSettings2 } = (0, import_data98.useDispatch)(store);
    (0, import_element313.useEffect)(() => {
      if (!styles || !settings) {
        return;
      }
      const currentStoreSettings = getEditorSettings2();
      const nonGlobalStyles = Object.values(
        currentStoreSettings.styles ?? []
      ).filter((style) => !style.isGlobalStyles);
      updateEditorSettings2({
        ...currentStoreSettings,
        styles: [...nonGlobalStyles, ...styles],
        __experimentalFeatures: settings
      });
    }, [styles, settings, updateEditorSettings2, getEditorSettings2]);
  }
  function GlobalStylesRenderer({ disableRootPadding }) {
    useGlobalStylesRenderer(disableRootPadding);
    return null;
  }

  // packages/editor/build-module/components/style-book/index.mjs
  var import_jsx_runtime497 = __toESM(require_jsx_runtime(), 1);
  var { ExperimentalBlockEditorProvider: ExperimentalBlockEditorProvider2 } = unlock(import_block_editor39.privateApis);
  function isObjectEmpty(object) {
    return !object || Object.keys(object).length === 0;
  }
  var scrollToSection = (anchorId, iframe) => {
    if (!anchorId || !iframe || !iframe?.contentDocument) {
      return;
    }
    const element = anchorId === "top" ? iframe.contentDocument.body : iframe.contentDocument.getElementById(anchorId);
    if (element) {
      element.scrollIntoView({
        behavior: "smooth"
      });
    }
  };
  var getStyleBookNavigationFromPath = (path) => {
    if (path && typeof path === "string") {
      if (path === "/" || path.startsWith("/typography") || path.startsWith("/colors") || path.startsWith("/blocks")) {
        return {
          top: true
        };
      }
    }
    return null;
  };
  function useMultiOriginPalettes() {
    const { colors: colors2, gradients } = (0, import_block_editor39.__experimentalUseMultipleOriginColorsAndGradients)();
    const [
      shouldDisplayDefaultDuotones,
      customDuotones,
      themeDuotones,
      defaultDuotones
    ] = (0, import_block_editor39.useSettings)(
      "color.defaultDuotone",
      "color.duotone.custom",
      "color.duotone.theme",
      "color.duotone.default"
    );
    const palettes = (0, import_element314.useMemo)(() => {
      const result = { colors: colors2, gradients, duotones: [] };
      if (themeDuotones && themeDuotones.length) {
        result.duotones.push({
          name: (0, import_i18n228._x)(
            "Theme",
            "Indicates these duotone filters come from the theme."
          ),
          slug: "theme",
          duotones: themeDuotones
        });
      }
      if (shouldDisplayDefaultDuotones && defaultDuotones && defaultDuotones.length) {
        result.duotones.push({
          name: (0, import_i18n228._x)(
            "Default",
            "Indicates these duotone filters come from WordPress."
          ),
          slug: "default",
          duotones: defaultDuotones
        });
      }
      if (customDuotones && customDuotones.length) {
        result.duotones.push({
          name: (0, import_i18n228._x)(
            "Custom",
            "Indicates these doutone filters are created by the user."
          ),
          slug: "custom",
          duotones: customDuotones
        });
      }
      return result;
    }, [
      colors2,
      gradients,
      customDuotones,
      themeDuotones,
      defaultDuotones,
      shouldDisplayDefaultDuotones
    ]);
    return palettes;
  }
  function getExamplesForSinglePageUse(examples) {
    const examplesForSinglePageUse = [];
    const overviewCategoryExamples = getExamplesByCategory(
      { slug: "overview" },
      examples
    );
    examplesForSinglePageUse.push(...overviewCategoryExamples.examples);
    const otherExamples = examples.filter((example) => {
      return example.category !== "overview" && !overviewCategoryExamples.examples.find(
        (overviewExample) => overviewExample.name === example.name
      );
    });
    examplesForSinglePageUse.push(...otherExamples);
    return examplesForSinglePageUse;
  }
  function applyBlockVariationsToExamples(examples, variation) {
    if (!variation) {
      return examples;
    }
    return examples.map((example) => {
      return {
        ...example,
        variation,
        blocks: Array.isArray(example.blocks) ? example.blocks.map((block) => ({
          ...block,
          attributes: {
            ...block.attributes,
            style: void 0,
            className: `is-style-${variation}`
          }
        })) : {
          ...example.blocks,
          attributes: {
            ...example.blocks.attributes,
            style: void 0,
            className: `is-style-${variation}`
          }
        }
      };
    });
  }
  function StyleBook({
    isSelected: isSelected2,
    onClick,
    onSelect,
    showTabs = true,
    userConfig = {},
    path = ""
  }, ref) {
    const textColor = useStyle2("color.text");
    const backgroundColor = useStyle2("color.background");
    const colors2 = useMultiOriginPalettes();
    const examples = (0, import_element314.useMemo)(() => getExamples(colors2), [colors2]);
    const tabs = (0, import_element314.useMemo)(
      () => getTopLevelStyleBookCategories().filter(
        (category) => examples.some(
          (example) => example.category === category.slug
        )
      ),
      [examples]
    );
    const examplesForSinglePageUse = getExamplesForSinglePageUse(examples);
    const { base: baseConfig } = useGlobalStyles();
    const goTo = getStyleBookNavigationFromPath(path);
    const mergedConfig = (0, import_element314.useMemo)(() => {
      if (!isObjectEmpty(userConfig) && !isObjectEmpty(baseConfig)) {
        return mergeGlobalStyles(baseConfig, userConfig);
      }
      return {};
    }, [baseConfig, userConfig]);
    const originalSettings = (0, import_data99.useSelect)(
      (select9) => select9(import_block_editor39.store).getSettings(),
      []
    );
    const [globalStyles] = useGlobalStylesOutputWithConfig(mergedConfig);
    const settings = (0, import_element314.useMemo)(
      () => ({
        ...originalSettings,
        styles: !isObjectEmpty(globalStyles) && !isObjectEmpty(userConfig) ? globalStyles : originalSettings.styles,
        isPreviewMode: true
      }),
      [globalStyles, originalSettings, userConfig]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(
      "div",
      {
        ref,
        className: clsx_default("editor-style-book", {
          "is-button": !!onClick
        }),
        style: {
          color: textColor,
          background: backgroundColor
        },
        children: showTabs ? /* @__PURE__ */ (0, import_jsx_runtime497.jsxs)(
          tabs_exports.Root,
          {
            className: "editor-style-book__tabs",
            defaultValue: tabs[0]?.slug,
            children: [
              /* @__PURE__ */ (0, import_jsx_runtime497.jsx)("div", { className: "editor-style-book__tablist-container", children: /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(tabs_exports.List, { children: tabs.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(tabs_exports.Tab, { value: tab.slug, children: tab.title }, tab.slug)) }) }),
              tabs.map((tab) => {
                const categoryDefinition = tab.slug ? getTopLevelStyleBookCategories().find(
                  (_category) => _category.slug === tab.slug
                ) : null;
                const filteredExamples = categoryDefinition ? getExamplesByCategory(
                  categoryDefinition,
                  examples
                ) : { examples };
                return /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(
                  tabs_exports.Panel,
                  {
                    value: tab.slug,
                    tabIndex: -1,
                    className: "editor-style-book__tabpanel",
                    children: /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(
                      StyleBookBody,
                      {
                        category: tab.slug,
                        examples: filteredExamples,
                        isSelected: isSelected2,
                        onSelect,
                        settings,
                        title: tab.title,
                        goTo
                      }
                    )
                  },
                  tab.slug
                );
              })
            ]
          }
        ) : /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(
          StyleBookBody,
          {
            examples: { examples: examplesForSinglePageUse },
            isSelected: isSelected2,
            onClick,
            onSelect,
            settings,
            goTo
          }
        )
      }
    );
  }
  var StyleBookPreview = ({
    userConfig = {},
    isStatic = false,
    path,
    onPathChange,
    settings: settingsProp
  }) => {
    const editorSettings2 = (0, import_data99.useSelect)(
      (select9) => settingsProp ?? select9(store).getEditorSettings(),
      [settingsProp]
    );
    const canUserUploadMedia = (0, import_data99.useSelect)(
      (select9) => select9(import_core_data68.store).canUser("create", {
        kind: "postType",
        name: "attachment"
      }),
      []
    );
    (0, import_element314.useEffect)(() => {
      (0, import_data99.dispatch)(import_block_editor39.store).updateSettings({
        ...editorSettings2,
        mediaUpload: canUserUploadMedia ? import_media_utils7.uploadMedia : void 0
      });
    }, [editorSettings2, canUserUploadMedia]);
    const [internalPath, setInternalPath] = (0, import_element314.useState)("/");
    const section = path ?? internalPath;
    const onChangeSection = onPathChange ?? setInternalPath;
    const isSelected2 = (blockName) => {
      return section === `/blocks/${encodeURIComponent(blockName)}` || section.startsWith(
        `/blocks/${encodeURIComponent(blockName)}/`
      );
    };
    const onSelect = (blockName, isBlockVariation = false) => {
      if (STYLE_BOOK_COLOR_GROUPS.find(
        (group) => group.slug === blockName
      )) {
        onChangeSection("/colors/palette");
        return;
      }
      if (blockName === "typography") {
        onChangeSection("/typography");
        return;
      }
      if (isBlockVariation) {
        return;
      }
      onChangeSection(`/blocks/${encodeURIComponent(blockName)}`);
    };
    const colors2 = useMultiOriginPalettes();
    const examples = getExamples(colors2);
    const examplesForSinglePageUse = getExamplesForSinglePageUse(examples);
    let previewCategory = null;
    let blockVariation = null;
    if (section.includes("/colors")) {
      previewCategory = "colors";
    } else if (section.includes("/typography")) {
      previewCategory = "text";
    } else if (section.includes("/blocks")) {
      previewCategory = "blocks";
      let blockName = decodeURIComponent(section).split("/blocks/")[1];
      if (blockName?.includes("/variations")) {
        [blockName, blockVariation] = blockName.split("/variations/");
      }
      if (blockName && examples.find((example) => example.name === blockName)) {
        previewCategory = blockName;
      }
    } else if (!isStatic) {
      previewCategory = "overview";
    }
    const categoryDefinition = STYLE_BOOK_PREVIEW_CATEGORIES.find(
      (category) => category.slug === previewCategory
    );
    const filteredExamples = (0, import_element314.useMemo)(() => {
      if (!categoryDefinition) {
        return {
          examples: [
            examples.find(
              (example) => example.name === previewCategory
            )
          ]
        };
      }
      return getExamplesByCategory(categoryDefinition, examples);
    }, [categoryDefinition, examples, previewCategory]);
    const displayedExamples = (0, import_element314.useMemo)(() => {
      if (!previewCategory) {
        return { examples: examplesForSinglePageUse };
      }
      if (blockVariation && filteredExamples?.examples?.length) {
        return {
          examples: applyBlockVariationsToExamples(
            filteredExamples.examples,
            blockVariation
          )
        };
      }
      return filteredExamples;
    }, [
      previewCategory,
      examplesForSinglePageUse,
      blockVariation,
      filteredExamples
    ]);
    const { base: baseConfig } = useGlobalStyles();
    const goTo = getStyleBookNavigationFromPath(section);
    const mergedConfig = (0, import_element314.useMemo)(() => {
      if (!isObjectEmpty(userConfig) && !isObjectEmpty(baseConfig)) {
        return mergeGlobalStyles(baseConfig, userConfig);
      }
      return {};
    }, [baseConfig, userConfig]);
    const [globalStyles] = useGlobalStylesOutputWithConfig(mergedConfig);
    const settings = (0, import_element314.useMemo)(
      () => ({
        ...editorSettings2,
        styles: !isObjectEmpty(globalStyles) && !isObjectEmpty(userConfig) ? globalStyles : editorSettings2.styles,
        isPreviewMode: true
      }),
      [globalStyles, editorSettings2, userConfig]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime497.jsx)("div", { className: "editor-style-book", children: /* @__PURE__ */ (0, import_jsx_runtime497.jsxs)(import_block_editor39.BlockEditorProvider, { settings, children: [
      /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(GlobalStylesRenderer, { disableRootPadding: true }),
      /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(
        StyleBookBody,
        {
          examples: displayedExamples,
          settings,
          goTo,
          isSelected: !isStatic ? isSelected2 : null,
          onSelect: !isStatic ? onSelect : null
        }
      )
    ] }) });
  };
  var StyleBookBody = ({
    examples,
    isSelected: isSelected2,
    onClick,
    onSelect,
    settings,
    title,
    goTo
  }) => {
    const [isFocused, setIsFocused] = (0, import_element314.useState)(false);
    const [hasIframeLoaded, setHasIframeLoaded] = (0, import_element314.useState)(false);
    const iframeRef = (0, import_element314.useRef)(null);
    const buttonModeProps = {
      role: "button",
      onFocus: () => setIsFocused(true),
      onBlur: () => setIsFocused(false),
      onKeyDown: (event) => {
        if (event.defaultPrevented) {
          return;
        }
        const { keyCode } = event;
        if (onClick && (keyCode === import_keycodes8.ENTER || keyCode === import_keycodes8.SPACE)) {
          event.preventDefault();
          onClick(event);
        }
      },
      onClick: (event) => {
        if (event.defaultPrevented) {
          return;
        }
        if (onClick) {
          event.preventDefault();
          onClick(event);
        }
      },
      readonly: true
    };
    const handleLoad = () => setHasIframeLoaded(true);
    (0, import_element314.useLayoutEffect)(() => {
      if (hasIframeLoaded && iframeRef.current && goTo?.top) {
        scrollToSection("top", iframeRef.current);
      }
    }, [goTo?.top, hasIframeLoaded]);
    return /* @__PURE__ */ (0, import_jsx_runtime497.jsxs)(
      import_block_editor39.__unstableIframe,
      {
        onLoad: handleLoad,
        ref: iframeRef,
        className: clsx_default("editor-style-book__iframe", {
          "is-focused": isFocused && !!onClick,
          "is-button": !!onClick
        }),
        name: "style-book-canvas",
        tabIndex: 0,
        ...onClick ? buttonModeProps : {},
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(import_block_editor39.__unstableEditorStyles, { styles: settings.styles }),
          /* @__PURE__ */ (0, import_jsx_runtime497.jsxs)("style", { children: [
            STYLE_BOOK_IFRAME_STYLES,
            !!onClick && "body { cursor: var(--wpds-cursor-control, pointer); } body * { pointer-events: none; }"
          ] }),
          /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(
            Examples,
            {
              className: "editor-style-book__examples",
              filteredExamples: examples,
              label: title ? (0, import_i18n228.sprintf)(
                // translators: %s: Category of blocks, e.g. Text.
                (0, import_i18n228.__)("Examples of blocks in the %s category"),
                title
              ) : (0, import_i18n228.__)("Examples of blocks"),
              isSelected: isSelected2,
              onSelect
            },
            title
          )
        ]
      }
    );
  };
  var Examples = (0, import_element314.memo)(
    ({ className, filteredExamples, label, isSelected: isSelected2, onSelect }) => {
      return /* @__PURE__ */ (0, import_jsx_runtime497.jsxs)(
        import_components153.Composite,
        {
          orientation: "vertical",
          className,
          "aria-label": label,
          role: "grid",
          children: [
            !!filteredExamples?.examples?.length && filteredExamples.examples.map((example) => /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(
              Example,
              {
                id: `example-${example.name}`,
                title: example.title,
                content: example.content,
                blocks: example.blocks,
                isSelected: isSelected2?.(example.name),
                onClick: !!onSelect ? () => onSelect(
                  example.name,
                  !!example.variation
                ) : null
              },
              example.name
            )),
            !!filteredExamples?.subcategories?.length && filteredExamples.subcategories.map((subcategory) => /* @__PURE__ */ (0, import_jsx_runtime497.jsxs)(
              import_components153.Composite.Group,
              {
                className: "editor-style-book__subcategory",
                children: [
                  /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(import_components153.Composite.GroupLabel, { children: /* @__PURE__ */ (0, import_jsx_runtime497.jsx)("h2", { className: "editor-style-book__subcategory-title", children: subcategory.title }) }),
                  /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(
                    Subcategory,
                    {
                      examples: subcategory.examples,
                      isSelected: isSelected2,
                      onSelect
                    }
                  )
                ]
              },
              `subcategory-${subcategory.slug}`
            ))
          ]
        }
      );
    }
  );
  var Subcategory = ({ examples, isSelected: isSelected2, onSelect }) => {
    return !!examples?.length && examples.map((example) => /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(
      Example,
      {
        id: `example-${example.name}`,
        title: example.title,
        content: example.content,
        blocks: example.blocks,
        isSelected: isSelected2?.(example.name),
        onClick: !!onSelect ? () => onSelect(example.name) : null
      },
      example.name
    ));
  };
  var disabledExamples = ["example-duotones"];
  var Example = ({ id, title, blocks, isSelected: isSelected2, onClick, content }) => {
    const originalSettings = (0, import_data99.useSelect)(
      (select9) => select9(import_block_editor39.store).getSettings(),
      []
    );
    const settings = (0, import_element314.useMemo)(
      () => ({
        ...originalSettings,
        isPreviewMode: true
      }),
      [originalSettings]
    );
    const renderedBlocks = (0, import_element314.useMemo)(
      () => Array.isArray(blocks) ? blocks : [blocks],
      [blocks]
    );
    const disabledProps = disabledExamples.includes(id) || !onClick ? {
      disabled: true,
      accessibleWhenDisabled: !!onClick
    } : {};
    return /* @__PURE__ */ (0, import_jsx_runtime497.jsx)("div", { role: "row", children: /* @__PURE__ */ (0, import_jsx_runtime497.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime497.jsxs)(
      import_components153.Composite.Item,
      {
        className: clsx_default("editor-style-book__example", {
          "is-selected": isSelected2,
          "is-disabled-example": !!disabledProps?.disabled
        }),
        id,
        "aria-label": !!onClick ? (0, import_i18n228.sprintf)(
          // translators: %s: Title of a block, e.g. Heading.
          (0, import_i18n228.__)("Open %s styles in Styles panel"),
          title
        ) : void 0,
        render: /* @__PURE__ */ (0, import_jsx_runtime497.jsx)("div", {}),
        role: !!onClick ? "button" : null,
        onClick,
        ...disabledProps,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime497.jsx)("span", { className: "editor-style-book__example-title", children: title }),
          /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(
            "div",
            {
              className: "editor-style-book__example-preview",
              "aria-hidden": true,
              children: /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(import_components153.Disabled, { className: "editor-style-book__example-preview__content", children: content ? content : /* @__PURE__ */ (0, import_jsx_runtime497.jsxs)(
                ExperimentalBlockEditorProvider2,
                {
                  value: renderedBlocks,
                  settings,
                  children: [
                    /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(import_block_editor39.__unstableEditorStyles, {}),
                    /* @__PURE__ */ (0, import_jsx_runtime497.jsx)(import_block_editor39.BlockList, { renderAppender: false })
                  ]
                }
              ) })
            }
          )
        ]
      }
    ) }) });
  };
  var style_book_default = (0, import_element314.forwardRef)(StyleBook);

  // packages/editor/build-module/components/styles-canvas/style-book.mjs
  var import_jsx_runtime498 = __toESM(require_jsx_runtime(), 1);
  function StyleBookWithNavigation({
    path,
    onPathChange,
    userConfig,
    forwardedRef
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime498.jsx)(
      style_book_default,
      {
        ref: forwardedRef,
        path,
        userConfig,
        isSelected: (blockName) => (
          // Match '/blocks/core%2Fbutton' and
          // '/blocks/core%2Fbutton/typography', but not
          // '/blocks/core%2Fbuttons'.
          path === `/blocks/${encodeURIComponent(blockName)}` || path?.startsWith(
            `/blocks/${encodeURIComponent(blockName)}/`
          )
        ),
        onSelect: (blockName) => {
          if (STYLE_BOOK_COLOR_GROUPS.find(
            (group) => group.slug === blockName
          )) {
            onPathChange?.("/colors/palette");
            return;
          }
          if (blockName === "typography") {
            onPathChange?.("/typography");
            return;
          }
          onPathChange?.("/blocks/" + encodeURIComponent(blockName));
        }
      }
    );
  }
  function StylesCanvasRevisionStyleBook({ path, onPathChange, forwardedRef }) {
    const { user: userConfig } = useGlobalStyles();
    const { revisions, isLoading } = useGlobalStylesRevisions();
    const revisionId2 = (0, import_element315.useMemo)(() => {
      const match3 = path?.match(/^\/revisions\/(.+)$/);
      return match3 ? match3[1] : null;
    }, [path]);
    const selectedRevision = (0, import_element315.useMemo)(() => {
      if (!revisionId2 || !revisions.length) {
        return null;
      }
      return revisions.find(
        (revision) => String(revision.id) === String(revisionId2)
      );
    }, [revisionId2, revisions]);
    if (isLoading) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime498.jsx)(
      StyleBookWithNavigation,
      {
        forwardedRef,
        path,
        onPathChange,
        userConfig: selectedRevision || userConfig
      }
    );
  }
  function StylesCanvasStyleBook({ path, onPathChange }, ref) {
    if (path?.startsWith("/revisions")) {
      return /* @__PURE__ */ (0, import_jsx_runtime498.jsx)(
        StylesCanvasRevisionStyleBook,
        {
          forwardedRef: ref,
          path,
          onPathChange
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime498.jsx)(
      StyleBookWithNavigation,
      {
        forwardedRef: ref,
        path,
        onPathChange
      }
    );
  }
  var style_book_default2 = (0, import_element315.forwardRef)(StylesCanvasStyleBook);

  // packages/editor/build-module/components/styles-canvas/revisions.mjs
  var import_components154 = __toESM(require_components(), 1);
  var import_block_editor40 = __toESM(require_block_editor(), 1);
  var import_data100 = __toESM(require_data(), 1);
  var import_element316 = __toESM(require_element(), 1);
  var import_jsx_runtime499 = __toESM(require_jsx_runtime(), 1);
  var {
    ExperimentalBlockEditorProvider: ExperimentalBlockEditorProvider3,
    BlockStyleVariationOverridesWithConfig
  } = unlock(import_block_editor40.privateApis);
  function isObjectEmpty2(object) {
    return !object || Object.keys(object).length === 0;
  }
  function StylesCanvasRevisions({ path }, ref) {
    const blocks = (0, import_data100.useSelect)((select9) => {
      return select9(import_block_editor40.store).getBlocks();
    }, []);
    const { user: userConfig, base: baseConfig } = useGlobalStyles();
    const { revisions, isLoading } = useGlobalStylesRevisions();
    const revisionId2 = (0, import_element316.useMemo)(() => {
      const match3 = path?.match(/^\/revisions\/(.+)$/);
      return match3 ? match3[1] : null;
    }, [path]);
    const selectedRevision = (0, import_element316.useMemo)(() => {
      if (!revisionId2 || !revisions.length) {
        return null;
      }
      return revisions.find(
        (rev) => String(rev.id) === String(revisionId2)
      );
    }, [revisionId2, revisions]);
    const displayConfig = selectedRevision || userConfig;
    const mergedConfig = (0, import_element316.useMemo)(() => {
      if (!isObjectEmpty2(displayConfig) && !isObjectEmpty2(baseConfig)) {
        return mergeGlobalStyles(baseConfig, displayConfig);
      }
      return {};
    }, [baseConfig, displayConfig]);
    const renderedBlocksArray = (0, import_element316.useMemo)(
      () => Array.isArray(blocks) ? blocks : [blocks],
      [blocks]
    );
    const originalSettings = (0, import_data100.useSelect)(
      (select9) => select9(import_block_editor40.store).getSettings(),
      []
    );
    const settings = (0, import_element316.useMemo)(
      () => ({
        ...originalSettings,
        isPreviewMode: true
      }),
      [originalSettings]
    );
    const [globalStyles] = useGlobalStylesOutputWithConfig(mergedConfig);
    const editorStyles = !isObjectEmpty2(globalStyles) && !isObjectEmpty2(displayConfig) ? globalStyles : settings.styles;
    if (isLoading) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime499.jsxs)(
      import_block_editor40.__unstableIframe,
      {
        ref,
        className: "editor-revisions__iframe",
        name: "revisions",
        tabIndex: 0,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime499.jsx)("style", {
            // Forming a "block formatting context" to prevent margin collapsing.
            // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context
            children: `.is-root-container { display: flow-root; }`
          }),
          /* @__PURE__ */ (0, import_jsx_runtime499.jsx)(import_components154.Disabled, { className: "editor-revisions__example-preview__content", children: /* @__PURE__ */ (0, import_jsx_runtime499.jsxs)(
            ExperimentalBlockEditorProvider3,
            {
              value: renderedBlocksArray,
              settings,
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime499.jsx)(import_block_editor40.BlockList, { renderAppender: false }),
                /* @__PURE__ */ (0, import_jsx_runtime499.jsx)(import_block_editor40.__unstableEditorStyles, { styles: editorStyles }),
                /* @__PURE__ */ (0, import_jsx_runtime499.jsx)(
                  BlockStyleVariationOverridesWithConfig,
                  {
                    config: mergedConfig
                  }
                )
              ]
            }
          ) })
        ]
      }
    );
  }
  var revisions_default = (0, import_element316.forwardRef)(StylesCanvasRevisions);

  // packages/editor/build-module/components/resizable-editor/index.mjs
  var import_data101 = __toESM(require_data(), 1);
  var import_element317 = __toESM(require_element(), 1);
  var import_components156 = __toESM(require_components(), 1);
  var import_compose52 = __toESM(require_compose(), 1);

  // packages/editor/build-module/components/resizable-editor/resize-handle.mjs
  var import_i18n229 = __toESM(require_i18n(), 1);
  var import_keycodes9 = __toESM(require_keycodes(), 1);
  var import_components155 = __toESM(require_components(), 1);
  var import_jsx_runtime500 = __toESM(require_jsx_runtime(), 1);
  var DELTA_DISTANCE = 20;
  function ResizeHandle({ direction, resizeWidthBy }) {
    function handleKeyDown(event) {
      const { keyCode } = event;
      if (keyCode !== import_keycodes9.LEFT && keyCode !== import_keycodes9.RIGHT) {
        return;
      }
      event.preventDefault();
      if (direction === "left" && keyCode === import_keycodes9.LEFT || direction === "right" && keyCode === import_keycodes9.RIGHT) {
        resizeWidthBy(DELTA_DISTANCE);
      } else if (direction === "left" && keyCode === import_keycodes9.RIGHT || direction === "right" && keyCode === import_keycodes9.LEFT) {
        resizeWidthBy(-DELTA_DISTANCE);
      }
    }
    const resizeHandleVariants = {
      active: {
        opacity: 1,
        scaleY: 1.3
      }
    };
    const resizableHandleHelpId = `resizable-editor__resize-help-${direction}`;
    return /* @__PURE__ */ (0, import_jsx_runtime500.jsxs)(import_jsx_runtime500.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime500.jsxs)(tooltip_exports.Root, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime500.jsx)(
          tooltip_exports.Trigger,
          {
            render: /* @__PURE__ */ (0, import_jsx_runtime500.jsx)(
              import_components155.__unstableMotion.button,
              {
                className: `editor-resizable-editor__resize-handle is-${direction}`,
                "aria-label": (0, import_i18n229.__)("Drag to resize"),
                "aria-describedby": resizableHandleHelpId,
                onKeyDown: handleKeyDown,
                variants: resizeHandleVariants,
                whileFocus: "active",
                whileHover: "active",
                whileTap: "active",
                role: "separator",
                "aria-orientation": "vertical"
              },
              "handle"
            )
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime500.jsx)(tooltip_exports.Popup, { children: (0, import_i18n229.__)("Drag to resize") })
      ] }),
      /* @__PURE__ */ (0, import_jsx_runtime500.jsx)(VisuallyHidden, { id: resizableHandleHelpId, children: (0, import_i18n229.__)("Use left and right arrow keys to resize the canvas.") })
    ] });
  }

  // packages/editor/build-module/components/resizable-editor/index.mjs
  var import_jsx_runtime501 = __toESM(require_jsx_runtime(), 1);
  var HANDLE_STYLES_OVERRIDE = {
    position: void 0,
    userSelect: void 0,
    cursor: void 0,
    width: void 0,
    height: void 0,
    top: void 0,
    right: void 0,
    bottom: void 0,
    left: void 0
  };
  function isAtMaxWidth(currentWidth, containerWidth, tolerance = 0) {
    return containerWidth > 0 && currentWidth >= containerWidth - tolerance;
  }
  function ResizableEditor({
    className,
    enableResizing,
    width = "100%",
    height = "100%",
    children
  }) {
    const [isResizing, setIsResizing] = (0, import_element317.useState)(false);
    const disableMotion = (0, import_compose52.useReducedMotion)();
    const { setCanvasWidth: setCanvasWidth2 } = unlock((0, import_data101.useDispatch)(store));
    const resizableRef = (0, import_element317.useRef)();
    const resizeWidthBy = (0, import_element317.useCallback)(
      (deltaPixels) => {
        if (resizableRef.current) {
          const _isAtMaxWidth = isAtMaxWidth(
            resizableRef.current.offsetWidth + deltaPixels,
            resizableRef.current.parentElement?.offsetWidth ?? 0,
            80
          );
          setCanvasWidth2(
            _isAtMaxWidth ? void 0 : resizableRef.current.offsetWidth + deltaPixels
          );
        }
      },
      [setCanvasWidth2]
    );
    const updateCanvasWidth = (0, import_element317.useCallback)(
      (element, isResizeEnd) => {
        const currentWidth = element.offsetWidth;
        const containerWidth = element.parentElement?.offsetWidth ?? 0;
        setCanvasWidth2(
          isResizeEnd && isAtMaxWidth(currentWidth, containerWidth, 80) ? void 0 : currentWidth
        );
      },
      [setCanvasWidth2]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime501.jsx)(
      import_components156.ResizableBox,
      {
        as: import_components156.__unstableMotion.div,
        initial: false,
        animate: { height },
        transition: {
          type: "tween",
          duration: isResizing || disableMotion ? 0 : 0.2,
          ease: "easeOut"
        },
        className: clsx_default("editor-resizable-editor", className, {
          "is-resizable": enableResizing,
          "is-resizing": isResizing
        }),
        ref: (api) => {
          resizableRef.current = api?.resizable;
        },
        size: {
          width,
          height
        },
        onResizeStart: () => {
          setIsResizing(true);
        },
        onResize: (event, direction, element) => {
          updateCanvasWidth(element);
        },
        onResizeStop: (event, direction, element) => {
          updateCanvasWidth(element, true);
          setIsResizing(false);
        },
        minWidth: 300,
        maxWidth: "100%",
        maxHeight: "100%",
        enable: {
          left: enableResizing,
          right: enableResizing
        },
        showHandle: enableResizing,
        resizeRatio: 2,
        handleComponent: {
          left: /* @__PURE__ */ (0, import_jsx_runtime501.jsx)(
            ResizeHandle,
            {
              direction: "left",
              resizeWidthBy
            }
          ),
          right: /* @__PURE__ */ (0, import_jsx_runtime501.jsx)(
            ResizeHandle,
            {
              direction: "right",
              resizeWidthBy
            }
          )
        },
        handleClasses: void 0,
        handleStyles: {
          left: HANDLE_STYLES_OVERRIDE,
          right: HANDLE_STYLES_OVERRIDE
        },
        children
      }
    );
  }
  var resizable_editor_default = ResizableEditor;

  // packages/editor/build-module/components/styles-canvas/index.mjs
  var import_jsx_runtime502 = __toESM(require_jsx_runtime(), 1);
  function getStylesCanvasTitle(path, showStylebook2) {
    if (showStylebook2) {
      return (0, import_i18n230.__)("Style Book");
    }
    if (path?.startsWith("/revisions")) {
      return (0, import_i18n230.__)("Style Revisions");
    }
    return "";
  }
  function StylesCanvas() {
    const { stylesPath: stylesPath2, showStylebook: showStylebook2, showListViewByDefault, isPreviewMode } = (0, import_data102.useSelect)((select9) => {
      const { getStylesPath: getStylesPath2, getShowStylebook: getShowStylebook2 } = unlock(
        select9(store)
      );
      const _showListViewByDefault = select9(import_preferences11.store).get(
        "core",
        "showListViewByDefault"
      );
      return {
        stylesPath: getStylesPath2(),
        showStylebook: getShowStylebook2(),
        showListViewByDefault: _showListViewByDefault,
        isPreviewMode: select9(store).getEditorSettings().isPreviewMode
      };
    }, []);
    const { resetStylesNavigation: resetStylesNavigation2, setStylesPath: setStylesPath2 } = unlock(
      (0, import_data102.useDispatch)(store)
    );
    const { setIsListViewOpened: setIsListViewOpened2 } = (0, import_data102.useDispatch)(store);
    const focusOnMountRef = (0, import_compose53.useFocusOnMount)("firstElement");
    const sectionFocusReturnRef = (0, import_compose53.useFocusReturn)();
    let content = null;
    if (showStylebook2) {
      content = /* @__PURE__ */ (0, import_jsx_runtime502.jsx)(
        style_book_default2,
        {
          path: stylesPath2,
          onPathChange: setStylesPath2,
          ref: sectionFocusReturnRef
        }
      );
    } else if (stylesPath2?.startsWith("/revisions")) {
      content = /* @__PURE__ */ (0, import_jsx_runtime502.jsx)(
        revisions_default,
        {
          path: stylesPath2,
          ref: sectionFocusReturnRef
        }
      );
    }
    const title = getStylesCanvasTitle(stylesPath2, showStylebook2);
    const onCloseCanvas = () => {
      setIsListViewOpened2(showListViewByDefault);
      resetStylesNavigation2();
    };
    const closeOnEscape = (event) => {
      if (event.keyCode === import_keycodes10.ESCAPE && !event.defaultPrevented) {
        event.preventDefault();
        onCloseCanvas();
      }
    };
    return /* @__PURE__ */ (0, import_jsx_runtime502.jsx)(
      "div",
      {
        className: clsx_default("editor-styles-canvas", {
          "is-preview-mode": isPreviewMode
        }),
        children: /* @__PURE__ */ (0, import_jsx_runtime502.jsx)(resizable_editor_default, { enableResizing: false, children: /* @__PURE__ */ (0, import_jsx_runtime502.jsxs)(
          "section",
          {
            className: "editor-styles-canvas__section",
            ref: isPreviewMode ? void 0 : focusOnMountRef,
            onKeyDown: isPreviewMode ? void 0 : closeOnEscape,
            "aria-label": title,
            children: [
              !isPreviewMode && /* @__PURE__ */ (0, import_jsx_runtime502.jsx)(
                import_components157.Button,
                {
                  size: "compact",
                  className: "editor-styles-canvas__close-button",
                  icon: close_small_default,
                  label: (0, import_i18n230.__)("Close"),
                  onClick: onCloseCanvas
                }
              ),
              content
            ]
          }
        ) })
      }
    );
  }

  // packages/editor/build-module/components/document-bar/useEditedSectionDetails.mjs
  var import_data103 = __toESM(require_data(), 1);
  var import_html_entities15 = __toESM(require_html_entities(), 1);
  var import_block_editor41 = __toESM(require_block_editor(), 1);
  var import_core_data69 = __toESM(require_core_data(), 1);
  function useEditedSectionDetails() {
    return (0, import_data103.useSelect)((select9) => {
      const {
        getBlockAttributes: getBlockAttributes2,
        getBlockName: getBlockName2,
        __experimentalGetParsedPattern
      } = select9(import_block_editor41.store);
      const { getEditedEntityRecord, getCurrentTheme } = select9(import_core_data69.store);
      const { getEditedContentOnlySection } = unlock(
        select9(import_block_editor41.store)
      );
      const editedSectionId = getEditedContentOnlySection();
      if (!editedSectionId) {
        return null;
      }
      const attributes = getBlockAttributes2(editedSectionId);
      const patternName = attributes?.metadata?.patternName;
      if (patternName) {
        const pattern = typeof __experimentalGetParsedPattern === "function" ? __experimentalGetParsedPattern(patternName) : null;
        return {
          patternName,
          patternTitle: pattern?.title || attributes?.metadata?.name,
          type: "pattern"
        };
      }
      const blockName = getBlockName2(editedSectionId);
      if (blockName === "core/block" && !!attributes?.ref) {
        const entity = getEditedEntityRecord(
          "postType",
          "wp_block",
          attributes.ref
        );
        if (entity?.title) {
          return {
            patternName: attributes.ref,
            patternTitle: (0, import_html_entities15.decodeEntities)(entity.title),
            type: "synced-pattern"
          };
        }
      }
      if (blockName === "core/template-part" && !!attributes?.slug) {
        const theme2 = attributes.theme || getCurrentTheme()?.stylesheet;
        const templatePartId = theme2 ? `${theme2}//${attributes.slug}` : null;
        if (templatePartId) {
          const entity = getEditedEntityRecord(
            "postType",
            "wp_template_part",
            templatePartId
          );
          if (entity?.title) {
            return {
              patternName: attributes.slug,
              patternTitle: (0, import_html_entities15.decodeEntities)(entity.title),
              type: "template-part"
            };
          }
        }
      }
      return null;
    }, []);
  }

  // packages/editor/build-module/components/document-bar/index.mjs
  var import_jsx_runtime503 = __toESM(require_jsx_runtime(), 1);
  var { getTemplateInfo: getTemplateInfo2 } = unlock(import_core_data70.privateApis);
  var MotionButton = import_components158.__unstableMotion.create(import_components158.Button);
  function DocumentBar(props) {
    const { stopEditingContentOnlySection } = unlock(
      (0, import_data104.useDispatch)(import_block_editor42.store)
    );
    const unlockedPatternInfo = useEditedSectionDetails();
    const {
      postId: postId2,
      postType: postType2,
      postTypeLabel,
      documentTitle,
      isNotFound,
      templateTitle,
      onNavigateToPreviousEntityRecord,
      isTemplatePreview,
      stylesCanvasTitle
    } = (0, import_data104.useSelect)((select9) => {
      const {
        getCurrentPostType: getCurrentPostType2,
        getCurrentPostId: getCurrentPostId2,
        getEditorSettings: getEditorSettings2,
        getRenderingMode: getRenderingMode2
      } = select9(store);
      const {
        getEditedEntityRecord,
        getPostType,
        getCurrentTheme,
        isResolving: isResolvingSelector
      } = select9(import_core_data70.store);
      const _postType = getCurrentPostType2();
      const _postId = getCurrentPostId2();
      const _document = getEditedEntityRecord(
        "postType",
        _postType,
        _postId
      );
      const { default_template_types: templateTypes = [] } = getCurrentTheme() ?? {};
      const _templateInfo = getTemplateInfo2({
        templateTypes,
        template: _document
      });
      const _postTypeLabel = getPostType(_postType)?.labels?.singular_name;
      const { getStylesPath: getStylesPath2, getShowStylebook: getShowStylebook2 } = unlock(
        select9(store)
      );
      const _stylesPath = getStylesPath2();
      const _showStylebook = getShowStylebook2();
      const _stylesCanvasTitle = getStylesCanvasTitle(
        _stylesPath,
        _showStylebook
      );
      return {
        postId: _postId,
        postType: _postType,
        postTypeLabel: _postTypeLabel,
        documentTitle: _document.title,
        isNotFound: !_document && !isResolvingSelector(
          "getEditedEntityRecord",
          "postType",
          _postType,
          _postId
        ),
        templateTitle: _templateInfo.title,
        onNavigateToPreviousEntityRecord: getEditorSettings2().onNavigateToPreviousEntityRecord,
        isTemplatePreview: getRenderingMode2() === "template-locked",
        stylesCanvasTitle: _stylesCanvasTitle
      };
    }, []);
    const { open: openCommandCenter } = (0, import_data104.useDispatch)(import_commands3.store);
    const isReducedMotion = (0, import_compose54.useReducedMotion)();
    const isTemplate2 = TEMPLATE_POST_TYPES.includes(postType2);
    const hasBackButton = !!onNavigateToPreviousEntityRecord || !!unlockedPatternInfo;
    const entityTitle = isTemplate2 ? templateTitle : documentTitle;
    const title = unlockedPatternInfo?.patternTitle || props.title || stylesCanvasTitle || entityTitle;
    const icon = props.icon;
    const handleBackClick = (event) => {
      event.stopPropagation();
      if (unlockedPatternInfo) {
        stopEditingContentOnlySection();
      } else if (onNavigateToPreviousEntityRecord) {
        onNavigateToPreviousEntityRecord();
      }
    };
    const pageTypeBadge = usePageTypeBadge(postId2);
    const mountedRef = (0, import_element318.useRef)(false);
    (0, import_element318.useEffect)(() => {
      mountedRef.current = true;
    }, []);
    return /* @__PURE__ */ (0, import_jsx_runtime503.jsxs)(
      "div",
      {
        className: clsx_default("editor-document-bar", {
          "has-back-button": hasBackButton
        }),
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime503.jsx)(import_components158.__unstableAnimatePresence, { children: hasBackButton && /* @__PURE__ */ (0, import_jsx_runtime503.jsx)(
            MotionButton,
            {
              className: "editor-document-bar__back",
              icon: (0, import_i18n231.isRTL)() ? chevron_right_small_default : chevron_left_small_default,
              onClick: handleBackClick,
              size: "compact",
              initial: mountedRef.current ? { opacity: 0, transform: "translateX(15%)" } : false,
              animate: { opacity: 1, transform: "translateX(0%)" },
              exit: { opacity: 0, transform: "translateX(15%)" },
              transition: isReducedMotion ? { duration: 0 } : void 0,
              children: (0, import_i18n231.__)("Back")
            }
          ) }),
          !isTemplate2 && isTemplatePreview && !hasBackButton && /* @__PURE__ */ (0, import_jsx_runtime503.jsx)(
            import_block_editor42.BlockIcon,
            {
              icon: layout_default,
              className: "editor-document-bar__icon-layout"
            }
          ),
          isNotFound ? /* @__PURE__ */ (0, import_jsx_runtime503.jsx)(import_components158.__experimentalText, { children: (0, import_i18n231.__)("Document not found") }) : /* @__PURE__ */ (0, import_jsx_runtime503.jsx)(
            import_components158.Button,
            {
              className: "editor-document-bar__command",
              onClick: () => openCommandCenter(),
              size: "compact",
              children: /* @__PURE__ */ (0, import_jsx_runtime503.jsxs)(
                import_components158.__unstableMotion.div,
                {
                  className: "editor-document-bar__title",
                  initial: mountedRef.current ? {
                    opacity: 0,
                    transform: hasBackButton ? "translateX(15%)" : "translateX(-15%)"
                  } : false,
                  animate: {
                    opacity: 1,
                    transform: "translateX(0%)"
                  },
                  transition: isReducedMotion ? { duration: 0 } : void 0,
                  children: [
                    icon && /* @__PURE__ */ (0, import_jsx_runtime503.jsx)(import_block_editor42.BlockIcon, { icon }),
                    /* @__PURE__ */ (0, import_jsx_runtime503.jsxs)(import_components158.__experimentalText, { size: "body", as: "h1", children: [
                      /* @__PURE__ */ (0, import_jsx_runtime503.jsx)("span", { className: "editor-document-bar__post-title", children: title ? (0, import_dom34.__unstableStripHTML)(title) : (0, import_i18n231.__)("No title") }),
                      unlockedPatternInfo && /* @__PURE__ */ (0, import_jsx_runtime503.jsx)("span", { className: "editor-document-bar__post-type-label", children: unlockedPatternInfo.type === "template-part" ? `\xB7 ${(0, import_i18n231.__)("Template Part")}` : `\xB7 ${(0, import_i18n231.__)("Pattern")}` }),
                      !unlockedPatternInfo && pageTypeBadge && /* @__PURE__ */ (0, import_jsx_runtime503.jsx)("span", { className: "editor-document-bar__post-type-label", children: `\xB7 ${pageTypeBadge}` }),
                      !unlockedPatternInfo && postTypeLabel && !props.title && !pageTypeBadge && /* @__PURE__ */ (0, import_jsx_runtime503.jsx)("span", { className: "editor-document-bar__post-type-label", children: `\xB7 ${(0, import_html_entities16.decodeEntities)(
                        postTypeLabel
                      )}` })
                    ] })
                  ]
                },
                hasBackButton
              )
            }
          )
        ]
      }
    );
  }

  // packages/editor/build-module/components/document-outline/index.mjs
  var import_i18n232 = __toESM(require_i18n(), 1);
  var import_data105 = __toESM(require_data(), 1);
  var import_element319 = __toESM(require_element(), 1);
  var import_rich_text3 = __toESM(require_rich_text(), 1);
  var import_block_editor43 = __toESM(require_block_editor(), 1);
  var import_core_data71 = __toESM(require_core_data(), 1);
  var import_components159 = __toESM(require_components(), 1);

  // packages/editor/build-module/components/document-outline/item.mjs
  var import_jsx_runtime504 = __toESM(require_jsx_runtime(), 1);
  var TableOfContentsItem = ({
    children,
    isValid: isValid2,
    isDisabled,
    level,
    href,
    onSelect
  }) => {
    function handleClick(event) {
      if (isDisabled) {
        event.preventDefault();
        return;
      }
      onSelect();
    }
    return /* @__PURE__ */ (0, import_jsx_runtime504.jsx)(
      "li",
      {
        className: clsx_default(
          "document-outline__item",
          `is-${level.toLowerCase()}`,
          {
            "is-invalid": !isValid2,
            "is-disabled": isDisabled
          }
        ),
        children: /* @__PURE__ */ (0, import_jsx_runtime504.jsxs)(
          "a",
          {
            href,
            className: "document-outline__button",
            "aria-disabled": isDisabled,
            onClick: handleClick,
            children: [
              /* @__PURE__ */ (0, import_jsx_runtime504.jsx)(
                "span",
                {
                  className: "document-outline__emdash",
                  "aria-hidden": "true"
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime504.jsx)("strong", { className: "document-outline__level", children: level }),
              /* @__PURE__ */ (0, import_jsx_runtime504.jsx)("span", { className: "document-outline__item-content", children })
            ]
          }
        )
      }
    );
  };
  var item_default = TableOfContentsItem;

  // packages/editor/build-module/components/document-outline/index.mjs
  var import_jsx_runtime505 = __toESM(require_jsx_runtime(), 1);
  var emptyHeadingContent = /* @__PURE__ */ (0, import_jsx_runtime505.jsx)("em", { children: (0, import_i18n232.__)("(Empty heading)") });
  var incorrectLevelContent = [
    /* @__PURE__ */ (0, import_jsx_runtime505.jsx)("br", {}, "incorrect-break"),
    /* @__PURE__ */ (0, import_jsx_runtime505.jsx)("em", { children: (0, import_i18n232.__)("(Incorrect heading level)") }, "incorrect-message")
  ];
  var singleH1Headings = [
    /* @__PURE__ */ (0, import_jsx_runtime505.jsx)("br", {}, "incorrect-break-h1"),
    /* @__PURE__ */ (0, import_jsx_runtime505.jsx)("em", { children: (0, import_i18n232.__)("(Your theme may already use a H1 for the post title)") }, "incorrect-message-h1")
  ];
  var multipleH1Headings = [
    /* @__PURE__ */ (0, import_jsx_runtime505.jsx)("br", {}, "incorrect-break-multiple-h1"),
    /* @__PURE__ */ (0, import_jsx_runtime505.jsx)("em", { children: (0, import_i18n232.__)("(Multiple H1 headings are not recommended)") }, "incorrect-message-multiple-h1")
  ];
  function EmptyOutlineIllustration() {
    return /* @__PURE__ */ (0, import_jsx_runtime505.jsxs)(
      import_components159.SVG,
      {
        width: "138",
        height: "148",
        viewBox: "0 0 138 148",
        fill: "none",
        xmlns: "http://www.w3.org/2000/svg",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(import_components159.Rect, { width: "138", height: "148", rx: "4", fill: "#F0F6FC" }),
          /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(import_components159.Line, { x1: "44", y1: "28", x2: "24", y2: "28", stroke: "#DDDDDD" }),
          /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(import_components159.Rect, { x: "48", y: "16", width: "27", height: "23", rx: "4", fill: "#DDDDDD" }),
          /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(
            import_components159.Path,
            {
              d: "M54.7585 32V23.2727H56.6037V26.8736H60.3494V23.2727H62.1903V32H60.3494V28.3949H56.6037V32H54.7585ZM67.4574 23.2727V32H65.6122V25.0241H65.5611L63.5625 26.277V24.6406L65.723 23.2727H67.4574Z",
              fill: "black"
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(import_components159.Line, { x1: "55", y1: "59", x2: "24", y2: "59", stroke: "#DDDDDD" }),
          /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(import_components159.Rect, { x: "59", y: "47", width: "29", height: "23", rx: "4", fill: "#DDDDDD" }),
          /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(
            import_components159.Path,
            {
              d: "M65.7585 63V54.2727H67.6037V57.8736H71.3494V54.2727H73.1903V63H71.3494V59.3949H67.6037V63H65.7585ZM74.6605 63V61.6705L77.767 58.794C78.0313 58.5384 78.2528 58.3082 78.4318 58.1037C78.6136 57.8991 78.7514 57.6989 78.8452 57.5028C78.9389 57.304 78.9858 57.0895 78.9858 56.8594C78.9858 56.6037 78.9276 56.3835 78.8111 56.1989C78.6946 56.0114 78.5355 55.8679 78.3338 55.7685C78.1321 55.6662 77.9034 55.6151 77.6477 55.6151C77.3807 55.6151 77.1477 55.669 76.9489 55.777C76.75 55.8849 76.5966 56.0398 76.4886 56.2415C76.3807 56.4432 76.3267 56.6832 76.3267 56.9616H74.5753C74.5753 56.3906 74.7045 55.8949 74.9631 55.4744C75.2216 55.054 75.5838 54.7287 76.0497 54.4986C76.5156 54.2685 77.0526 54.1534 77.6605 54.1534C78.2855 54.1534 78.8295 54.2642 79.2926 54.4858C79.7585 54.7045 80.1207 55.0085 80.3793 55.3977C80.6378 55.7869 80.767 56.233 80.767 56.7358C80.767 57.0653 80.7017 57.3906 80.571 57.7116C80.4432 58.0327 80.2145 58.3892 79.8849 58.7812C79.5554 59.1705 79.0909 59.6378 78.4915 60.1832L77.2173 61.4318V61.4915H80.8821V63H74.6605Z",
              fill: "black"
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(import_components159.Line, { x1: "80", y1: "90", x2: "24", y2: "90", stroke: "#DDDDDD" }),
          /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(import_components159.Rect, { x: "84", y: "78", width: "30", height: "23", rx: "4", fill: "#F0B849" }),
          /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(
            import_components159.Path,
            {
              d: "M90.7585 94V85.2727H92.6037V88.8736H96.3494V85.2727H98.1903V94H96.3494V90.3949H92.6037V94H90.7585ZM99.5284 92.4659V91.0128L103.172 85.2727H104.425V87.2841H103.683L101.386 90.919V90.9872H106.564V92.4659H99.5284ZM103.717 94V92.0227L103.751 91.3793V85.2727H105.482V94H103.717Z",
              fill: "black"
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(import_components159.Line, { x1: "66", y1: "121", x2: "24", y2: "121", stroke: "#DDDDDD" }),
          /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(import_components159.Rect, { x: "70", y: "109", width: "29", height: "23", rx: "4", fill: "#DDDDDD" }),
          /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(
            import_components159.Path,
            {
              d: "M76.7585 125V116.273H78.6037V119.874H82.3494V116.273H84.1903V125H82.3494V121.395H78.6037V125H76.7585ZM88.8864 125.119C88.25 125.119 87.6832 125.01 87.1861 124.791C86.6918 124.57 86.3011 124.266 86.0142 123.879C85.7301 123.49 85.5838 123.041 85.5753 122.533H87.4332C87.4446 122.746 87.5142 122.933 87.642 123.095C87.7727 123.254 87.946 123.378 88.1619 123.466C88.3778 123.554 88.6207 123.598 88.8906 123.598C89.1719 123.598 89.4205 123.548 89.6364 123.449C89.8523 123.349 90.0213 123.212 90.1435 123.036C90.2656 122.859 90.3267 122.656 90.3267 122.426C90.3267 122.193 90.2614 121.987 90.1307 121.808C90.0028 121.626 89.8182 121.484 89.5767 121.382C89.3381 121.28 89.054 121.229 88.7244 121.229H87.9105V119.874H88.7244C89.0028 119.874 89.2486 119.825 89.4616 119.729C89.6776 119.632 89.8452 119.499 89.9645 119.328C90.0838 119.155 90.1435 118.953 90.1435 118.723C90.1435 118.504 90.0909 118.312 89.9858 118.148C89.8835 117.98 89.7386 117.849 89.5511 117.756C89.3665 117.662 89.1506 117.615 88.9034 117.615C88.6534 117.615 88.4247 117.661 88.2173 117.751C88.0099 117.839 87.8438 117.966 87.7188 118.131C87.5938 118.295 87.527 118.489 87.5185 118.71H85.75C85.7585 118.207 85.902 117.764 86.1804 117.381C86.4588 116.997 86.8338 116.697 87.3054 116.482C87.7798 116.263 88.3153 116.153 88.9119 116.153C89.5142 116.153 90.0412 116.263 90.4929 116.482C90.9446 116.7 91.2955 116.996 91.5455 117.368C91.7983 117.737 91.9233 118.152 91.9205 118.612C91.9233 119.101 91.7713 119.509 91.4645 119.835C91.1605 120.162 90.7642 120.369 90.2756 120.457V120.526C90.9176 120.608 91.4063 120.831 91.7415 121.195C92.0795 121.555 92.2472 122.007 92.2443 122.55C92.2472 123.047 92.1037 123.489 91.8139 123.875C91.527 124.261 91.1307 124.565 90.625 124.787C90.1193 125.009 89.5398 125.119 88.8864 125.119Z",
              fill: "black"
            }
          )
        ]
      }
    );
  }
  var computeOutlineHeadings = (blocks = []) => {
    return blocks.filter((block) => block.name === "core/heading").map((block) => ({
      ...block,
      level: block.attributes.level,
      isEmpty: isEmptyHeading(block)
    }));
  };
  var isEmptyHeading = (heading) => !heading.attributes.content || heading.attributes.content.trim().length === 0;
  function DocumentOutline({
    onSelect,
    hasOutlineItemsDisabled
  }) {
    const { selectBlock: selectBlock2 } = (0, import_data105.useDispatch)(import_block_editor43.store);
    const { title, isTitleSupported } = (0, import_data105.useSelect)((select9) => {
      const { getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
      const { getPostType } = select9(import_core_data71.store);
      const postType2 = getPostType(getEditedPostAttribute2("type"));
      return {
        title: getEditedPostAttribute2("title"),
        isTitleSupported: postType2?.supports?.title ?? false
      };
    });
    const blocks = (0, import_data105.useSelect)((select9) => {
      const { getClientIdsWithDescendants: getClientIdsWithDescendants2, getBlock: getBlock2 } = select9(import_block_editor43.store);
      const clientIds = getClientIdsWithDescendants2();
      return clientIds.map((id) => getBlock2(id));
    });
    const contentBlocks = (0, import_data105.useSelect)((select9) => {
      if (select9(store).getRenderingMode() === "post-only") {
        return void 0;
      }
      const { getBlocksByName, getClientIdsOfDescendants: getClientIdsOfDescendants2 } = select9(import_block_editor43.store);
      const [postContentClientId] = getBlocksByName("core/post-content");
      if (!postContentClientId) {
        return void 0;
      }
      return getClientIdsOfDescendants2(postContentClientId);
    }, []);
    const prevHeadingLevelRef = (0, import_element319.useRef)(1);
    const headings = (0, import_element319.useMemo)(
      () => computeOutlineHeadings(blocks),
      [blocks]
    );
    if (headings.length < 1) {
      return /* @__PURE__ */ (0, import_jsx_runtime505.jsxs)("div", { className: "editor-document-outline has-no-headings", children: [
        /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(EmptyOutlineIllustration, {}),
        /* @__PURE__ */ (0, import_jsx_runtime505.jsx)("p", { children: (0, import_i18n232.__)(
          "Navigate the structure of your document and address issues like empty or incorrect heading levels."
        ) })
      ] });
    }
    const titleNode = document.querySelector(".editor-post-title__input");
    const hasTitle = isTitleSupported && title && titleNode;
    const countByLevel = headings.reduce(
      (acc, heading) => ({
        ...acc,
        [heading.level]: (acc[heading.level] || 0) + 1
      }),
      {}
    );
    const hasMultipleH1 = countByLevel[1] > 1;
    function isContentBlock(clientId) {
      return Array.isArray(contentBlocks) ? contentBlocks.includes(clientId) : true;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime505.jsx)("div", { className: "document-outline", children: /* @__PURE__ */ (0, import_jsx_runtime505.jsxs)("ul", { children: [
      hasTitle && /* @__PURE__ */ (0, import_jsx_runtime505.jsx)(
        item_default,
        {
          level: (0, import_i18n232.__)("Title"),
          isValid: true,
          onSelect,
          href: `#${titleNode.id}`,
          isDisabled: hasOutlineItemsDisabled,
          children: title
        }
      ),
      headings.map((item) => {
        const isIncorrectLevel = item.level > prevHeadingLevelRef.current + 1;
        const isValid2 = !item.isEmpty && !isIncorrectLevel && !!item.level && (item.level !== 1 || !hasMultipleH1 && !hasTitle);
        prevHeadingLevelRef.current = item.level;
        return /* @__PURE__ */ (0, import_jsx_runtime505.jsxs)(
          item_default,
          {
            level: `H${item.level}`,
            isValid: isValid2,
            isDisabled: hasOutlineItemsDisabled || !isContentBlock(item.clientId),
            href: `#block-${item.clientId}`,
            onSelect: () => {
              selectBlock2(item.clientId);
              onSelect?.();
            },
            children: [
              item.isEmpty ? emptyHeadingContent : (0, import_rich_text3.getTextContent)(
                (0, import_rich_text3.create)({
                  html: item.attributes.content
                })
              ),
              isIncorrectLevel && incorrectLevelContent,
              item.level === 1 && hasMultipleH1 && multipleH1Headings,
              hasTitle && item.level === 1 && !hasMultipleH1 && singleH1Headings
            ]
          },
          item.clientId
        );
      })
    ] }) });
  }

  // packages/editor/build-module/components/document-outline/check.mjs
  var import_data106 = __toESM(require_data(), 1);
  var import_block_editor44 = __toESM(require_block_editor(), 1);
  function DocumentOutlineCheck({ children }) {
    const hasHeadings = (0, import_data106.useSelect)((select9) => {
      const { getGlobalBlockCount: getGlobalBlockCount2 } = select9(import_block_editor44.store);
      return getGlobalBlockCount2("core/heading") > 0;
    });
    if (!hasHeadings) {
      return null;
    }
    return children;
  }

  // packages/editor/build-module/components/editor-history/redo.mjs
  var import_i18n233 = __toESM(require_i18n(), 1);
  var import_components160 = __toESM(require_components(), 1);
  var import_data107 = __toESM(require_data(), 1);
  var import_keycodes11 = __toESM(require_keycodes(), 1);
  var import_element320 = __toESM(require_element(), 1);
  var import_jsx_runtime506 = __toESM(require_jsx_runtime(), 1);
  function EditorHistoryRedo(props, ref) {
    const shortcut = (0, import_keycodes11.isAppleOS)() ? import_keycodes11.displayShortcut.primaryShift("z") : import_keycodes11.displayShortcut.primary("y");
    const hasRedo = (0, import_data107.useSelect)(
      (select9) => select9(store).hasEditorRedo(),
      []
    );
    const { redo: redo2 } = (0, import_data107.useDispatch)(store);
    return /* @__PURE__ */ (0, import_jsx_runtime506.jsx)(
      import_components160.Button,
      {
        __next40pxDefaultSize: true,
        ...props,
        ref,
        icon: !(0, import_i18n233.isRTL)() ? redo_default : undo_default,
        label: (0, import_i18n233.__)("Redo"),
        shortcut,
        "aria-disabled": !hasRedo,
        onClick: hasRedo ? redo2 : void 0,
        className: "editor-history__redo"
      }
    );
  }
  var redo_default2 = (0, import_element320.forwardRef)(EditorHistoryRedo);

  // packages/editor/build-module/components/editor-history/undo.mjs
  var import_i18n234 = __toESM(require_i18n(), 1);
  var import_components161 = __toESM(require_components(), 1);
  var import_data108 = __toESM(require_data(), 1);
  var import_keycodes12 = __toESM(require_keycodes(), 1);
  var import_element321 = __toESM(require_element(), 1);
  var import_jsx_runtime507 = __toESM(require_jsx_runtime(), 1);
  function EditorHistoryUndo(props, ref) {
    const hasUndo = (0, import_data108.useSelect)(
      (select9) => select9(store).hasEditorUndo(),
      []
    );
    const { undo: undo2 } = (0, import_data108.useDispatch)(store);
    return /* @__PURE__ */ (0, import_jsx_runtime507.jsx)(
      import_components161.Button,
      {
        __next40pxDefaultSize: true,
        ...props,
        ref,
        icon: !(0, import_i18n234.isRTL)() ? undo_default : redo_default,
        label: (0, import_i18n234.__)("Undo"),
        shortcut: import_keycodes12.displayShortcut.primary("z"),
        "aria-disabled": !hasUndo,
        onClick: hasUndo ? undo2 : void 0,
        className: "editor-history__undo"
      }
    );
  }
  var undo_default2 = (0, import_element321.forwardRef)(EditorHistoryUndo);

  // packages/editor/build-module/components/editor-notices/index.mjs
  var import_deprecated10 = __toESM(require_deprecated(), 1);
  var import_data110 = __toESM(require_data(), 1);
  var import_block_editor46 = __toESM(require_block_editor(), 1);
  var import_notices21 = __toESM(require_notices(), 1);

  // packages/editor/build-module/components/template-validation-notice/index.mjs
  var import_components162 = __toESM(require_components(), 1);
  var import_i18n235 = __toESM(require_i18n(), 1);
  var import_data109 = __toESM(require_data(), 1);
  var import_element322 = __toESM(require_element(), 1);
  var import_block_editor45 = __toESM(require_block_editor(), 1);
  var import_jsx_runtime508 = __toESM(require_jsx_runtime(), 1);
  function TemplateValidationNotice() {
    const [showConfirmDialog, setShowConfirmDialog] = (0, import_element322.useState)(false);
    const isValid2 = (0, import_data109.useSelect)((select9) => {
      return select9(import_block_editor45.store).isValidTemplate();
    }, []);
    const { setTemplateValidity: setTemplateValidity2, synchronizeTemplate: synchronizeTemplate2 } = (0, import_data109.useDispatch)(import_block_editor45.store);
    if (isValid2) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime508.jsxs)(import_jsx_runtime508.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime508.jsx)(
        import_components162.Notice,
        {
          className: "editor-template-validation-notice",
          isDismissible: false,
          status: "warning",
          actions: [
            {
              label: (0, import_i18n235.__)("Keep it as is"),
              onClick: () => setTemplateValidity2(true)
            },
            {
              label: (0, import_i18n235.__)("Reset the template"),
              onClick: () => setShowConfirmDialog(true)
            }
          ],
          children: (0, import_i18n235.__)(
            "The content of your post doesn\u2019t match the template assigned to your post type."
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime508.jsx)(
        import_components162.__experimentalConfirmDialog,
        {
          isOpen: showConfirmDialog,
          confirmButtonText: (0, import_i18n235.__)("Reset"),
          onConfirm: () => {
            setShowConfirmDialog(false);
            synchronizeTemplate2();
          },
          onCancel: () => setShowConfirmDialog(false),
          size: "medium",
          children: (0, import_i18n235.__)(
            "Resetting the template may result in loss of content, do you want to continue?"
          )
        }
      )
    ] });
  }

  // packages/editor/build-module/components/editor-notices/index.mjs
  var import_jsx_runtime509 = __toESM(require_jsx_runtime(), 1);
  function EditorNotices() {
    (0, import_deprecated10.default)("wp.editor.EditorNotices", {
      since: "7.0",
      version: "7.2",
      alternative: "wp.notices.InlineNotices"
    });
    const isValidTemplate2 = (0, import_data110.useSelect)((select9) => {
      return select9(import_block_editor46.store).isValidTemplate();
    }, []);
    return /* @__PURE__ */ (0, import_jsx_runtime509.jsx)(
      import_notices21.InlineNotices,
      {
        pinnedNoticesClassName: "components-editor-notices__pinned",
        dismissibleNoticesClassName: "components-editor-notices__dismissible",
        children: !isValidTemplate2 && /* @__PURE__ */ (0, import_jsx_runtime509.jsx)(TemplateValidationNotice, {})
      }
    );
  }
  var editor_notices_default = EditorNotices;

  // packages/editor/build-module/components/editor-snackbars/index.mjs
  var import_deprecated11 = __toESM(require_deprecated(), 1);
  var import_notices22 = __toESM(require_notices(), 1);
  var import_jsx_runtime510 = __toESM(require_jsx_runtime(), 1);
  function EditorSnackbars() {
    (0, import_deprecated11.default)("wp.editor.EditorSnackbars", {
      since: "7.0",
      version: "7.2",
      alternative: "wp.notices.SnackbarNotices"
    });
    return /* @__PURE__ */ (0, import_jsx_runtime510.jsx)(import_notices22.SnackbarNotices, { className: "components-editor-notices__snackbar" });
  }

  // packages/editor/build-module/components/error-boundary/index.mjs
  var import_element323 = __toESM(require_element(), 1);
  var import_i18n236 = __toESM(require_i18n(), 1);
  var import_data111 = __toESM(require_data(), 1);
  var import_compose55 = __toESM(require_compose(), 1);
  var import_hooks46 = __toESM(require_hooks(), 1);
  var import_jsx_runtime511 = __toESM(require_jsx_runtime(), 1);
  function getContent() {
    try {
      return (0, import_data111.select)(store).getEditedPostContent();
    } catch {
    }
  }
  function getErrorName(error2) {
    return error2 instanceof Error && error2.name || "Error";
  }
  function getErrorMessage(error2) {
    if (typeof error2 === "string" && error2) {
      return error2;
    }
    if (typeof error2?.message === "string" && error2.message) {
      return error2.message;
    }
    return "An unknown error occurred.";
  }
  function getErrorSections(error2, componentStack) {
    const sections = [
      { label: getErrorName(error2), content: getErrorMessage(error2) }
    ];
    if (error2?.stack) {
      sections.push({
        label: "Stack",
        content: error2.stack.trim(),
        preformatted: true
      });
    }
    if (componentStack) {
      sections.push({
        label: "Component stack",
        content: componentStack.trim(),
        preformatted: true
      });
    }
    sections.push({
      label: "Environment",
      content: `User agent: ${window.navigator.userAgent}`,
      preformatted: true
    });
    return sections;
  }
  function getErrorReport(error2, componentStack) {
    const sections = getErrorSections(error2, componentStack).map(
      ({ label, content, preformatted }) => `**${label}**

${preformatted ? `\`\`\`
${content}
\`\`\`` : content}`
    );
    return ["### Error report", ...sections].join("\n\n");
  }
  function CopyButton({ text, children, variant = "outline" }) {
    const ref = (0, import_compose55.useCopyToClipboard)(text);
    return /* @__PURE__ */ (0, import_jsx_runtime511.jsx)(notice_exports.ActionButton, { variant, ref, children });
  }
  function ErrorReport({ error: error2, componentStack }) {
    return /* @__PURE__ */ (0, import_jsx_runtime511.jsx)(
      Stack,
      {
        className: "editor-error-boundary__report",
        direction: "column",
        gap: "md",
        children: getErrorSections(error2, componentStack).map(
          ({ label, content }) => /* @__PURE__ */ (0, import_jsx_runtime511.jsxs)(Stack, { direction: "column", gap: "xs", children: [
            /* @__PURE__ */ (0, import_jsx_runtime511.jsx)(Text, { variant: "heading-md", children: label }),
            /* @__PURE__ */ (0, import_jsx_runtime511.jsx)("pre", { className: "editor-error-boundary__report-section", children: content })
          ] }, label)
        )
      }
    );
  }
  function ErrorDetails({ error: error2, componentStack }) {
    return /* @__PURE__ */ (0, import_jsx_runtime511.jsxs)(collapsible_card_exports.Root, { className: "editor-error-boundary__details", children: [
      /* @__PURE__ */ (0, import_jsx_runtime511.jsx)(collapsible_card_exports.Header, { children: /* @__PURE__ */ (0, import_jsx_runtime511.jsx)(card_exports.Title, { children: (0, import_i18n236.__)("Error details") }) }),
      /* @__PURE__ */ (0, import_jsx_runtime511.jsx)(collapsible_card_exports.Content, { children: /* @__PURE__ */ (0, import_jsx_runtime511.jsx)(
        ErrorReport,
        {
          error: error2,
          componentStack
        }
      ) })
    ] });
  }
  var ErrorBoundary = class extends import_element323.Component {
    constructor() {
      super(...arguments);
      this.state = {
        error: null,
        componentStack: null
      };
    }
    componentDidCatch(error2, errorInfo) {
      this.setState({ componentStack: errorInfo?.componentStack });
      (0, import_hooks46.doAction)("editor.ErrorBoundary.errorLogged", error2, errorInfo);
    }
    static getDerivedStateFromError(error2) {
      return { error: error2 };
    }
    render() {
      const { error: error2, componentStack } = this.state;
      const { canCopyContent = false } = this.props;
      if (!error2) {
        return this.props.children;
      }
      return /* @__PURE__ */ (0, import_jsx_runtime511.jsxs)(
        Stack,
        {
          className: "editor-error-boundary",
          direction: "column",
          gap: "lg",
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime511.jsxs)(notice_exports.Root, { intent: "error", children: [
              /* @__PURE__ */ (0, import_jsx_runtime511.jsx)(notice_exports.Title, { children: (0, import_i18n236.__)("The editor has crashed") }),
              /* @__PURE__ */ (0, import_jsx_runtime511.jsx)(notice_exports.Description, { children: (0, import_i18n236.__)(
                "An unknown error occurred. Reload your browser to try again, or copy the error to report the problem or search."
              ) }),
              /* @__PURE__ */ (0, import_jsx_runtime511.jsxs)(notice_exports.Actions, { children: [
                canCopyContent && /* @__PURE__ */ (0, import_jsx_runtime511.jsx)(CopyButton, { text: getContent, children: (0, import_i18n236.__)("Copy contents") }),
                /* @__PURE__ */ (0, import_jsx_runtime511.jsx)(
                  CopyButton,
                  {
                    variant: "solid",
                    text: () => getErrorReport(error2, componentStack),
                    children: (0, import_i18n236.__)("Copy error")
                  }
                )
              ] })
            ] }),
            true ? /* @__PURE__ */ (0, import_jsx_runtime511.jsx)(
              ErrorDetails,
              {
                error: error2,
                componentStack
              }
            ) : null
          ]
        }
      );
    }
  };
  var error_boundary_default = ErrorBoundary;

  // packages/editor/build-module/components/local-autosave-monitor/index.mjs
  var import_element324 = __toESM(require_element(), 1);
  var import_compose56 = __toESM(require_compose(), 1);
  var import_data112 = __toESM(require_data(), 1);
  var import_i18n237 = __toESM(require_i18n(), 1);
  var import_blocks24 = __toESM(require_blocks(), 1);
  var import_notices23 = __toESM(require_notices(), 1);
  var import_jsx_runtime512 = __toESM(require_jsx_runtime(), 1);
  var requestIdleCallback = window.requestIdleCallback ? window.requestIdleCallback : window.requestAnimationFrame;
  var hasStorageSupport;
  var hasSessionStorageSupport = () => {
    if (hasStorageSupport !== void 0) {
      return hasStorageSupport;
    }
    try {
      window.sessionStorage.setItem("__wpEditorTestSessionStorage", "");
      window.sessionStorage.removeItem("__wpEditorTestSessionStorage");
      hasStorageSupport = true;
    } catch {
      hasStorageSupport = false;
    }
    return hasStorageSupport;
  };
  function useAutosaveNotice2() {
    const registry = (0, import_data112.useRegistry)();
    const { postId: postId2, postType: postType2, isEditedPostNew: isEditedPostNew2 } = (0, import_data112.useSelect)(
      (select9) => ({
        postId: select9(store).getCurrentPostId(),
        postType: select9(store).getCurrentPostType(),
        isEditedPostNew: select9(store).isEditedPostNew()
      }),
      []
    );
    const localAutosave = (0, import_element324.useMemo)(() => {
      const backup = localAutosaveGet(postId2, isEditedPostNew2);
      if (!backup) {
        return null;
      }
      try {
        return JSON.parse(backup);
      } catch {
        return null;
      }
    }, [postId2, isEditedPostNew2]);
    const snapshotStatus = useEntityContainsSnapshot({
      postType: postType2,
      postId: postId2,
      snapshot: localAutosaveGetSnapshot(localAutosave)
    });
    (0, import_element324.useEffect)(() => {
      if (!localAutosave) {
        return;
      }
      if ("pending" === snapshotStatus) {
        return;
      }
      if ("present" === snapshotStatus) {
        localAutosaveClear(postId2, isEditedPostNew2);
        return;
      }
      const { post_title: title, content, excerpt } = localAutosave;
      const edits = { title, content, excerpt };
      const { getEditedPostAttribute: getEditedPostAttribute2, getEditorSettings: getEditorSettings2 } = registry.select(store);
      const hasDifference = Object.keys(edits).some((key) => {
        return edits[key] !== getEditedPostAttribute2(key);
      });
      if (!hasDifference) {
        localAutosaveClear(postId2, isEditedPostNew2);
        return;
      }
      const hasRemoteAutosave = !!getEditorSettings2().autosave;
      if (hasRemoteAutosave) {
        return;
      }
      const { createWarningNotice, removeNotice } = registry.dispatch(import_notices23.store);
      const { editPost: editPost2, resetEditorBlocks: resetEditorBlocks2 } = registry.dispatch(store);
      const id = "wpEditorAutosaveRestore";
      createWarningNotice(
        (0, import_i18n237.__)(
          "The backup of this post in your browser is different from the version below."
        ),
        {
          id,
          actions: [
            {
              label: (0, import_i18n237.__)("Restore the backup"),
              onClick() {
                const {
                  content: editsContent,
                  ...editsWithoutContent
                } = edits;
                editPost2(editsWithoutContent);
                resetEditorBlocks2((0, import_blocks24.parse)(edits.content));
                removeNotice(id);
              }
            }
          ]
        }
      );
    }, [registry, postId2, isEditedPostNew2, localAutosave, snapshotStatus]);
  }
  function useAutosavePurge() {
    const { postId: postId2, isEditedPostNew: isEditedPostNew2, isDirty, isAutosaving, didError } = (0, import_data112.useSelect)(
      (select9) => ({
        postId: select9(store).getCurrentPostId(),
        isEditedPostNew: select9(store).isEditedPostNew(),
        isDirty: select9(store).isEditedPostDirty(),
        isAutosaving: select9(store).isAutosavingPost(),
        didError: select9(store).didPostSaveRequestFail()
      }),
      []
    );
    const lastIsDirtyRef = (0, import_element324.useRef)(isDirty);
    const lastIsAutosavingRef = (0, import_element324.useRef)(isAutosaving);
    (0, import_element324.useEffect)(() => {
      if (!didError && (lastIsAutosavingRef.current && !isAutosaving || lastIsDirtyRef.current && !isDirty)) {
        localAutosaveClear(postId2, isEditedPostNew2);
      }
      lastIsDirtyRef.current = isDirty;
      lastIsAutosavingRef.current = isAutosaving;
    }, [isDirty, isAutosaving, didError]);
    const wasEditedPostNew = (0, import_compose56.usePrevious)(isEditedPostNew2);
    const prevPostId = (0, import_compose56.usePrevious)(postId2);
    (0, import_element324.useEffect)(() => {
      if (prevPostId === postId2 && wasEditedPostNew && !isEditedPostNew2) {
        localAutosaveClear(postId2, true);
      }
    }, [isEditedPostNew2, postId2]);
  }
  function LocalAutosaveMonitor() {
    const { autosave: autosave2 } = (0, import_data112.useDispatch)(store);
    const deferredAutosave = (0, import_element324.useCallback)(() => {
      requestIdleCallback(() => autosave2({ local: true }));
    }, []);
    useAutosaveNotice2();
    useAutosavePurge();
    const localAutosaveInterval = (0, import_data112.useSelect)(
      (select9) => select9(store).getEditorSettings().localAutosaveInterval,
      []
    );
    return /* @__PURE__ */ (0, import_jsx_runtime512.jsx)(
      AutosaveMonitor,
      {
        interval: localAutosaveInterval,
        autosave: deferredAutosave
      }
    );
  }
  var local_autosave_monitor_default = (0, import_compose56.ifCondition)(hasSessionStorageSupport)(LocalAutosaveMonitor);

  // packages/editor/build-module/components/page-attributes/check.mjs
  var import_data113 = __toESM(require_data(), 1);
  var import_core_data72 = __toESM(require_core_data(), 1);
  function PageAttributesCheck({ children }) {
    const supportsPageAttributes = (0, import_data113.useSelect)((select9) => {
      const { getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
      const { getPostType } = select9(import_core_data72.store);
      const postType2 = getPostType(getEditedPostAttribute2("type"));
      return !!postType2?.supports?.["page-attributes"];
    }, []);
    if (!supportsPageAttributes) {
      return null;
    }
    return children;
  }
  var check_default2 = PageAttributesCheck;

  // packages/editor/build-module/components/page-attributes/order.mjs
  var import_i18n238 = __toESM(require_i18n(), 1);
  var import_components163 = __toESM(require_components(), 1);
  var import_data115 = __toESM(require_data(), 1);
  var import_element325 = __toESM(require_element(), 1);

  // packages/editor/build-module/components/post-type-support-check/index.mjs
  var import_data114 = __toESM(require_data(), 1);
  var import_core_data73 = __toESM(require_core_data(), 1);
  function checkSupport(supports = {}, key) {
    if (supports[key] !== void 0) {
      return !!supports[key];
    }
    const [topKey, subKey] = key.split(".");
    const [subProperties] = Array.isArray(supports[topKey]) ? supports[topKey] : [];
    return Array.isArray(subProperties) ? subProperties.includes(subKey) : !!subProperties?.[subKey];
  }
  function PostTypeSupportCheck({ children, supportKeys }) {
    const postType2 = (0, import_data114.useSelect)((select9) => {
      const { getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
      const { getPostType } = select9(import_core_data73.store);
      return getPostType(getEditedPostAttribute2("type"));
    }, []);
    let isSupported = !!postType2;
    if (postType2) {
      isSupported = (Array.isArray(supportKeys) ? supportKeys : [supportKeys]).some((key) => checkSupport(postType2.supports, key));
    }
    if (!isSupported) {
      return null;
    }
    return children;
  }
  var post_type_support_check_default = PostTypeSupportCheck;

  // packages/editor/build-module/components/page-attributes/order.mjs
  var import_jsx_runtime513 = __toESM(require_jsx_runtime(), 1);
  function PageAttributesOrder() {
    const order = (0, import_data115.useSelect)(
      (select9) => select9(store).getEditedPostAttribute("menu_order") ?? 0,
      []
    );
    const { editPost: editPost2 } = (0, import_data115.useDispatch)(store);
    const [orderInput, setOrderInput] = (0, import_element325.useState)(null);
    const setUpdatedOrder = (value2) => {
      setOrderInput(value2);
      const newOrder = Number(value2);
      if (Number.isInteger(newOrder) && value2.trim?.() !== "") {
        editPost2({ menu_order: newOrder });
      }
    };
    const value = orderInput ?? order;
    return /* @__PURE__ */ (0, import_jsx_runtime513.jsx)(import_components163.Flex, { children: /* @__PURE__ */ (0, import_jsx_runtime513.jsx)(import_components163.FlexBlock, { children: /* @__PURE__ */ (0, import_jsx_runtime513.jsx)(
      import_components163.__experimentalNumberControl,
      {
        label: (0, import_i18n238.__)("Order"),
        help: (0, import_i18n238.__)("Set the page order."),
        value,
        onChange: setUpdatedOrder,
        hideLabelFromVision: true,
        onBlur: () => {
          setOrderInput(null);
        }
      }
    ) }) });
  }
  function PageAttributesOrderWithChecks() {
    return /* @__PURE__ */ (0, import_jsx_runtime513.jsx)(post_type_support_check_default, { supportKeys: "page-attributes", children: /* @__PURE__ */ (0, import_jsx_runtime513.jsx)(PageAttributesOrder, {}) });
  }

  // packages/editor/build-module/components/page-attributes/panel.mjs
  var import_data117 = __toESM(require_data(), 1);
  var import_core_data75 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/page-attributes/parent.mjs
  var import_remove_accents5 = __toESM(require_remove_accents(), 1);
  var import_i18n239 = __toESM(require_i18n(), 1);
  var import_components165 = __toESM(require_components(), 1);
  var import_compose57 = __toESM(require_compose(), 1);
  var import_element327 = __toESM(require_element(), 1);
  var import_data116 = __toESM(require_data(), 1);
  var import_html_entities18 = __toESM(require_html_entities(), 1);
  var import_core_data74 = __toESM(require_core_data(), 1);
  var import_block_editor47 = __toESM(require_block_editor(), 1);
  var import_url16 = __toESM(require_url(), 1);

  // packages/editor/build-module/components/post-panel-row/index.mjs
  var import_components164 = __toESM(require_components(), 1);
  var import_element326 = __toESM(require_element(), 1);
  var import_jsx_runtime514 = __toESM(require_jsx_runtime(), 1);
  var PostPanelRow = (0, import_element326.forwardRef)(({ className, label, children }, ref) => {
    return /* @__PURE__ */ (0, import_jsx_runtime514.jsxs)(
      import_components164.__experimentalHStack,
      {
        className: clsx_default("editor-post-panel__row", className),
        ref,
        children: [
          label && /* @__PURE__ */ (0, import_jsx_runtime514.jsx)("div", { className: "editor-post-panel__row-label", children: label }),
          /* @__PURE__ */ (0, import_jsx_runtime514.jsx)("div", { className: "editor-post-panel__row-control", children })
        ]
      }
    );
  });
  var post_panel_row_default = PostPanelRow;

  // packages/editor/build-module/utils/terms.mjs
  var import_html_entities17 = __toESM(require_html_entities(), 1);
  function buildTermsTree2(flatTerms) {
    const flatTermsWithParentAndChildren = flatTerms.map((term) => {
      return {
        children: [],
        parent: void 0,
        ...term
      };
    });
    if (flatTermsWithParentAndChildren.some(
      ({ parent }) => parent === void 0
    )) {
      return flatTermsWithParentAndChildren;
    }
    const termsById = /* @__PURE__ */ Object.create(null);
    for (const term of flatTermsWithParentAndChildren) {
      term.children = [];
      termsById[term.id] = term;
    }
    const tree = [];
    for (const term of flatTermsWithParentAndChildren) {
      const parent = termsById[term.parent];
      if (parent) {
        parent.children.push(term);
      } else if (`${term.parent}` === "0") {
        tree.push(term);
      }
    }
    return tree;
  }
  var unescapeString = (arg) => {
    return (0, import_html_entities17.decodeEntities)(arg);
  };
  var unescapeTerm = (term) => {
    return {
      ...term,
      name: unescapeString(term.name)
    };
  };
  var unescapeTerms = (terms) => {
    return (terms ?? []).map(unescapeTerm);
  };

  // packages/editor/build-module/components/page-attributes/parent.mjs
  var import_jsx_runtime515 = __toESM(require_jsx_runtime(), 1);
  function getTitle(post2) {
    return post2?.title?.rendered ? (0, import_html_entities18.decodeEntities)(post2.title.rendered) : `#${post2.id} (${(0, import_i18n239.__)("no title")})`;
  }
  var getItemPriority2 = (name2, searchValue) => {
    const normalizedName = (0, import_remove_accents5.default)(name2 || "").toLowerCase();
    const normalizedSearch = (0, import_remove_accents5.default)(searchValue || "").toLowerCase();
    if (normalizedName === normalizedSearch) {
      return 0;
    }
    if (normalizedName.startsWith(normalizedSearch)) {
      return normalizedName.length;
    }
    return Infinity;
  };
  function PageAttributesParent2() {
    const { editPost: editPost2 } = (0, import_data116.useDispatch)(store);
    const [fieldValue, setFieldValue] = (0, import_element327.useState)("");
    const {
      isHierarchical,
      parentPostId,
      parentPostTitle,
      pageItems,
      isLoading
    } = (0, import_data116.useSelect)(
      (select9) => {
        const {
          getPostType,
          getEntityRecords,
          getEntityRecord,
          isResolving
        } = select9(import_core_data74.store);
        const { getCurrentPostId: getCurrentPostId2, getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
        const postTypeSlug = getEditedPostAttribute2("type");
        const pageId = getEditedPostAttribute2("parent");
        const pType = getPostType(postTypeSlug);
        const postId2 = getCurrentPostId2();
        const postIsHierarchical = pType?.hierarchical ?? false;
        const query = {
          per_page: 100,
          exclude: postId2,
          parent_exclude: postId2,
          orderby: "menu_order",
          order: "asc",
          _fields: "id,title,parent"
        };
        if (!!fieldValue) {
          query.search = fieldValue;
          query.orderby = "relevance";
          query.search_columns = ["post_title"];
        }
        const parentPost = pageId ? getEntityRecord("postType", postTypeSlug, pageId) : null;
        return {
          isHierarchical: postIsHierarchical,
          parentPostId: pageId,
          parentPostTitle: parentPost ? getTitle(parentPost) : "",
          pageItems: postIsHierarchical ? getEntityRecords("postType", postTypeSlug, query) : null,
          isLoading: postIsHierarchical ? isResolving("getEntityRecords", [
            "postType",
            postTypeSlug,
            query
          ]) : false
        };
      },
      [fieldValue]
    );
    const parentOptions = (0, import_element327.useMemo)(() => {
      const getOptionsFromTree = (tree2, level = 0) => {
        const mappedNodes = tree2.map((treeNode) => [
          {
            value: treeNode.id,
            label: "\u2014 ".repeat(level) + (0, import_html_entities18.decodeEntities)(treeNode.name),
            rawName: treeNode.name
          },
          ...getOptionsFromTree(treeNode.children || [], level + 1)
        ]);
        const sortedNodes = mappedNodes.sort(([a2], [b2]) => {
          const priorityA = getItemPriority2(a2.rawName, fieldValue);
          const priorityB = getItemPriority2(b2.rawName, fieldValue);
          return priorityA >= priorityB ? 1 : -1;
        });
        return sortedNodes.flat();
      };
      if (!pageItems) {
        return [];
      }
      let tree = pageItems.map((item) => ({
        id: item.id,
        parent: item.parent,
        name: getTitle(item)
      }));
      if (!fieldValue) {
        tree = buildTermsTree2(tree);
      }
      const opts = getOptionsFromTree(tree);
      const optsHasParent = opts.find(
        (item) => item.value === parentPostId
      );
      if (parentPostTitle && !optsHasParent) {
        opts.unshift({
          value: parentPostId,
          label: parentPostTitle
        });
      }
      return opts;
    }, [pageItems, fieldValue, parentPostTitle, parentPostId]);
    if (!isHierarchical) {
      return null;
    }
    const handleKeydown = (inputValue) => {
      setFieldValue(inputValue);
    };
    const handleChange = (selectedPostId) => {
      editPost2({ parent: selectedPostId });
    };
    return /* @__PURE__ */ (0, import_jsx_runtime515.jsx)(
      import_components165.ComboboxControl,
      {
        className: "editor-page-attributes__parent",
        label: (0, import_i18n239.__)("Parent"),
        help: (0, import_i18n239.__)("Choose a parent page."),
        value: parentPostId,
        options: parentOptions,
        onFilterValueChange: (0, import_compose57.debounce)(handleKeydown, 300),
        onChange: handleChange,
        hideLabelFromVision: true,
        isLoading
      }
    );
  }
  function PostParentToggle({ isOpen: isOpen2, onClick }) {
    const parentPost = (0, import_data116.useSelect)((select9) => {
      const { getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
      const parentPostId = getEditedPostAttribute2("parent");
      if (!parentPostId) {
        return null;
      }
      const { getEntityRecord } = select9(import_core_data74.store);
      const postTypeSlug = getEditedPostAttribute2("type");
      return getEntityRecord("postType", postTypeSlug, parentPostId);
    }, []);
    const parentTitle = (0, import_element327.useMemo)(
      () => !parentPost ? (0, import_i18n239.__)("None") : getTitle(parentPost),
      [parentPost]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime515.jsx)(
      import_components165.Button,
      {
        size: "compact",
        className: "editor-post-parent__panel-toggle",
        variant: "tertiary",
        "aria-expanded": isOpen2,
        "aria-label": (
          // translators: %s: Current post parent.
          (0, import_i18n239.sprintf)((0, import_i18n239.__)("Change parent: %s"), parentTitle)
        ),
        onClick,
        children: parentTitle
      }
    );
  }
  function ParentRow() {
    const homeUrl = (0, import_data116.useSelect)((select9) => {
      return select9(import_core_data74.store).getEntityRecord("root", "__unstableBase")?.home;
    }, []);
    const [popoverAnchor, setPopoverAnchor] = (0, import_element327.useState)(null);
    const popoverProps = (0, import_element327.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime515.jsx)(post_panel_row_default, { label: (0, import_i18n239.__)("Parent"), ref: setPopoverAnchor, children: /* @__PURE__ */ (0, import_jsx_runtime515.jsx)(
      import_components165.Dropdown,
      {
        popoverProps,
        className: "editor-post-parent__panel-dropdown",
        contentClassName: "editor-post-parent__panel-dialog",
        focusOnMount: true,
        renderToggle: ({ isOpen: isOpen2, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime515.jsx)(PostParentToggle, { isOpen: isOpen2, onClick: onToggle }),
        renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime515.jsxs)("div", { className: "editor-post-parent", children: [
          /* @__PURE__ */ (0, import_jsx_runtime515.jsx)(
            import_block_editor47.__experimentalInspectorPopoverHeader,
            {
              title: (0, import_i18n239.__)("Parent"),
              onClose
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime515.jsxs)("div", { children: [
            (0, import_element327.createInterpolateElement)(
              (0, import_i18n239.sprintf)(
                /* translators: %s: The home URL of the WordPress installation without the scheme. */
                (0, import_i18n239.__)(
                  'Child pages inherit characteristics from their parent, such as URL structure. For instance, if "Pricing" is a child of "Services", its URL would be %s<wbr />/services<wbr />/pricing.'
                ),
                (0, import_url16.filterURLForDisplay)(homeUrl).replace(
                  /([/.])/g,
                  "<wbr />$1"
                )
              ),
              {
                wbr: /* @__PURE__ */ (0, import_jsx_runtime515.jsx)("wbr", {})
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime515.jsx)("p", { children: (0, import_element327.createInterpolateElement)(
              (0, import_i18n239.__)(
                "They also show up as sub-items in the default navigation menu. <a>Learn more.</a>"
              ),
              {
                a: /* @__PURE__ */ (0, import_jsx_runtime515.jsx)(
                  import_components165.ExternalLink,
                  {
                    href: (0, import_i18n239.__)(
                      "https://wordpress.org/documentation/article/page-post-settings-sidebar/#page-attributes"
                    )
                  }
                )
              }
            ) })
          ] }),
          /* @__PURE__ */ (0, import_jsx_runtime515.jsx)(PageAttributesParent2, {})
        ] })
      }
    ) });
  }
  var parent_default2 = PageAttributesParent2;

  // packages/editor/build-module/components/page-attributes/panel.mjs
  var import_jsx_runtime516 = __toESM(require_jsx_runtime(), 1);
  var PANEL_NAME = "page-attributes";
  function AttributesPanel() {
    const { isEnabled, postType: postType2 } = (0, import_data117.useSelect)((select9) => {
      const { getEditedPostAttribute: getEditedPostAttribute2, isEditorPanelEnabled: isEditorPanelEnabled2 } = select9(store);
      const { getPostType } = select9(import_core_data75.store);
      return {
        isEnabled: isEditorPanelEnabled2(PANEL_NAME),
        postType: getPostType(getEditedPostAttribute2("type"))
      };
    }, []);
    if (!isEnabled || !postType2) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime516.jsx)(ParentRow, {});
  }
  function PageAttributesPanel() {
    return /* @__PURE__ */ (0, import_jsx_runtime516.jsx)(check_default2, { children: /* @__PURE__ */ (0, import_jsx_runtime516.jsx)(AttributesPanel, {}) });
  }

  // packages/editor/build-module/components/post-template/classic-theme.mjs
  var import_i18n242 = __toESM(require_i18n(), 1);
  var import_components167 = __toESM(require_components(), 1);
  var import_data120 = __toESM(require_data(), 1);
  var import_core_data77 = __toESM(require_core_data(), 1);
  var import_block_editor48 = __toESM(require_block_editor(), 1);
  var import_element330 = __toESM(require_element(), 1);
  var import_notices24 = __toESM(require_notices(), 1);

  // packages/editor/build-module/components/post-template/create-new-template-modal.mjs
  var import_data118 = __toESM(require_data(), 1);
  var import_element328 = __toESM(require_element(), 1);
  var import_blocks25 = __toESM(require_blocks(), 1);
  var import_components166 = __toESM(require_components(), 1);
  var import_i18n240 = __toESM(require_i18n(), 1);
  var import_jsx_runtime517 = __toESM(require_jsx_runtime(), 1);
  var DEFAULT_TITLE = (0, import_i18n240.__)("Custom Template");
  function CreateNewTemplateModal({ onClose }) {
    const { defaultBlockTemplate, onNavigateToEntityRecord } = (0, import_data118.useSelect)(
      (select9) => {
        const { getEditorSettings: getEditorSettings2, getCurrentTemplateId: getCurrentTemplateId2 } = select9(store);
        return {
          defaultBlockTemplate: getEditorSettings2().defaultBlockTemplate,
          onNavigateToEntityRecord: getEditorSettings2().onNavigateToEntityRecord,
          getTemplateId: getCurrentTemplateId2
        };
      }
    );
    const { createTemplate: createTemplate2 } = unlock((0, import_data118.useDispatch)(store));
    const [title, setTitle] = (0, import_element328.useState)("");
    const [isBusy, setIsBusy] = (0, import_element328.useState)(false);
    const cancel = () => {
      setTitle("");
      onClose();
    };
    const submit = async (event) => {
      event.preventDefault();
      if (isBusy) {
        return;
      }
      setIsBusy(true);
      const newTemplateContent = defaultBlockTemplate ?? (0, import_blocks25.serialize)([
        (0, import_blocks25.createBlock)(
          "core/group",
          {
            tagName: "header",
            layout: { inherit: true }
          },
          [
            (0, import_blocks25.createBlock)("core/site-title"),
            (0, import_blocks25.createBlock)("core/site-tagline")
          ]
        ),
        (0, import_blocks25.createBlock)("core/separator"),
        (0, import_blocks25.createBlock)(
          "core/group",
          {
            tagName: "main"
          },
          [
            (0, import_blocks25.createBlock)(
              "core/group",
              {
                layout: { inherit: true }
              },
              [(0, import_blocks25.createBlock)("core/post-title")]
            ),
            (0, import_blocks25.createBlock)("core/post-content", {
              layout: { inherit: true }
            })
          ]
        )
      ]);
      const newTemplate = await createTemplate2({
        slug: paramCase(title || DEFAULT_TITLE) || "wp-custom-template",
        content: newTemplateContent,
        title: title || DEFAULT_TITLE,
        status: "publish"
      });
      setIsBusy(false);
      onNavigateToEntityRecord({
        postId: newTemplate.id,
        postType: "wp_template"
      });
      cancel();
    };
    return /* @__PURE__ */ (0, import_jsx_runtime517.jsx)(
      import_components166.Modal,
      {
        title: (0, import_i18n240.__)("Create custom template"),
        onRequestClose: cancel,
        focusOnMount: "firstContentElement",
        size: "small",
        overlayClassName: "editor-post-template__create-template-modal",
        children: /* @__PURE__ */ (0, import_jsx_runtime517.jsx)("form", { onSubmit: submit, children: /* @__PURE__ */ (0, import_jsx_runtime517.jsxs)(import_components166.__experimentalVStack, { spacing: "3", children: [
          /* @__PURE__ */ (0, import_jsx_runtime517.jsx)(
            import_components166.TextControl,
            {
              label: (0, import_i18n240.__)("Name"),
              value: title,
              onChange: setTitle,
              placeholder: DEFAULT_TITLE,
              disabled: isBusy,
              help: (0, import_i18n240.__)(
                // eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts
                'Describe the template, e.g. "Post with sidebar". A custom template can be manually applied to any post or page.'
              )
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime517.jsxs)(import_components166.__experimentalHStack, { justify: "right", children: [
            /* @__PURE__ */ (0, import_jsx_runtime517.jsx)(
              import_components166.Button,
              {
                __next40pxDefaultSize: true,
                variant: "tertiary",
                onClick: cancel,
                children: (0, import_i18n240.__)("Cancel")
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime517.jsx)(
              import_components166.Button,
              {
                __next40pxDefaultSize: true,
                variant: "primary",
                type: "submit",
                isBusy,
                "aria-disabled": isBusy,
                children: (0, import_i18n240.__)("Create")
              }
            )
          ] })
        ] }) })
      }
    );
  }

  // packages/editor/build-module/components/post-template/hooks.mjs
  var import_data119 = __toESM(require_data(), 1);
  var import_element329 = __toESM(require_element(), 1);
  var import_core_data76 = __toESM(require_core_data(), 1);
  var import_i18n241 = __toESM(require_i18n(), 1);
  function useEditedPostContext() {
    return (0, import_data119.useSelect)((select9) => {
      const { getCurrentPostId: getCurrentPostId2, getCurrentPostType: getCurrentPostType2 } = select9(store);
      return {
        postId: getCurrentPostId2(),
        postType: getCurrentPostType2()
      };
    }, []);
  }
  function useAllowSwitchingTemplates() {
    const { postType: postType2, postId: postId2 } = useEditedPostContext();
    return (0, import_data119.useSelect)(
      (select9) => {
        const { canUser, getEntityRecord, getEntityRecords } = select9(import_core_data76.store);
        const siteSettings = canUser("read", {
          kind: "root",
          name: "site"
        }) ? getEntityRecord("root", "site") : void 0;
        const isPostsPage = +postId2 === siteSettings?.page_for_posts;
        const isFrontPage = postType2 === "page" && +postId2 === siteSettings?.page_on_front;
        const templates = isFrontPage ? getEntityRecords("postType", "wp_template", {
          per_page: -1
        }) : [];
        const hasFrontPage = isFrontPage && !!templates?.some(({ slug }) => slug === "front-page");
        return !isPostsPage && !hasFrontPage;
      },
      [postId2, postType2]
    );
  }
  function useTemplates(postType2) {
    return (0, import_data119.useSelect)(
      (select9) => select9(import_core_data76.store).getEntityRecords("postType", "wp_template", {
        per_page: -1,
        post_type: postType2
        // We look at the combined templates for now (old endpoint)
        // because posts only accept slugs for templates, not IDs.
      }),
      [postType2]
    );
  }
  function useAvailableTemplates() {
    const { postType: postType2, postId: postId2 } = useEditedPostContext();
    const [postSlug] = (0, import_core_data76.useEntityProp)("postType", postType2, "slug", postId2);
    const currentTemplateSlug = useCurrentTemplateSlug();
    const allowSwitchingTemplate = useAllowSwitchingTemplates();
    const templates = useTemplates(postType2);
    const defaultTemplate = (0, import_data119.useSelect)(
      (select9) => {
        if (!window?.__experimentalDataFormInspector) {
          return null;
        }
        if (!currentTemplateSlug) {
          return null;
        }
        const { getDefaultTemplateId, getEntityRecord } = select9(import_core_data76.store);
        let slug;
        if (postSlug) {
          slug = postType2 === "page" ? `${postType2}-${postSlug}` : `single-${postType2}-${postSlug}`;
        } else {
          slug = postType2 === "page" ? "page" : `single-${postType2}`;
        }
        const templateId2 = getDefaultTemplateId({ slug });
        if (!templateId2) {
          return null;
        }
        return getEntityRecord("postType", "wp_template", templateId2);
      },
      [currentTemplateSlug, postSlug, postType2]
    );
    return (0, import_element329.useMemo)(
      () => allowSwitchingTemplate && [
        ...(templates || []).filter(
          (template2) => template2.is_custom && template2.slug !== currentTemplateSlug && !!template2.content.raw
          // Skip empty templates.
        ),
        defaultTemplate && {
          ...defaultTemplate,
          title: {
            rendered: (0, import_i18n241.sprintf)(
              // translators: %s: Template name
              (0, import_i18n241.__)("%s (default)"),
              defaultTemplate.title.rendered
            )
          },
          // That's extra custom prop in order to update to an empty template
          // when we select the default template.
          isDefault: true
        }
      ].filter(Boolean),
      [
        templates,
        defaultTemplate,
        currentTemplateSlug,
        allowSwitchingTemplate
      ]
    );
  }
  function usePostTemplatePanelMode() {
    return (0, import_data119.useSelect)((select9) => {
      const { getEditorSettings: getEditorSettings2, getCurrentTemplateId: getCurrentTemplateId2, getCurrentPostType: getCurrentPostType2 } = select9(store);
      const { getPostType, canUser } = select9(import_core_data76.store);
      const postTypeSlug = getCurrentPostType2();
      const postType2 = getPostType(postTypeSlug);
      const settings = getEditorSettings2();
      const isBlockTheme = settings.__unstableIsBlockBasedTheme;
      const hasTemplates = !!settings.availableTemplates && Object.keys(settings.availableTemplates).length > 0;
      let isVisible2;
      if (!postType2?.viewable) {
        isVisible2 = false;
      } else if (hasTemplates) {
        isVisible2 = true;
      } else if (!settings.supportsTemplateMode) {
        isVisible2 = false;
      } else {
        isVisible2 = canUser("create", {
          kind: "postType",
          name: "wp_template"
        }) ?? false;
      }
      if (!isBlockTheme && isVisible2) {
        return "classic";
      }
      if (isBlockTheme && !!getCurrentTemplateId2()) {
        return "block-theme";
      }
      return null;
    }, []);
  }
  function useCurrentTemplateSlug() {
    const { postType: postType2, postId: postId2 } = useEditedPostContext();
    const templates = useTemplates(postType2);
    const entityTemplate = (0, import_data119.useSelect)(
      (select9) => {
        const post2 = select9(import_core_data76.store).getEditedEntityRecord(
          "postType",
          postType2,
          postId2
        );
        return post2?.template;
      },
      [postType2, postId2]
    );
    if (!entityTemplate) {
      return;
    }
    return templates?.find((template2) => template2.slug === entityTemplate)?.slug;
  }

  // packages/editor/build-module/components/post-template/classic-theme.mjs
  var import_jsx_runtime518 = __toESM(require_jsx_runtime(), 1);
  function PostTemplateToggle({ isOpen: isOpen2, onClick }) {
    const templateTitle = (0, import_data120.useSelect)((select9) => {
      const templateSlug = select9(store).getEditedPostAttribute("template");
      const { supportsTemplateMode, availableTemplates } = select9(store).getEditorSettings();
      if (!supportsTemplateMode && availableTemplates[templateSlug]) {
        return availableTemplates[templateSlug];
      }
      const template2 = select9(import_core_data77.store).canUser("create", {
        kind: "postType",
        name: "wp_template"
      }) && select9(store).getCurrentTemplateId();
      return template2?.title || template2?.slug || availableTemplates?.[templateSlug];
    }, []);
    return /* @__PURE__ */ (0, import_jsx_runtime518.jsx)(
      import_components167.Button,
      {
        __next40pxDefaultSize: true,
        variant: "tertiary",
        "aria-expanded": isOpen2,
        "aria-label": (0, import_i18n242.__)("Template options"),
        onClick,
        children: templateTitle ?? (0, import_i18n242.__)("Default template")
      }
    );
  }
  function PostTemplateDropdownContent({ onClose }) {
    const allowSwitchingTemplate = useAllowSwitchingTemplates();
    const {
      availableTemplates,
      fetchedTemplates,
      selectedTemplateSlug,
      canCreate,
      canEdit,
      currentTemplateId,
      onNavigateToEntityRecord,
      getEditorSettings: getEditorSettings2
    } = (0, import_data120.useSelect)(
      (select9) => {
        const { canUser, getEntityRecords } = select9(import_core_data77.store);
        const editorSettings2 = select9(store).getEditorSettings();
        const canCreateTemplates = canUser("create", {
          kind: "postType",
          name: "wp_template"
        });
        const _currentTemplateId = select9(store).getCurrentTemplateId();
        return {
          availableTemplates: editorSettings2.availableTemplates,
          fetchedTemplates: canCreateTemplates ? getEntityRecords("postType", "wp_template", {
            post_type: select9(store).getCurrentPostType(),
            per_page: -1
          }) : void 0,
          selectedTemplateSlug: select9(store).getEditedPostAttribute("template"),
          canCreate: allowSwitchingTemplate && canCreateTemplates && editorSettings2.supportsTemplateMode,
          canEdit: allowSwitchingTemplate && canCreateTemplates && editorSettings2.supportsTemplateMode && !!_currentTemplateId,
          currentTemplateId: _currentTemplateId,
          onNavigateToEntityRecord: editorSettings2.onNavigateToEntityRecord,
          getEditorSettings: select9(store).getEditorSettings
        };
      },
      [allowSwitchingTemplate]
    );
    const options = (0, import_element330.useMemo)(
      () => Object.entries({
        ...availableTemplates,
        ...Object.fromEntries(
          (fetchedTemplates ?? []).map(({ slug, title }) => [
            slug,
            title.rendered
          ])
        )
      }).map(([slug, title]) => ({ value: slug, label: title })),
      [availableTemplates, fetchedTemplates]
    );
    const selectedOption = options.find((option) => option.value === selectedTemplateSlug) ?? options.find((option) => !option.value);
    const { editPost: editPost2 } = (0, import_data120.useDispatch)(store);
    const { createSuccessNotice } = (0, import_data120.useDispatch)(import_notices24.store);
    const [isCreateModalOpen, setIsCreateModalOpen] = (0, import_element330.useState)(false);
    return /* @__PURE__ */ (0, import_jsx_runtime518.jsxs)("div", { className: "editor-post-template__classic-theme-dropdown", children: [
      /* @__PURE__ */ (0, import_jsx_runtime518.jsx)(
        import_block_editor48.__experimentalInspectorPopoverHeader,
        {
          title: (0, import_i18n242.__)("Template"),
          help: (0, import_i18n242.__)(
            "Templates define the way content is displayed when viewing your site."
          ),
          actions: canCreate ? [
            {
              icon: add_template_default,
              label: (0, import_i18n242.__)("Add template"),
              onClick: () => setIsCreateModalOpen(true)
            }
          ] : [],
          onClose
        }
      ),
      !allowSwitchingTemplate ? /* @__PURE__ */ (0, import_jsx_runtime518.jsx)(import_components167.Notice, { status: "warning", isDismissible: false, children: (0, import_i18n242.__)("The posts page template cannot be changed.") }) : /* @__PURE__ */ (0, import_jsx_runtime518.jsx)(
        import_components167.SelectControl,
        {
          hideLabelFromVision: true,
          label: (0, import_i18n242.__)("Template"),
          value: selectedOption?.value ?? "",
          options,
          onChange: (slug) => editPost2({ template: slug || "" })
        }
      ),
      canEdit && onNavigateToEntityRecord && /* @__PURE__ */ (0, import_jsx_runtime518.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime518.jsx)(
        import_components167.Button,
        {
          __next40pxDefaultSize: true,
          variant: "link",
          onClick: () => {
            onNavigateToEntityRecord({
              postId: currentTemplateId,
              postType: "wp_template"
            });
            onClose();
            createSuccessNotice(
              (0, import_i18n242.__)(
                "Editing template. Changes made here affect all posts and pages that use the template."
              ),
              {
                type: "snackbar",
                actions: [
                  {
                    label: (0, import_i18n242.__)("Back"),
                    onClick: () => getEditorSettings2().onNavigateToPreviousEntityRecord()
                  }
                ]
              }
            );
          },
          children: (0, import_i18n242.__)("Edit template")
        }
      ) }),
      isCreateModalOpen && /* @__PURE__ */ (0, import_jsx_runtime518.jsx)(
        CreateNewTemplateModal,
        {
          onClose: () => setIsCreateModalOpen(false)
        }
      )
    ] });
  }
  function ClassicThemeControl() {
    const [popoverAnchor, setPopoverAnchor] = (0, import_element330.useState)(null);
    const popoverProps = (0, import_element330.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        className: "editor-post-template__dropdown",
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime518.jsx)(post_panel_row_default, { label: (0, import_i18n242.__)("Template"), ref: setPopoverAnchor, children: /* @__PURE__ */ (0, import_jsx_runtime518.jsx)(
      import_components167.Dropdown,
      {
        popoverProps,
        focusOnMount: true,
        renderToggle: ({ isOpen: isOpen2, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime518.jsx)(
          PostTemplateToggle,
          {
            isOpen: isOpen2,
            onClick: onToggle
          }
        ),
        renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime518.jsx)(PostTemplateDropdownContent, { onClose })
      }
    ) });
  }
  var classic_theme_default = ClassicThemeControl;

  // packages/editor/build-module/components/plugin-document-setting-panel/index.mjs
  var import_components169 = __toESM(require_components(), 1);
  var import_plugins4 = __toESM(require_plugins(), 1);
  var import_data122 = __toESM(require_data(), 1);
  var import_warning4 = __toESM(require_warning(), 1);

  // packages/editor/build-module/components/preferences-modal/enable-plugin-document-setting-panel.mjs
  var import_components168 = __toESM(require_components(), 1);

  // packages/editor/build-module/components/preferences-modal/enable-panel.mjs
  var import_data121 = __toESM(require_data(), 1);
  var import_preferences12 = __toESM(require_preferences(), 1);
  var import_jsx_runtime519 = __toESM(require_jsx_runtime(), 1);
  var { PreferenceBaseOption } = unlock(import_preferences12.privateApis);
  function EnablePanelOption(props) {
    const { toggleEditorPanelEnabled: toggleEditorPanelEnabled2 } = (0, import_data121.useDispatch)(store);
    const { isChecked, isRemoved } = (0, import_data121.useSelect)(
      (select9) => {
        const { isEditorPanelEnabled: isEditorPanelEnabled2, isEditorPanelRemoved: isEditorPanelRemoved2 } = select9(store);
        return {
          isChecked: isEditorPanelEnabled2(props.panelName),
          isRemoved: isEditorPanelRemoved2(props.panelName)
        };
      },
      [props.panelName]
    );
    if (isRemoved) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime519.jsx)(
      PreferenceBaseOption,
      {
        isChecked,
        onChange: () => toggleEditorPanelEnabled2(props.panelName),
        ...props
      }
    );
  }

  // packages/editor/build-module/components/preferences-modal/enable-plugin-document-setting-panel.mjs
  var import_jsx_runtime520 = __toESM(require_jsx_runtime(), 1);
  var { Fill: Fill4, Slot: Slot4 } = (0, import_components168.createSlotFill)(
    "EnablePluginDocumentSettingPanelOption"
  );
  var EnablePluginDocumentSettingPanelOption = ({ label, panelName }) => /* @__PURE__ */ (0, import_jsx_runtime520.jsx)(Fill4, { children: /* @__PURE__ */ (0, import_jsx_runtime520.jsx)(EnablePanelOption, { label, panelName }) });
  EnablePluginDocumentSettingPanelOption.Slot = Slot4;
  var enable_plugin_document_setting_panel_default = EnablePluginDocumentSettingPanelOption;

  // packages/editor/build-module/components/plugin-document-setting-panel/index.mjs
  var import_jsx_runtime521 = __toESM(require_jsx_runtime(), 1);
  var { Fill: Fill5, Slot: Slot5 } = (0, import_components169.createSlotFill)("PluginDocumentSettingPanel");
  var PluginDocumentSettingPanel = ({
    name: name2,
    className,
    title,
    icon,
    children
  }) => {
    const { name: pluginName } = (0, import_plugins4.usePluginContext)();
    const panelName = `${pluginName}/${name2}`;
    const { opened, isEnabled } = (0, import_data122.useSelect)(
      (select9) => {
        const { isEditorPanelOpened: isEditorPanelOpened2, isEditorPanelEnabled: isEditorPanelEnabled2 } = select9(store);
        return {
          opened: isEditorPanelOpened2(panelName),
          isEnabled: isEditorPanelEnabled2(panelName)
        };
      },
      [panelName]
    );
    const { toggleEditorPanelOpened: toggleEditorPanelOpened2 } = (0, import_data122.useDispatch)(store);
    if (void 0 === name2) {
      (0, import_warning4.default)("PluginDocumentSettingPanel requires a name property.");
    }
    return /* @__PURE__ */ (0, import_jsx_runtime521.jsxs)(import_jsx_runtime521.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime521.jsx)(
        enable_plugin_document_setting_panel_default,
        {
          label: title,
          panelName
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime521.jsx)(Fill5, { children: isEnabled && /* @__PURE__ */ (0, import_jsx_runtime521.jsx)(
        import_components169.PanelBody,
        {
          className,
          title,
          icon,
          opened,
          onToggle: () => toggleEditorPanelOpened2(panelName),
          children
        }
      ) })
    ] });
  };
  PluginDocumentSettingPanel.Slot = Slot5;
  var plugin_document_setting_panel_default = PluginDocumentSettingPanel;

  // packages/editor/build-module/components/block-settings-menu/plugin-block-settings-menu-item.mjs
  var import_block_editor49 = __toESM(require_block_editor(), 1);
  var import_components170 = __toESM(require_components(), 1);
  var import_compose58 = __toESM(require_compose(), 1);
  var import_jsx_runtime522 = __toESM(require_jsx_runtime(), 1);
  var isEverySelectedBlockAllowed = (selected, allowed) => selected.filter((id) => !allowed.includes(id)).length === 0;
  var shouldRenderItem = (selectedBlocks, allowedBlocks) => !Array.isArray(allowedBlocks) || isEverySelectedBlockAllowed(selectedBlocks, allowedBlocks);
  var PluginBlockSettingsMenuItem = ({
    allowedBlocks,
    icon,
    label,
    onClick,
    small,
    role
  }) => /* @__PURE__ */ (0, import_jsx_runtime522.jsx)(import_block_editor49.BlockSettingsMenuControls, { children: ({ selectedBlocks, onClose }) => {
    if (!shouldRenderItem(selectedBlocks, allowedBlocks)) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime522.jsx)(
      import_components170.MenuItem,
      {
        onClick: (0, import_compose58.compose)(onClick, onClose),
        icon,
        label: small ? label : void 0,
        role,
        children: !small && label
      }
    );
  } });
  var plugin_block_settings_menu_item_default = PluginBlockSettingsMenuItem;

  // packages/editor/build-module/components/plugin-more-menu-item/index.mjs
  var import_deprecated12 = __toESM(require_deprecated(), 1);
  var import_plugins5 = __toESM(require_plugins(), 1);
  var import_jsx_runtime523 = __toESM(require_jsx_runtime(), 1);
  function PluginMoreMenuItem(props) {
    const context = (0, import_plugins5.usePluginContext)();
    const { as, ...itemProps } = props;
    if (as) {
      (0, import_deprecated12.default)("The `as` prop of wp.editor.PluginMoreMenuItem", {
        since: "7.2",
        hint: "The menu renders the item itself. The prop is ignored."
      });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime523.jsx)(
      action_item_default,
      {
        name: "core/plugin-more-menu",
        icon: itemProps.icon || context.icon,
        ...itemProps
      }
    );
  }

  // packages/editor/build-module/components/plugin-post-publish-panel/index.mjs
  var import_plugins6 = __toESM(require_plugins(), 1);
  var import_components171 = __toESM(require_components(), 1);
  var import_jsx_runtime524 = __toESM(require_jsx_runtime(), 1);
  var { Fill: Fill6, Slot: Slot6 } = (0, import_components171.createSlotFill)("PluginPostPublishPanel");
  var PluginPostPublishPanel = ({
    children,
    className,
    title,
    initialOpen = false,
    icon
  }) => {
    const { icon: pluginIcon } = (0, import_plugins6.usePluginContext)();
    return /* @__PURE__ */ (0, import_jsx_runtime524.jsx)(Fill6, { children: /* @__PURE__ */ (0, import_jsx_runtime524.jsx)(
      import_components171.PanelBody,
      {
        className,
        initialOpen: initialOpen || !title,
        title,
        icon: icon ?? pluginIcon,
        children
      }
    ) });
  };
  PluginPostPublishPanel.Slot = Slot6;
  var plugin_post_publish_panel_default = PluginPostPublishPanel;

  // packages/editor/build-module/components/plugin-post-status-info/index.mjs
  var import_components172 = __toESM(require_components(), 1);
  var import_jsx_runtime525 = __toESM(require_jsx_runtime(), 1);
  var { Fill: Fill7, Slot: Slot7 } = (0, import_components172.createSlotFill)("PluginPostStatusInfo");
  var PluginPostStatusInfo = ({ children, className }) => /* @__PURE__ */ (0, import_jsx_runtime525.jsx)(Fill7, { children: /* @__PURE__ */ (0, import_jsx_runtime525.jsx)(import_components172.PanelRow, { className, children }) });
  PluginPostStatusInfo.Slot = Slot7;
  var plugin_post_status_info_default = PluginPostStatusInfo;

  // packages/editor/build-module/components/plugin-pre-publish-panel/index.mjs
  var import_components173 = __toESM(require_components(), 1);
  var import_plugins7 = __toESM(require_plugins(), 1);
  var import_jsx_runtime526 = __toESM(require_jsx_runtime(), 1);
  var { Fill: Fill8, Slot: Slot8 } = (0, import_components173.createSlotFill)("PluginPrePublishPanel");
  var PluginPrePublishPanel = ({
    children,
    className,
    title,
    initialOpen = false,
    icon
  }) => {
    const { icon: pluginIcon } = (0, import_plugins7.usePluginContext)();
    return /* @__PURE__ */ (0, import_jsx_runtime526.jsx)(Fill8, { children: /* @__PURE__ */ (0, import_jsx_runtime526.jsx)(
      import_components173.PanelBody,
      {
        className,
        initialOpen: initialOpen || !title,
        title,
        icon: icon ?? pluginIcon,
        children
      }
    ) });
  };
  PluginPrePublishPanel.Slot = Slot8;
  var plugin_pre_publish_panel_default = PluginPrePublishPanel;

  // packages/editor/build-module/components/plugin-preview-menu-item/index.mjs
  var import_deprecated13 = __toESM(require_deprecated(), 1);
  var import_plugins8 = __toESM(require_plugins(), 1);
  var import_jsx_runtime527 = __toESM(require_jsx_runtime(), 1);
  function PluginPreviewMenuItem(props) {
    const context = (0, import_plugins8.usePluginContext)();
    const { as, ...itemProps } = props;
    if (as) {
      (0, import_deprecated13.default)("The `as` prop of wp.editor.PluginPreviewMenuItem", {
        since: "7.2",
        hint: "The menu renders the item itself. The prop is ignored."
      });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime527.jsx)(
      action_item_default,
      {
        name: "core/plugin-preview-menu",
        icon: itemProps.icon || context.icon,
        ...itemProps
      }
    );
  }

  // packages/editor/build-module/components/plugin-sidebar/index.mjs
  var import_jsx_runtime528 = __toESM(require_jsx_runtime(), 1);
  function PluginSidebar({ className, ...props }) {
    return /* @__PURE__ */ (0, import_jsx_runtime528.jsx)(
      complementary_area_default,
      {
        panelClassName: className,
        className: "editor-sidebar",
        scope: "core",
        ...props
      }
    );
  }

  // packages/editor/build-module/components/plugin-sidebar-more-menu-item/index.mjs
  var import_deprecated14 = __toESM(require_deprecated(), 1);
  var import_jsx_runtime529 = __toESM(require_jsx_runtime(), 1);
  function PluginSidebarMoreMenuItem(props) {
    const { as, ...itemProps } = props;
    if (as) {
      (0, import_deprecated14.default)("The `as` prop of wp.editor.PluginSidebarMoreMenuItem", {
        since: "7.2",
        hint: "The menu renders the item itself. The prop is ignored."
      });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime529.jsx)(ComplementaryAreaMoreMenuItem, { scope: "core", ...itemProps });
  }

  // packages/editor/build-module/components/post-template/block-theme.mjs
  var import_data126 = __toESM(require_data(), 1);
  var import_html_entities20 = __toESM(require_html_entities(), 1);
  var import_components177 = __toESM(require_components(), 1);
  var import_element333 = __toESM(require_element(), 1);
  var import_i18n246 = __toESM(require_i18n(), 1);
  var import_core_data81 = __toESM(require_core_data(), 1);
  var import_notices25 = __toESM(require_notices(), 1);
  var import_preferences13 = __toESM(require_preferences(), 1);

  // packages/editor/build-module/components/post-template/swap-template-button.mjs
  var import_element331 = __toESM(require_element(), 1);
  var import_html_entities19 = __toESM(require_html_entities(), 1);
  var import_block_editor51 = __toESM(require_block_editor(), 1);
  var import_components174 = __toESM(require_components(), 1);
  var import_i18n243 = __toESM(require_i18n(), 1);
  var import_data123 = __toESM(require_data(), 1);
  var import_core_data78 = __toESM(require_core_data(), 1);
  var import_blocks26 = __toESM(require_blocks(), 1);

  // packages/editor/build-module/utils/search-templates.mjs
  var import_block_editor50 = __toESM(require_block_editor(), 1);
  var { searchItems: searchItems3 } = unlock(import_block_editor50.privateApis);
  function searchTemplates(templates = [], searchValue = "") {
    return searchItems3(templates, searchValue, {
      fields: [{ get: (template2) => template2.title }]
    });
  }

  // packages/editor/build-module/components/post-template/swap-template-button.mjs
  var import_jsx_runtime530 = __toESM(require_jsx_runtime(), 1);
  function SwapTemplateModal({ onRequestClose, onSelect }) {
    const { postType: postType2, postId: postId2 } = useEditedPostContext();
    const { editEntityRecord } = (0, import_data123.useDispatch)(import_core_data78.store);
    const onTemplateSelect = async (template2) => {
      editEntityRecord(
        "postType",
        postType2,
        postId2,
        // Since we append the default template we need to properly
        // update to an empty string.
        { template: template2.isDefault ? "" : template2.name },
        { undoIgnore: true }
      );
      onRequestClose();
      onSelect?.();
    };
    return /* @__PURE__ */ (0, import_jsx_runtime530.jsx)(
      import_components174.Modal,
      {
        title: (0, import_i18n243.__)("Choose a template"),
        onRequestClose,
        overlayClassName: "editor-post-template__swap-template-modal",
        isFullScreen: true,
        children: /* @__PURE__ */ (0, import_jsx_runtime530.jsx)("div", { className: "editor-post-template__swap-template-modal-content", children: /* @__PURE__ */ (0, import_jsx_runtime530.jsx)(TemplatesList, { onSelect: onTemplateSelect }) })
      }
    );
  }
  function SwapTemplateButton({ onClick }) {
    const [showModal, setShowModal] = (0, import_element331.useState)(false);
    const availableTemplates = useAvailableTemplates();
    return /* @__PURE__ */ (0, import_jsx_runtime530.jsxs)(import_jsx_runtime530.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime530.jsx)(
        import_components174.MenuItem,
        {
          disabled: !availableTemplates?.length,
          accessibleWhenDisabled: true,
          onClick: () => setShowModal(true),
          children: (0, import_i18n243.__)("Change template")
        }
      ),
      showModal && /* @__PURE__ */ (0, import_jsx_runtime530.jsx)(
        SwapTemplateModal,
        {
          onRequestClose: () => setShowModal(false),
          onSelect: onClick
        }
      )
    ] });
  }
  function TemplatesList({ onSelect }) {
    const [searchValue, setSearchValue] = (0, import_element331.useState)("");
    const availableTemplates = useAvailableTemplates();
    const templatesAsPatterns = (0, import_element331.useMemo)(
      () => availableTemplates.map((template2) => ({
        name: template2.slug,
        blocks: (0, import_blocks26.parse)(template2.content.raw),
        title: (0, import_html_entities19.decodeEntities)(template2.title.rendered),
        id: template2.id,
        isDefault: template2.isDefault
      })),
      [availableTemplates]
    );
    const filteredBlockTemplates = (0, import_element331.useMemo)(() => {
      return searchTemplates(templatesAsPatterns, searchValue);
    }, [templatesAsPatterns, searchValue]);
    return /* @__PURE__ */ (0, import_jsx_runtime530.jsxs)(import_jsx_runtime530.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime530.jsx)(
        import_components174.SearchControl,
        {
          onChange: setSearchValue,
          value: searchValue,
          label: (0, import_i18n243.__)("Search"),
          placeholder: (0, import_i18n243.__)("Search"),
          className: "editor-post-template__swap-template-search"
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime530.jsx)(
        import_block_editor51.__experimentalBlockPatternsList,
        {
          label: (0, import_i18n243.__)("Templates"),
          blockPatterns: filteredBlockTemplates,
          onClickPattern: onSelect
        }
      )
    ] });
  }

  // packages/editor/build-module/components/post-template/reset-default-template.mjs
  var import_components175 = __toESM(require_components(), 1);
  var import_i18n244 = __toESM(require_i18n(), 1);
  var import_data124 = __toESM(require_data(), 1);
  var import_core_data79 = __toESM(require_core_data(), 1);
  var import_jsx_runtime531 = __toESM(require_jsx_runtime(), 1);
  function ResetDefaultTemplate({ onClick }) {
    const currentTemplateSlug = useCurrentTemplateSlug();
    const allowSwitchingTemplate = useAllowSwitchingTemplates();
    const { postType: postType2, postId: postId2 } = useEditedPostContext();
    const { editEntityRecord } = (0, import_data124.useDispatch)(import_core_data79.store);
    if (!currentTemplateSlug || !allowSwitchingTemplate) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime531.jsx)(
      import_components175.MenuItem,
      {
        onClick: () => {
          editEntityRecord(
            "postType",
            postType2,
            postId2,
            { template: "" },
            { undoIgnore: true }
          );
          onClick();
        },
        children: (0, import_i18n244.__)("Use default template")
      }
    );
  }

  // packages/editor/build-module/components/post-template/create-new-template.mjs
  var import_components176 = __toESM(require_components(), 1);
  var import_i18n245 = __toESM(require_i18n(), 1);
  var import_data125 = __toESM(require_data(), 1);
  var import_core_data80 = __toESM(require_core_data(), 1);
  var import_element332 = __toESM(require_element(), 1);
  var import_jsx_runtime532 = __toESM(require_jsx_runtime(), 1);
  function CreateNewTemplate() {
    const { canCreateTemplates } = (0, import_data125.useSelect)((select9) => {
      const { canUser } = select9(import_core_data80.store);
      return {
        canCreateTemplates: canUser("create", {
          kind: "postType",
          name: "wp_template"
        })
      };
    }, []);
    const [isCreateModalOpen, setIsCreateModalOpen] = (0, import_element332.useState)(false);
    const allowSwitchingTemplate = useAllowSwitchingTemplates();
    if (!canCreateTemplates || !allowSwitchingTemplate) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime532.jsxs)(import_jsx_runtime532.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime532.jsx)(
        import_components176.MenuItem,
        {
          onClick: () => {
            setIsCreateModalOpen(true);
          },
          children: (0, import_i18n245.__)("Create new template")
        }
      ),
      isCreateModalOpen && /* @__PURE__ */ (0, import_jsx_runtime532.jsx)(
        CreateNewTemplateModal,
        {
          onClose: () => {
            setIsCreateModalOpen(false);
          }
        }
      )
    ] });
  }

  // packages/editor/build-module/components/post-template/block-theme.mjs
  var import_jsx_runtime533 = __toESM(require_jsx_runtime(), 1);
  function BlockThemeControl() {
    const {
      isTemplateHidden,
      onNavigateToEntityRecord,
      getEditorSettings: getEditorSettings2,
      hasGoBack,
      hasRenderingMode,
      id
    } = (0, import_data126.useSelect)((select9) => {
      const {
        getRenderingMode: getRenderingMode2,
        getEditorSettings: _getEditorSettings,
        getCurrentTemplateId: getCurrentTemplateId2
      } = unlock(select9(store));
      const editorSettings2 = _getEditorSettings();
      return {
        isTemplateHidden: getRenderingMode2() === "post-only",
        onNavigateToEntityRecord: editorSettings2.onNavigateToEntityRecord,
        getEditorSettings: _getEditorSettings,
        hasGoBack: editorSettings2.hasOwnProperty(
          "onNavigateToPreviousEntityRecord"
        ),
        hasRenderingMode: !!editorSettings2.renderingMode,
        id: getCurrentTemplateId2()
      };
    }, []);
    const { get: getPreference } = (0, import_data126.useSelect)(import_preferences13.store);
    const { editedRecord: template2, hasResolved } = (0, import_core_data81.useEntityRecord)(
      "postType",
      "wp_template",
      id
    );
    const { createSuccessNotice } = (0, import_data126.useDispatch)(import_notices25.store);
    const { setRenderingMode: setRenderingMode2, setDefaultRenderingMode: setDefaultRenderingMode2 } = unlock(
      (0, import_data126.useDispatch)(store)
    );
    const canCreateTemplate = (0, import_data126.useSelect)(
      (select9) => !!select9(import_core_data81.store).canUser("create", {
        kind: "postType",
        name: "wp_template"
      }),
      []
    );
    const [popoverAnchor, setPopoverAnchor] = (0, import_element333.useState)(null);
    const popoverProps = (0, import_element333.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        className: "editor-post-template__dropdown",
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor]
    );
    if (!hasResolved) {
      return null;
    }
    const notificationAction = hasGoBack ? [
      {
        label: (0, import_i18n246.__)("Back"),
        onClick: () => getEditorSettings2().onNavigateToPreviousEntityRecord()
      }
    ] : void 0;
    const mayShowTemplateEditNotice = () => {
      if (!getPreference("core/edit-site", "welcomeGuideTemplate")) {
        createSuccessNotice(
          (0, import_i18n246.__)(
            "Editing template. Changes made here affect all posts and pages that use the template."
          ),
          { type: "snackbar", actions: notificationAction }
        );
      }
    };
    return /* @__PURE__ */ (0, import_jsx_runtime533.jsx)(post_panel_row_default, { label: (0, import_i18n246.__)("Template"), ref: setPopoverAnchor, children: /* @__PURE__ */ (0, import_jsx_runtime533.jsx)(
      import_components177.DropdownMenu,
      {
        popoverProps,
        focusOnMount: true,
        toggleProps: {
          size: "compact",
          variant: "tertiary",
          tooltipPosition: "middle left"
        },
        label: (0, import_i18n246.__)("Template options"),
        text: (0, import_html_entities20.decodeEntities)(template2.title),
        icon: null,
        children: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime533.jsxs)(import_jsx_runtime533.Fragment, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime533.jsxs)(import_components177.MenuGroup, { children: [
            canCreateTemplate && /* @__PURE__ */ (0, import_jsx_runtime533.jsx)(
              import_components177.MenuItem,
              {
                onClick: () => {
                  onNavigateToEntityRecord({
                    postId: template2.id,
                    postType: "wp_template"
                  });
                  onClose();
                  mayShowTemplateEditNotice();
                },
                children: (0, import_i18n246.__)("Edit template")
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime533.jsx)(SwapTemplateButton, { onClick: onClose }),
            /* @__PURE__ */ (0, import_jsx_runtime533.jsx)(ResetDefaultTemplate, { onClick: onClose }),
            canCreateTemplate && /* @__PURE__ */ (0, import_jsx_runtime533.jsx)(CreateNewTemplate, {})
          ] }),
          !hasRenderingMode && /* @__PURE__ */ (0, import_jsx_runtime533.jsx)(import_components177.MenuGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime533.jsx)(
            import_components177.MenuItem,
            {
              icon: !isTemplateHidden ? check_default : void 0,
              isSelected: !isTemplateHidden,
              role: "menuitemcheckbox",
              onClick: () => {
                const newRenderingMode = isTemplateHidden ? "template-locked" : "post-only";
                setRenderingMode2(newRenderingMode);
                setDefaultRenderingMode2(
                  newRenderingMode
                );
              },
              children: (0, import_i18n246.__)("Show template")
            }
          ) })
        ] })
      }
    ) });
  }

  // packages/editor/build-module/components/post-template/panel.mjs
  var import_jsx_runtime534 = __toESM(require_jsx_runtime(), 1);
  function PostTemplatePanel() {
    const mode = usePostTemplatePanelMode();
    if (mode === "classic") {
      return /* @__PURE__ */ (0, import_jsx_runtime534.jsx)(classic_theme_default, {});
    }
    if (mode === "block-theme") {
      return /* @__PURE__ */ (0, import_jsx_runtime534.jsx)(BlockThemeControl, {});
    }
    return null;
  }

  // packages/editor/build-module/components/post-author/index.mjs
  var import_data130 = __toESM(require_data(), 1);
  var import_core_data83 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/post-author/combobox.mjs
  var import_compose59 = __toESM(require_compose(), 1);
  var import_element335 = __toESM(require_element(), 1);
  var import_data128 = __toESM(require_data(), 1);
  var import_i18n248 = __toESM(require_i18n(), 1);
  var import_components178 = __toESM(require_components(), 1);

  // packages/editor/build-module/components/post-author/hook.mjs
  var import_i18n247 = __toESM(require_i18n(), 1);
  var import_element334 = __toESM(require_element(), 1);
  var import_data127 = __toESM(require_data(), 1);
  var import_html_entities21 = __toESM(require_html_entities(), 1);
  var import_core_data82 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/post-author/constants.mjs
  var BASE_QUERY = {
    _fields: "id,name",
    context: "view"
    // Allows non-admins to perform requests.
  };
  var AUTHORS_QUERY = {
    who: "authors",
    per_page: 100,
    ...BASE_QUERY
  };

  // packages/editor/build-module/components/post-author/hook.mjs
  function useAuthorsQuery(search) {
    const { authorId, authors, postAuthor, isLoading } = (0, import_data127.useSelect)(
      (select9) => {
        const { getUser, getUsers, isResolving } = select9(import_core_data82.store);
        const { getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
        const _authorId = getEditedPostAttribute2("author");
        const query = { ...AUTHORS_QUERY };
        if (search) {
          query.search = search;
          query.search_columns = ["name"];
        }
        return {
          authorId: _authorId,
          authors: getUsers(query),
          postAuthor: getUser(_authorId, BASE_QUERY),
          isLoading: isResolving("getUsers", [query])
        };
      },
      [search]
    );
    const authorOptions = (0, import_element334.useMemo)(() => {
      const fetchedAuthors = (authors ?? []).map((author) => {
        return {
          value: author.id,
          label: (0, import_html_entities21.decodeEntities)(author.name)
        };
      });
      const foundAuthor = fetchedAuthors.findIndex(
        ({ value }) => postAuthor?.id === value
      );
      let currentAuthor = [];
      if (foundAuthor < 0 && postAuthor) {
        currentAuthor = [
          {
            value: postAuthor.id,
            label: (0, import_html_entities21.decodeEntities)(postAuthor.name)
          }
        ];
      } else if (foundAuthor < 0 && !postAuthor) {
        currentAuthor = [
          {
            value: 0,
            label: (0, import_i18n247.__)("(No author)")
          }
        ];
      }
      return [...currentAuthor, ...fetchedAuthors];
    }, [authors, postAuthor]);
    return { authorId, authorOptions, postAuthor, isLoading };
  }

  // packages/editor/build-module/components/post-author/combobox.mjs
  var import_jsx_runtime535 = __toESM(require_jsx_runtime(), 1);
  function PostAuthorCombobox() {
    const [fieldValue, setFieldValue] = (0, import_element335.useState)();
    const { editPost: editPost2 } = (0, import_data128.useDispatch)(store);
    const { authorId, authorOptions, isLoading } = useAuthorsQuery(fieldValue);
    const handleSelect = (postAuthorId) => {
      if (!postAuthorId) {
        return;
      }
      editPost2({ author: postAuthorId });
    };
    return /* @__PURE__ */ (0, import_jsx_runtime535.jsx)(
      import_components178.ComboboxControl,
      {
        label: (0, import_i18n248.__)("Author"),
        options: authorOptions,
        value: authorId,
        onFilterValueChange: (0, import_compose59.debounce)(setFieldValue, 300),
        onChange: handleSelect,
        allowReset: false,
        hideLabelFromVision: true,
        isLoading
      }
    );
  }

  // packages/editor/build-module/components/post-author/select.mjs
  var import_i18n249 = __toESM(require_i18n(), 1);
  var import_data129 = __toESM(require_data(), 1);
  var import_components179 = __toESM(require_components(), 1);
  var import_jsx_runtime536 = __toESM(require_jsx_runtime(), 1);
  function PostAuthorSelect() {
    const { editPost: editPost2 } = (0, import_data129.useDispatch)(store);
    const { authorId, authorOptions } = useAuthorsQuery();
    const setAuthorId = (value) => {
      const author = Number(value);
      editPost2({ author });
    };
    return /* @__PURE__ */ (0, import_jsx_runtime536.jsx)(
      import_components179.SelectControl,
      {
        className: "post-author-selector",
        label: (0, import_i18n249.__)("Author"),
        options: authorOptions,
        onChange: setAuthorId,
        value: authorId,
        hideLabelFromVision: true
      }
    );
  }

  // packages/editor/build-module/components/post-author/index.mjs
  var import_jsx_runtime537 = __toESM(require_jsx_runtime(), 1);
  var minimumUsersForCombobox = 25;
  function PostAuthor() {
    const showCombobox = (0, import_data130.useSelect)((select9) => {
      const authors = select9(import_core_data83.store).getUsers(AUTHORS_QUERY);
      return authors?.length >= minimumUsersForCombobox;
    }, []);
    if (showCombobox) {
      return /* @__PURE__ */ (0, import_jsx_runtime537.jsx)(PostAuthorCombobox, {});
    }
    return /* @__PURE__ */ (0, import_jsx_runtime537.jsx)(PostAuthorSelect, {});
  }
  var post_author_default = PostAuthor;

  // packages/editor/build-module/components/post-author/check.mjs
  var import_data131 = __toESM(require_data(), 1);
  var import_jsx_runtime538 = __toESM(require_jsx_runtime(), 1);
  function PostAuthorCheck({ children }) {
    const { hasAssignAuthorAction } = (0, import_data131.useSelect)((select9) => {
      const post2 = select9(store).getCurrentPost();
      const canAssignAuthor = post2?._links?.["wp:action-assign-author"] ? true : false;
      return {
        hasAssignAuthorAction: canAssignAuthor
      };
    }, []);
    if (!hasAssignAuthorAction) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime538.jsx)(post_type_support_check_default, { supportKeys: "author", children });
  }

  // packages/editor/build-module/components/post-author/panel.mjs
  var import_i18n250 = __toESM(require_i18n(), 1);
  var import_components180 = __toESM(require_components(), 1);
  var import_element336 = __toESM(require_element(), 1);
  var import_html_entities22 = __toESM(require_html_entities(), 1);
  var import_block_editor52 = __toESM(require_block_editor(), 1);
  var import_data132 = __toESM(require_data(), 1);
  var import_core_data84 = __toESM(require_core_data(), 1);
  var import_jsx_runtime539 = __toESM(require_jsx_runtime(), 1);
  function PostAuthorToggle({ isOpen: isOpen2, onClick }) {
    const { postAuthor } = (0, import_data132.useSelect)((select9) => {
      const id = select9(store).getEditedPostAttribute("author");
      return {
        postAuthor: select9(import_core_data84.store).getUser(id, BASE_QUERY)
      };
    }, []);
    const authorName = (0, import_html_entities22.decodeEntities)(postAuthor?.name) || (0, import_i18n250.__)("(No author)");
    return /* @__PURE__ */ (0, import_jsx_runtime539.jsx)(
      import_components180.Button,
      {
        size: "compact",
        variant: "tertiary",
        "aria-expanded": isOpen2,
        "aria-label": (
          // translators: %s: Author name.
          (0, import_i18n250.sprintf)((0, import_i18n250.__)("Change author: %s"), authorName)
        ),
        onClick,
        children: authorName
      }
    );
  }
  function PostAuthor2() {
    const [popoverAnchor, setPopoverAnchor] = (0, import_element336.useState)(null);
    const popoverProps = (0, import_element336.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime539.jsx)(PostAuthorCheck, { children: /* @__PURE__ */ (0, import_jsx_runtime539.jsx)(post_panel_row_default, { label: (0, import_i18n250.__)("Author"), ref: setPopoverAnchor, children: /* @__PURE__ */ (0, import_jsx_runtime539.jsx)(
      import_components180.Dropdown,
      {
        popoverProps,
        contentClassName: "editor-post-author__panel-dialog",
        focusOnMount: true,
        renderToggle: ({ isOpen: isOpen2, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime539.jsx)(
          PostAuthorToggle,
          {
            isOpen: isOpen2,
            onClick: onToggle
          }
        ),
        renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime539.jsxs)("div", { className: "editor-post-author", children: [
          /* @__PURE__ */ (0, import_jsx_runtime539.jsx)(
            import_block_editor52.__experimentalInspectorPopoverHeader,
            {
              title: (0, import_i18n250.__)("Author"),
              onClose
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime539.jsx)(post_author_default, { onClose })
        ] })
      }
    ) }) });
  }
  var panel_default = PostAuthor2;

  // packages/editor/build-module/components/post-comments/index.mjs
  var import_i18n251 = __toESM(require_i18n(), 1);
  var import_components181 = __toESM(require_components(), 1);
  var import_data133 = __toESM(require_data(), 1);
  var import_jsx_runtime540 = __toESM(require_jsx_runtime(), 1);
  var COMMENT_OPTIONS = [
    {
      label: (0, import_i18n251._x)("Open", 'Adjective: e.g. "Comments are open"'),
      value: "open",
      description: (0, import_i18n251.__)("Visitors can add new comments and replies.")
    },
    {
      label: (0, import_i18n251.__)("Closed"),
      value: "closed",
      description: [
        (0, import_i18n251.__)("Visitors cannot add new comments or replies."),
        (0, import_i18n251.__)("Existing comments remain visible.")
      ].join(" ")
    }
  ];
  function PostComments() {
    const commentStatus = (0, import_data133.useSelect)(
      (select9) => select9(store).getEditedPostAttribute("comment_status") ?? "open",
      []
    );
    const { editPost: editPost2 } = (0, import_data133.useDispatch)(store);
    const handleStatus = (newCommentStatus) => editPost2({
      comment_status: newCommentStatus
    });
    return /* @__PURE__ */ (0, import_jsx_runtime540.jsx)("form", { children: /* @__PURE__ */ (0, import_jsx_runtime540.jsx)(import_components181.__experimentalVStack, { spacing: 4, children: /* @__PURE__ */ (0, import_jsx_runtime540.jsx)(
      import_components181.RadioControl,
      {
        className: "editor-change-status__options",
        hideLabelFromVision: true,
        label: (0, import_i18n251.__)("Comment status"),
        options: COMMENT_OPTIONS,
        onChange: handleStatus,
        selected: commentStatus
      }
    ) }) });
  }
  var post_comments_default = PostComments;

  // packages/editor/build-module/components/post-discussion/panel.mjs
  var import_i18n253 = __toESM(require_i18n(), 1);
  var import_components183 = __toESM(require_components(), 1);
  var import_data135 = __toESM(require_data(), 1);
  var import_element337 = __toESM(require_element(), 1);
  var import_block_editor53 = __toESM(require_block_editor(), 1);
  var import_core_data85 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/post-pingbacks/index.mjs
  var import_i18n252 = __toESM(require_i18n(), 1);
  var import_components182 = __toESM(require_components(), 1);
  var import_data134 = __toESM(require_data(), 1);
  var import_jsx_runtime541 = __toESM(require_jsx_runtime(), 1);
  function PostPingbacks() {
    const pingStatus = (0, import_data134.useSelect)(
      (select9) => select9(store).getEditedPostAttribute("ping_status") ?? "open",
      []
    );
    const { editPost: editPost2 } = (0, import_data134.useDispatch)(store);
    const onTogglePingback = () => editPost2({
      ping_status: pingStatus === "open" ? "closed" : "open"
    });
    return /* @__PURE__ */ (0, import_jsx_runtime541.jsx)(
      import_components182.CheckboxControl,
      {
        label: (0, import_i18n252.__)("Enable pingbacks & trackbacks"),
        checked: pingStatus === "open",
        onChange: onTogglePingback,
        help: /* @__PURE__ */ (0, import_jsx_runtime541.jsx)(
          import_components182.ExternalLink,
          {
            href: (0, import_i18n252.__)(
              "https://wordpress.org/documentation/article/trackbacks-and-pingbacks/"
            ),
            children: (0, import_i18n252.__)("Learn more about pingbacks & trackbacks")
          }
        )
      }
    );
  }
  var post_pingbacks_default = PostPingbacks;

  // packages/editor/build-module/components/post-discussion/panel.mjs
  var import_jsx_runtime542 = __toESM(require_jsx_runtime(), 1);
  var PANEL_NAME2 = "discussion-panel";
  function ModalContents({ onClose }) {
    return /* @__PURE__ */ (0, import_jsx_runtime542.jsxs)("div", { className: "editor-post-discussion", children: [
      /* @__PURE__ */ (0, import_jsx_runtime542.jsx)(
        import_block_editor53.__experimentalInspectorPopoverHeader,
        {
          title: (0, import_i18n253.__)("Discussion"),
          onClose
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime542.jsxs)(import_components183.__experimentalVStack, { spacing: 4, children: [
        /* @__PURE__ */ (0, import_jsx_runtime542.jsx)(post_type_support_check_default, { supportKeys: "comments", children: /* @__PURE__ */ (0, import_jsx_runtime542.jsx)(post_comments_default, {}) }),
        /* @__PURE__ */ (0, import_jsx_runtime542.jsx)(post_type_support_check_default, { supportKeys: "trackbacks", children: /* @__PURE__ */ (0, import_jsx_runtime542.jsx)(post_pingbacks_default, {}) })
      ] })
    ] });
  }
  function PostDiscussionToggle({ isOpen: isOpen2, onClick }) {
    const {
      commentStatus,
      pingStatus,
      commentsSupported,
      trackbacksSupported
    } = (0, import_data135.useSelect)((select9) => {
      const { getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
      const { getPostType } = select9(import_core_data85.store);
      const postType2 = getPostType(getEditedPostAttribute2("type"));
      return {
        commentStatus: getEditedPostAttribute2("comment_status") ?? "open",
        pingStatus: getEditedPostAttribute2("ping_status") ?? "open",
        commentsSupported: !!postType2.supports.comments,
        trackbacksSupported: !!postType2.supports.trackbacks
      };
    }, []);
    let label;
    if (commentStatus === "open") {
      if (pingStatus === "open") {
        label = (0, import_i18n253._x)("Open", 'Adjective: e.g. "Comments are open"');
      } else {
        label = trackbacksSupported ? (0, import_i18n253.__)("Comments only") : (0, import_i18n253._x)("Open", 'Adjective: e.g. "Comments are open"');
      }
    } else if (pingStatus === "open") {
      label = commentsSupported ? (0, import_i18n253.__)("Pings only") : (0, import_i18n253.__)("Pings enabled");
    } else {
      label = (0, import_i18n253.__)("Closed");
    }
    return /* @__PURE__ */ (0, import_jsx_runtime542.jsx)(
      import_components183.Button,
      {
        size: "compact",
        className: "editor-post-discussion__panel-toggle",
        variant: "tertiary",
        "aria-label": (0, import_i18n253.__)("Change discussion options"),
        "aria-expanded": isOpen2,
        onClick,
        children: label
      }
    );
  }
  function PostDiscussionPanel() {
    const { isEnabled } = (0, import_data135.useSelect)((select9) => {
      const { isEditorPanelEnabled: isEditorPanelEnabled2 } = select9(store);
      return {
        isEnabled: isEditorPanelEnabled2(PANEL_NAME2)
      };
    }, []);
    const [popoverAnchor, setPopoverAnchor] = (0, import_element337.useState)(null);
    const popoverProps = (0, import_element337.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor]
    );
    if (!isEnabled) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime542.jsx)(post_type_support_check_default, { supportKeys: ["comments", "trackbacks"], children: /* @__PURE__ */ (0, import_jsx_runtime542.jsx)(post_panel_row_default, { label: (0, import_i18n253.__)("Discussion"), ref: setPopoverAnchor, children: /* @__PURE__ */ (0, import_jsx_runtime542.jsx)(
      import_components183.Dropdown,
      {
        popoverProps,
        className: "editor-post-discussion__panel-dropdown",
        contentClassName: "editor-post-discussion__panel-dialog",
        focusOnMount: true,
        renderToggle: ({ isOpen: isOpen2, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime542.jsx)(
          PostDiscussionToggle,
          {
            isOpen: isOpen2,
            onClick: onToggle
          }
        ),
        renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime542.jsx)(ModalContents, { onClose })
      }
    ) }) });
  }

  // packages/editor/build-module/components/post-excerpt/index.mjs
  var import_i18n254 = __toESM(require_i18n(), 1);
  var import_components184 = __toESM(require_components(), 1);
  var import_data136 = __toESM(require_data(), 1);
  var import_element338 = __toESM(require_element(), 1);
  var import_html_entities23 = __toESM(require_html_entities(), 1);
  var import_jsx_runtime543 = __toESM(require_jsx_runtime(), 1);
  function PostExcerpt({
    hideLabelFromVision = false,
    updateOnBlur = false
  }) {
    const { excerpt, shouldUseDescriptionLabel, usedAttribute } = (0, import_data136.useSelect)(
      (select9) => {
        const { getCurrentPostType: getCurrentPostType2, getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
        const postType2 = getCurrentPostType2();
        const _usedAttribute = [
          "wp_template",
          "wp_template_part"
        ].includes(postType2) ? "description" : "excerpt";
        return {
          excerpt: getEditedPostAttribute2(_usedAttribute),
          // There are special cases where we want to label the excerpt as a description.
          shouldUseDescriptionLabel: [
            "wp_template",
            "wp_template_part",
            "wp_block"
          ].includes(postType2),
          usedAttribute: _usedAttribute
        };
      },
      []
    );
    const { editPost: editPost2 } = (0, import_data136.useDispatch)(store);
    const [localExcerpt, setLocalExcerpt] = (0, import_element338.useState)(
      (0, import_html_entities23.decodeEntities)(excerpt)
    );
    const updatePost2 = (value) => {
      editPost2({ [usedAttribute]: value });
    };
    const label = shouldUseDescriptionLabel ? (0, import_i18n254.__)("Write a description (optional)") : (0, import_i18n254.__)("Write an excerpt (optional)");
    return /* @__PURE__ */ (0, import_jsx_runtime543.jsx)("div", { className: "editor-post-excerpt", children: /* @__PURE__ */ (0, import_jsx_runtime543.jsx)(
      import_components184.TextareaControl,
      {
        label,
        hideLabelFromVision,
        className: "editor-post-excerpt__textarea",
        onChange: updateOnBlur ? setLocalExcerpt : updatePost2,
        onBlur: updateOnBlur ? () => updatePost2(localExcerpt) : void 0,
        value: updateOnBlur ? localExcerpt : excerpt,
        help: !shouldUseDescriptionLabel ? /* @__PURE__ */ (0, import_jsx_runtime543.jsx)(
          import_components184.ExternalLink,
          {
            href: (0, import_i18n254.__)(
              "https://wordpress.org/documentation/article/page-post-settings-sidebar/#excerpt"
            ),
            children: (0, import_i18n254.__)("Learn more about manual excerpts")
          }
        ) : (0, import_i18n254.__)("Write a description")
      }
    ) });
  }

  // packages/editor/build-module/components/post-excerpt/check.mjs
  var import_jsx_runtime544 = __toESM(require_jsx_runtime(), 1);
  function PostExcerptCheck({ children }) {
    return /* @__PURE__ */ (0, import_jsx_runtime544.jsx)(post_type_support_check_default, { supportKeys: "excerpt", children });
  }
  var check_default3 = PostExcerptCheck;

  // packages/editor/build-module/components/post-excerpt/panel.mjs
  var import_i18n255 = __toESM(require_i18n(), 1);
  var import_components186 = __toESM(require_components(), 1);
  var import_data137 = __toESM(require_data(), 1);
  var import_element339 = __toESM(require_element(), 1);
  var import_block_editor54 = __toESM(require_block_editor(), 1);
  var import_core_data86 = __toESM(require_core_data(), 1);
  var import_html_entities24 = __toESM(require_html_entities(), 1);

  // packages/editor/build-module/components/post-excerpt/plugin.mjs
  var import_components185 = __toESM(require_components(), 1);
  var import_jsx_runtime545 = __toESM(require_jsx_runtime(), 1);
  var { Fill: Fill9, Slot: Slot9 } = (0, import_components185.createSlotFill)("PluginPostExcerpt");
  var PluginPostExcerpt = ({ children, className }) => {
    return /* @__PURE__ */ (0, import_jsx_runtime545.jsx)(Fill9, { children: /* @__PURE__ */ (0, import_jsx_runtime545.jsx)(import_components185.PanelRow, { className, children }) });
  };
  PluginPostExcerpt.Slot = Slot9;
  var plugin_default = PluginPostExcerpt;

  // packages/editor/build-module/components/post-excerpt/panel.mjs
  var import_jsx_runtime546 = __toESM(require_jsx_runtime(), 1);
  var { getTemplateInfo: getTemplateInfo3 } = unlock(import_core_data86.privateApis);
  var PANEL_NAME3 = "post-excerpt";
  function ExcerptPanel() {
    const { isOpened, isEnabled, postType: postType2 } = (0, import_data137.useSelect)((select9) => {
      const {
        isEditorPanelOpened: isEditorPanelOpened2,
        isEditorPanelEnabled: isEditorPanelEnabled2,
        getCurrentPostType: getCurrentPostType2
      } = select9(store);
      return {
        isOpened: isEditorPanelOpened2(PANEL_NAME3),
        isEnabled: isEditorPanelEnabled2(PANEL_NAME3),
        postType: getCurrentPostType2()
      };
    }, []);
    const { toggleEditorPanelOpened: toggleEditorPanelOpened2 } = (0, import_data137.useDispatch)(store);
    const toggleExcerptPanel = () => toggleEditorPanelOpened2(PANEL_NAME3);
    if (!isEnabled) {
      return null;
    }
    const shouldUseDescriptionLabel = [
      "wp_template",
      "wp_template_part",
      "wp_block"
    ].includes(postType2);
    return /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(
      import_components186.PanelBody,
      {
        title: shouldUseDescriptionLabel ? (0, import_i18n255.__)("Description") : (0, import_i18n255.__)("Excerpt"),
        opened: isOpened,
        onToggle: toggleExcerptPanel,
        children: /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(plugin_default.Slot, { children: (fills) => /* @__PURE__ */ (0, import_jsx_runtime546.jsxs)(import_jsx_runtime546.Fragment, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(PostExcerpt, {}),
          fills
        ] }) })
      }
    );
  }
  function PostExcerptPanel() {
    return /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(check_default3, { children: /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(ExcerptPanel, {}) });
  }
  function PrivatePostExcerptPanel() {
    return /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(check_default3, { children: /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(PrivateExcerpt, {}) });
  }
  function PrivateExcerpt() {
    const { shouldRender, excerpt, shouldBeUsedAsDescription, allowEditing } = (0, import_data137.useSelect)((select9) => {
      const {
        getCurrentPostType: getCurrentPostType2,
        getCurrentPostId: getCurrentPostId2,
        getEditedPostAttribute: getEditedPostAttribute2,
        isEditorPanelEnabled: isEditorPanelEnabled2
      } = select9(store);
      const postType2 = getCurrentPostType2();
      const isTemplateOrTemplatePart2 = [
        "wp_template",
        "wp_template_part"
      ].includes(postType2);
      const isPattern = postType2 === "wp_block";
      const _shouldBeUsedAsDescription = isTemplateOrTemplatePart2 || isPattern;
      const _usedAttribute = isTemplateOrTemplatePart2 ? "description" : "excerpt";
      const _excerpt = getEditedPostAttribute2(_usedAttribute);
      const template2 = isTemplateOrTemplatePart2 && select9(import_core_data86.store).getEntityRecord(
        "postType",
        postType2,
        getCurrentPostId2()
      );
      const fallback = !_excerpt && isTemplateOrTemplatePart2 ? getTemplateInfo3({
        template: template2,
        templateTypes: select9(import_core_data86.store).getCurrentTheme()?.default_template_types
      })?.description : void 0;
      const _shouldRender = isEditorPanelEnabled2(PANEL_NAME3) || _shouldBeUsedAsDescription;
      return {
        excerpt: _excerpt ?? fallback,
        shouldRender: _shouldRender,
        shouldBeUsedAsDescription: _shouldBeUsedAsDescription,
        // If we should render, allow editing for all post types that are not used as description.
        // For the rest allow editing only for user generated entities.
        allowEditing: _shouldRender && (!_shouldBeUsedAsDescription || isPattern || template2 && template2.source === TEMPLATE_ORIGINS.custom && !template2.has_theme_file && template2.is_custom)
      };
    }, []);
    const [popoverAnchor, setPopoverAnchor] = (0, import_element339.useState)(null);
    const label = shouldBeUsedAsDescription ? (0, import_i18n255.__)("Description") : (0, import_i18n255.__)("Excerpt");
    const popoverProps = (0, import_element339.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        "aria-label": label,
        headerTitle: label,
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor, label]
    );
    if (!shouldRender) {
      return false;
    }
    const excerptText = !!excerpt && /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(import_components186.__experimentalText, { align: "left", numberOfLines: 4, truncate: allowEditing, children: (0, import_html_entities24.decodeEntities)(excerpt) });
    if (!allowEditing) {
      return excerptText;
    }
    const excerptPlaceholder = shouldBeUsedAsDescription ? (0, import_i18n255.__)("Add a description\u2026") : (0, import_i18n255.__)("Add an excerpt\u2026");
    const triggerEditLabel = shouldBeUsedAsDescription ? (0, import_i18n255.__)("Edit description") : (0, import_i18n255.__)("Edit excerpt");
    return /* @__PURE__ */ (0, import_jsx_runtime546.jsxs)(import_components186.__experimentalVStack, { children: [
      excerptText,
      /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(
        import_components186.Dropdown,
        {
          className: "editor-post-excerpt__dropdown",
          contentClassName: "editor-post-excerpt__dropdown__content",
          popoverProps,
          focusOnMount: true,
          ref: setPopoverAnchor,
          renderToggle: ({ onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(
            import_components186.Button,
            {
              __next40pxDefaultSize: true,
              onClick: onToggle,
              variant: "link",
              children: excerptText ? triggerEditLabel : excerptPlaceholder
            }
          ),
          renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime546.jsxs)(import_jsx_runtime546.Fragment, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(
              import_block_editor54.__experimentalInspectorPopoverHeader,
              {
                title: label,
                onClose
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(import_components186.__experimentalVStack, { spacing: 4, children: /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(plugin_default.Slot, { children: (fills) => /* @__PURE__ */ (0, import_jsx_runtime546.jsxs)(import_jsx_runtime546.Fragment, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime546.jsx)(
                PostExcerpt,
                {
                  hideLabelFromVision: true,
                  updateOnBlur: true
                }
              ),
              fills
            ] }) }) })
          ] })
        }
      )
    ] });
  }

  // packages/editor/build-module/components/post-featured-image/index.mjs
  var import_i18n256 = __toESM(require_i18n(), 1);
  var import_hooks52 = __toESM(require_hooks(), 1);
  var import_components187 = __toESM(require_components(), 1);
  var import_blob3 = __toESM(require_blob(), 1);
  var import_element340 = __toESM(require_element(), 1);
  var import_compose60 = __toESM(require_compose(), 1);
  var import_data139 = __toESM(require_data(), 1);
  var import_block_editor55 = __toESM(require_block_editor(), 1);
  var import_core_data88 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/theme-support-check/index.mjs
  var import_data138 = __toESM(require_data(), 1);
  var import_core_data87 = __toESM(require_core_data(), 1);
  function ThemeSupportCheck({ children, supportKeys }) {
    const { postType: postType2, themeSupports } = (0, import_data138.useSelect)((select9) => {
      return {
        postType: select9(store).getEditedPostAttribute("type"),
        themeSupports: select9(import_core_data87.store).getThemeSupports()
      };
    }, []);
    const isSupported = (Array.isArray(supportKeys) ? supportKeys : [supportKeys]).some((key) => {
      const supported = themeSupports?.[key] ?? false;
      if ("post-thumbnails" === key && Array.isArray(supported)) {
        return supported.includes(postType2);
      }
      return supported;
    });
    if (!isSupported) {
      return null;
    }
    return children;
  }

  // packages/editor/build-module/components/post-featured-image/check.mjs
  var import_jsx_runtime547 = __toESM(require_jsx_runtime(), 1);
  function PostFeaturedImageCheck({ children }) {
    return /* @__PURE__ */ (0, import_jsx_runtime547.jsx)(ThemeSupportCheck, { supportKeys: "post-thumbnails", children: /* @__PURE__ */ (0, import_jsx_runtime547.jsx)(post_type_support_check_default, { supportKeys: "thumbnail", children }) });
  }
  var check_default4 = PostFeaturedImageCheck;

  // packages/editor/build-module/components/post-featured-image/index.mjs
  var import_jsx_runtime548 = __toESM(require_jsx_runtime(), 1);
  var ALLOWED_MEDIA_TYPES = ["image"];
  var DEFAULT_FEATURE_IMAGE_LABEL = (0, import_i18n256.__)("Featured image");
  var DEFAULT_SET_FEATURE_IMAGE_LABEL = (0, import_i18n256.__)("Add a featured image");
  var instructions = /* @__PURE__ */ (0, import_jsx_runtime548.jsx)("p", { children: (0, import_i18n256.__)(
    "To edit the featured image, you need permission to upload media."
  ) });
  function getMediaDetails(media, postId2) {
    if (!media) {
      return {};
    }
    const defaultSize = (0, import_hooks52.applyFilters)(
      "editor.PostFeaturedImage.imageSize",
      "large",
      media.id,
      postId2
    );
    if (defaultSize in (media?.media_details?.sizes ?? {})) {
      return {
        mediaWidth: media.media_details.sizes[defaultSize].width,
        mediaHeight: media.media_details.sizes[defaultSize].height,
        mediaSourceUrl: media.media_details.sizes[defaultSize].source_url
      };
    }
    const fallbackSize = (0, import_hooks52.applyFilters)(
      "editor.PostFeaturedImage.imageSize",
      "thumbnail",
      media.id,
      postId2
    );
    if (fallbackSize in (media?.media_details?.sizes ?? {})) {
      return {
        mediaWidth: media.media_details.sizes[fallbackSize].width,
        mediaHeight: media.media_details.sizes[fallbackSize].height,
        mediaSourceUrl: media.media_details.sizes[fallbackSize].source_url
      };
    }
    return {
      mediaWidth: media.media_details.width,
      mediaHeight: media.media_details.height,
      mediaSourceUrl: media.source_url
    };
  }
  function PostFeaturedImage2({
    currentPostId,
    featuredImageId,
    onUpdateImage,
    onRemoveImage,
    media,
    postType: postType2,
    noticeUI,
    noticeOperations,
    isRequestingFeaturedImageMedia
  }) {
    const returnsFocusRef = (0, import_element340.useRef)(false);
    const [isLoading, setIsLoading] = (0, import_element340.useState)(false);
    const { getSettings: getSettings12 } = (0, import_data139.useSelect)(import_block_editor55.store);
    const { mediaSourceUrl } = getMediaDetails(media, currentPostId);
    function onDropFiles(filesList) {
      getSettings12().mediaUpload({
        allowedTypes: ALLOWED_MEDIA_TYPES,
        filesList,
        onFileChange([image]) {
          if ((0, import_blob3.isBlobURL)(image?.url)) {
            setIsLoading(true);
            return;
          }
          if (image) {
            onUpdateImage(image);
          }
          setIsLoading(false);
        },
        onError(message2) {
          noticeOperations.removeAllNotices();
          noticeOperations.createErrorNotice(message2);
        },
        multiple: false
      });
    }
    function getImageDescription(imageMedia) {
      if (imageMedia.alt_text) {
        return (0, import_i18n256.sprintf)(
          // Translators: %s: The selected image alt text.
          (0, import_i18n256.__)("Current image: %s"),
          imageMedia.alt_text
        );
      }
      return (0, import_i18n256.sprintf)(
        // Translators: %s: The selected image filename.
        (0, import_i18n256.__)(
          "The current image has no alternative text. The file name is: %s"
        ),
        imageMedia.media_details.sizes?.full?.file || imageMedia.slug
      );
    }
    function returnFocus(node) {
      if (returnsFocusRef.current && node) {
        node.focus();
        returnsFocusRef.current = false;
      }
    }
    const isMissingMedia = !isRequestingFeaturedImageMedia && !!featuredImageId && !media;
    return /* @__PURE__ */ (0, import_jsx_runtime548.jsxs)(check_default4, { children: [
      noticeUI,
      /* @__PURE__ */ (0, import_jsx_runtime548.jsxs)("div", { className: "editor-post-featured-image", children: [
        media && /* @__PURE__ */ (0, import_jsx_runtime548.jsx)(
          "div",
          {
            id: `editor-post-featured-image-${featuredImageId}-describedby`,
            className: "hidden",
            children: getImageDescription(media)
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime548.jsx)(import_block_editor55.MediaUploadCheck, { fallback: instructions, children: /* @__PURE__ */ (0, import_jsx_runtime548.jsx)(
          import_block_editor55.MediaUpload,
          {
            title: postType2?.labels?.featured_image || DEFAULT_FEATURE_IMAGE_LABEL,
            onSelect: onUpdateImage,
            featuredImageFlow: true,
            unstableFeaturedImageFlow: true,
            allowedTypes: ALLOWED_MEDIA_TYPES,
            modalClass: "editor-post-featured-image__media-modal",
            render: ({ open: open3 }) => /* @__PURE__ */ (0, import_jsx_runtime548.jsxs)("div", { className: "editor-post-featured-image__container", children: [
              isMissingMedia ? /* @__PURE__ */ (0, import_jsx_runtime548.jsx)(
                import_components187.Notice,
                {
                  status: "warning",
                  isDismissible: false,
                  children: (0, import_i18n256.__)(
                    "Could not retrieve the featured image data."
                  )
                }
              ) : /* @__PURE__ */ (0, import_jsx_runtime548.jsxs)(
                import_components187.Button,
                {
                  __next40pxDefaultSize: true,
                  ref: returnFocus,
                  className: !featuredImageId ? "editor-post-featured-image__toggle" : "editor-post-featured-image__preview",
                  onClick: open3,
                  "aria-label": !featuredImageId ? null : (0, import_i18n256.__)(
                    "Edit or replace the featured image"
                  ),
                  "aria-describedby": !featuredImageId ? null : `editor-post-featured-image-${featuredImageId}-describedby`,
                  "aria-haspopup": "dialog",
                  disabled: isLoading,
                  accessibleWhenDisabled: true,
                  children: [
                    !!featuredImageId && media && /* @__PURE__ */ (0, import_jsx_runtime548.jsx)(
                      "img",
                      {
                        className: "editor-post-featured-image__preview-image",
                        src: mediaSourceUrl,
                        alt: getImageDescription(
                          media
                        )
                      }
                    ),
                    (isLoading || isRequestingFeaturedImageMedia) && /* @__PURE__ */ (0, import_jsx_runtime548.jsx)(import_components187.Spinner, {}),
                    !featuredImageId && !isLoading && (postType2?.labels?.set_featured_image || DEFAULT_SET_FEATURE_IMAGE_LABEL)
                  ]
                }
              ),
              !!featuredImageId && /* @__PURE__ */ (0, import_jsx_runtime548.jsxs)(
                import_components187.__experimentalHStack,
                {
                  className: clsx_default(
                    "editor-post-featured-image__actions",
                    {
                      "editor-post-featured-image__actions-missing-image": isMissingMedia,
                      "editor-post-featured-image__actions-is-requesting-image": isRequestingFeaturedImageMedia
                    }
                  ),
                  children: [
                    /* @__PURE__ */ (0, import_jsx_runtime548.jsx)(
                      import_components187.Button,
                      {
                        __next40pxDefaultSize: true,
                        className: "editor-post-featured-image__action",
                        onClick: open3,
                        "aria-haspopup": "dialog",
                        variant: isMissingMedia ? "secondary" : void 0,
                        children: (0, import_i18n256.__)("Replace")
                      }
                    ),
                    /* @__PURE__ */ (0, import_jsx_runtime548.jsx)(
                      import_components187.Button,
                      {
                        __next40pxDefaultSize: true,
                        className: "editor-post-featured-image__action",
                        onClick: () => {
                          onRemoveImage();
                          returnsFocusRef.current = true;
                        },
                        variant: isMissingMedia ? "secondary" : void 0,
                        isDestructive: isMissingMedia,
                        children: (0, import_i18n256.__)("Remove")
                      }
                    )
                  ]
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime548.jsx)(import_components187.DropZone, { onFilesDrop: onDropFiles })
            ] }),
            value: featuredImageId
          }
        ) })
      ] })
    ] });
  }
  var applyWithSelect = (0, import_data139.withSelect)((select9) => {
    const { getEntityRecord, getPostType, hasFinishedResolution } = select9(import_core_data88.store);
    const { getCurrentPostId: getCurrentPostId2, getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
    const featuredImageId = getEditedPostAttribute2("featured_media");
    return {
      media: featuredImageId ? getEntityRecord("postType", "attachment", featuredImageId, {
        context: "view"
      }) : null,
      currentPostId: getCurrentPostId2(),
      postType: getPostType(getEditedPostAttribute2("type")),
      featuredImageId,
      isRequestingFeaturedImageMedia: !!featuredImageId && !hasFinishedResolution("getEntityRecord", [
        "postType",
        "attachment",
        featuredImageId,
        { context: "view" }
      ])
    };
  });
  var applyWithDispatch = (0, import_data139.withDispatch)(
    (dispatch9, { noticeOperations }, { select: select9 }) => {
      const { editPost: editPost2 } = dispatch9(store);
      return {
        onUpdateImage(image) {
          editPost2({ featured_media: image.id });
        },
        onDropImage(filesList) {
          select9(import_block_editor55.store).getSettings().mediaUpload({
            allowedTypes: ["image"],
            filesList,
            onFileChange([image]) {
              editPost2({ featured_media: image.id });
            },
            onError(message2) {
              noticeOperations.removeAllNotices();
              noticeOperations.createErrorNotice(message2);
            },
            multiple: false
          });
        },
        onRemoveImage() {
          editPost2({ featured_media: 0 });
        }
      };
    }
  );
  var post_featured_image_default = (0, import_compose60.compose)(
    import_components187.withNotices,
    applyWithSelect,
    applyWithDispatch,
    (0, import_components187.withFilters)("editor.PostFeaturedImage")
  )(PostFeaturedImage2);

  // packages/editor/build-module/components/post-featured-image/panel.mjs
  var import_i18n257 = __toESM(require_i18n(), 1);
  var import_components188 = __toESM(require_components(), 1);
  var import_data140 = __toESM(require_data(), 1);
  var import_core_data89 = __toESM(require_core_data(), 1);
  var import_jsx_runtime549 = __toESM(require_jsx_runtime(), 1);
  var PANEL_NAME4 = "featured-image";
  function PostFeaturedImagePanel({ withPanelBody = true }) {
    const { postType: postType2, isEnabled, isOpened } = (0, import_data140.useSelect)((select9) => {
      const {
        getEditedPostAttribute: getEditedPostAttribute2,
        isEditorPanelEnabled: isEditorPanelEnabled2,
        isEditorPanelOpened: isEditorPanelOpened2
      } = select9(store);
      const { getPostType } = select9(import_core_data89.store);
      return {
        postType: getPostType(getEditedPostAttribute2("type")),
        isEnabled: isEditorPanelEnabled2(PANEL_NAME4),
        isOpened: isEditorPanelOpened2(PANEL_NAME4)
      };
    }, []);
    const { toggleEditorPanelOpened: toggleEditorPanelOpened2 } = (0, import_data140.useDispatch)(store);
    if (!isEnabled) {
      return null;
    }
    if (!withPanelBody) {
      return /* @__PURE__ */ (0, import_jsx_runtime549.jsx)(check_default4, { children: /* @__PURE__ */ (0, import_jsx_runtime549.jsx)(post_featured_image_default, {}) });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime549.jsx)(check_default4, { children: /* @__PURE__ */ (0, import_jsx_runtime549.jsx)(
      import_components188.PanelBody,
      {
        title: postType2?.labels?.featured_image ?? (0, import_i18n257.__)("Featured image"),
        opened: isOpened,
        onToggle: () => toggleEditorPanelOpened2(PANEL_NAME4),
        children: /* @__PURE__ */ (0, import_jsx_runtime549.jsx)(post_featured_image_default, {})
      }
    ) });
  }

  // packages/editor/build-module/components/post-format/index.mjs
  var import_i18n258 = __toESM(require_i18n(), 1);
  var import_components189 = __toESM(require_components(), 1);
  var import_data142 = __toESM(require_data(), 1);
  var import_compose61 = __toESM(require_compose(), 1);
  var import_core_data90 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/post-format/check.mjs
  var import_data141 = __toESM(require_data(), 1);
  var import_jsx_runtime550 = __toESM(require_jsx_runtime(), 1);
  function PostFormatCheck({ children }) {
    const disablePostFormats = (0, import_data141.useSelect)(
      (select9) => select9(store).getEditorSettings().disablePostFormats,
      []
    );
    if (disablePostFormats) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime550.jsx)(post_type_support_check_default, { supportKeys: "post-formats", children });
  }

  // packages/editor/build-module/components/post-format/index.mjs
  var import_jsx_runtime551 = __toESM(require_jsx_runtime(), 1);
  var POST_FORMATS2 = [
    { id: "aside", caption: (0, import_i18n258.__)("Aside") },
    { id: "audio", caption: (0, import_i18n258.__)("Audio") },
    { id: "chat", caption: (0, import_i18n258.__)("Chat") },
    { id: "gallery", caption: (0, import_i18n258.__)("Gallery") },
    { id: "image", caption: (0, import_i18n258.__)("Image") },
    { id: "link", caption: (0, import_i18n258.__)("Link") },
    { id: "quote", caption: (0, import_i18n258.__)("Quote") },
    { id: "standard", caption: (0, import_i18n258.__)("Standard") },
    { id: "status", caption: (0, import_i18n258.__)("Status") },
    { id: "video", caption: (0, import_i18n258.__)("Video") }
  ].sort((a2, b2) => {
    const normalizedA = a2.caption.toUpperCase();
    const normalizedB = b2.caption.toUpperCase();
    if (normalizedA < normalizedB) {
      return -1;
    }
    if (normalizedA > normalizedB) {
      return 1;
    }
    return 0;
  });
  function PostFormat() {
    const instanceId = (0, import_compose61.useInstanceId)(PostFormat);
    const postFormatSelectorId = `post-format-selector-${instanceId}`;
    const { postFormat, suggestedFormat, supportedFormats } = (0, import_data142.useSelect)(
      (select9) => {
        const { getEditedPostAttribute: getEditedPostAttribute2, getSuggestedPostFormat: getSuggestedPostFormat2 } = select9(store);
        const _postFormat = getEditedPostAttribute2("format");
        const themeSupports = select9(import_core_data90.store).getThemeSupports();
        return {
          postFormat: _postFormat ?? "standard",
          suggestedFormat: getSuggestedPostFormat2(),
          supportedFormats: themeSupports.formats
        };
      },
      []
    );
    const formats = POST_FORMATS2.filter((format7) => {
      return supportedFormats?.includes(format7.id) || postFormat === format7.id;
    });
    const suggestion = formats.find(
      (format7) => format7.id === suggestedFormat
    );
    const { editPost: editPost2 } = (0, import_data142.useDispatch)(store);
    const onUpdatePostFormat = (format7) => editPost2({ format: format7 });
    return /* @__PURE__ */ (0, import_jsx_runtime551.jsx)(PostFormatCheck, { children: /* @__PURE__ */ (0, import_jsx_runtime551.jsxs)("div", { className: "editor-post-format", children: [
      /* @__PURE__ */ (0, import_jsx_runtime551.jsx)(
        import_components189.RadioControl,
        {
          className: "editor-post-format__options",
          label: (0, import_i18n258.__)("Post Format"),
          selected: postFormat,
          onChange: (format7) => onUpdatePostFormat(format7),
          id: postFormatSelectorId,
          options: formats.map((format7) => ({
            label: format7.caption,
            value: format7.id
          })),
          hideLabelFromVision: true
        }
      ),
      suggestion && suggestion.id !== postFormat && /* @__PURE__ */ (0, import_jsx_runtime551.jsx)("p", { className: "editor-post-format__suggestion", children: /* @__PURE__ */ (0, import_jsx_runtime551.jsx)(
        import_components189.Button,
        {
          __next40pxDefaultSize: true,
          variant: "link",
          onClick: () => onUpdatePostFormat(suggestion.id),
          children: (0, import_i18n258.sprintf)(
            /* translators: %s: post format */
            (0, import_i18n258.__)("Apply suggested format: %s"),
            suggestion.caption
          )
        }
      ) })
    ] }) });
  }

  // packages/editor/build-module/components/post-last-revision/index.mjs
  var import_i18n259 = __toESM(require_i18n(), 1);
  var import_components190 = __toESM(require_components(), 1);
  var import_data144 = __toESM(require_data(), 1);
  var import_url17 = __toESM(require_url(), 1);

  // packages/editor/build-module/components/post-last-revision/check.mjs
  var import_data143 = __toESM(require_data(), 1);
  var import_jsx_runtime552 = __toESM(require_jsx_runtime(), 1);
  function PostLastRevisionCheck({ children }) {
    const { lastRevisionId, revisionsCount } = (0, import_data143.useSelect)((select9) => {
      const { getCurrentPostLastRevisionId: getCurrentPostLastRevisionId2, getCurrentPostRevisionsCount: getCurrentPostRevisionsCount2 } = select9(store);
      return {
        lastRevisionId: getCurrentPostLastRevisionId2(),
        revisionsCount: getCurrentPostRevisionsCount2()
      };
    }, []);
    if (!lastRevisionId || revisionsCount < 2) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime552.jsx)(post_type_support_check_default, { supportKeys: "revisions", children });
  }
  var check_default5 = PostLastRevisionCheck;

  // packages/editor/build-module/components/post-last-revision/index.mjs
  var import_jsx_runtime553 = __toESM(require_jsx_runtime(), 1);
  function usePostLastRevisionInfo() {
    return (0, import_data144.useSelect)((select9) => {
      const {
        getCurrentPostLastRevisionId: getCurrentPostLastRevisionId2,
        getCurrentPostRevisionsCount: getCurrentPostRevisionsCount2,
        getEditorSettings: getEditorSettings2
      } = select9(store);
      return {
        lastRevisionId: getCurrentPostLastRevisionId2(),
        revisionsCount: getCurrentPostRevisionsCount2(),
        disableVisualRevisions: !!getEditorSettings2().disableVisualRevisions
      };
    }, []);
  }
  function PostLastRevision() {
    const { lastRevisionId, revisionsCount, disableVisualRevisions } = usePostLastRevisionInfo();
    const { setCurrentRevisionId: setCurrentRevisionId2 } = unlock((0, import_data144.useDispatch)(store));
    const buttonProps = disableVisualRevisions ? {
      href: (0, import_url17.addQueryArgs)("revision.php", {
        revision: lastRevisionId
      })
    } : { onClick: () => setCurrentRevisionId2(lastRevisionId) };
    return /* @__PURE__ */ (0, import_jsx_runtime553.jsx)(check_default5, { children: /* @__PURE__ */ (0, import_jsx_runtime553.jsx)(
      import_components190.Button,
      {
        __next40pxDefaultSize: true,
        ...buttonProps,
        className: "editor-post-last-revision__title",
        icon: backup_default,
        iconPosition: "right",
        text: (0, import_i18n259.sprintf)(
          /* translators: %s: number of revisions. */
          (0, import_i18n259.__)("Revisions (%s)"),
          revisionsCount
        )
      }
    ) });
  }
  function PrivatePostLastRevision() {
    const { lastRevisionId, revisionsCount, disableVisualRevisions } = usePostLastRevisionInfo();
    const { setCurrentRevisionId: setCurrentRevisionId2 } = unlock((0, import_data144.useDispatch)(store));
    const buttonProps = disableVisualRevisions ? {
      href: (0, import_url17.addQueryArgs)("revision.php", {
        revision: lastRevisionId
      })
    } : { onClick: () => setCurrentRevisionId2(lastRevisionId) };
    return /* @__PURE__ */ (0, import_jsx_runtime553.jsx)(check_default5, { children: /* @__PURE__ */ (0, import_jsx_runtime553.jsx)(post_panel_row_default, { label: (0, import_i18n259.__)("Revisions"), children: /* @__PURE__ */ (0, import_jsx_runtime553.jsx)(
      import_components190.Button,
      {
        ...buttonProps,
        className: "editor-private-post-last-revision__button",
        text: revisionsCount,
        "aria-label": (0, import_i18n259.sprintf)(
          /* translators: %d: number of revisions. */
          (0, import_i18n259._n)(
            "Open revisions screen: %d revision",
            "Open revisions screen: %d revisions",
            revisionsCount
          ),
          revisionsCount
        ),
        variant: "tertiary",
        size: "compact"
      }
    ) }) });
  }
  var post_last_revision_default = PostLastRevision;

  // packages/editor/build-module/components/post-last-revision/panel.mjs
  var import_components191 = __toESM(require_components(), 1);
  var import_jsx_runtime554 = __toESM(require_jsx_runtime(), 1);
  function PostLastRevisionPanel() {
    return /* @__PURE__ */ (0, import_jsx_runtime554.jsx)(check_default5, { children: /* @__PURE__ */ (0, import_jsx_runtime554.jsx)(import_components191.PanelBody, { className: "editor-post-last-revision__panel", children: /* @__PURE__ */ (0, import_jsx_runtime554.jsx)(post_last_revision_default, {}) }) });
  }
  var panel_default2 = PostLastRevisionPanel;

  // packages/editor/build-module/components/post-locked-modal/index.mjs
  var import_i18n261 = __toESM(require_i18n(), 1);
  var import_components192 = __toESM(require_components(), 1);
  var import_data145 = __toESM(require_data(), 1);
  var import_url18 = __toESM(require_url(), 1);
  var import_element341 = __toESM(require_element(), 1);
  var import_hooks53 = __toESM(require_hooks(), 1);
  var import_compose62 = __toESM(require_compose(), 1);
  var import_core_data91 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/utils/sync-error-messages.mjs
  var import_i18n260 = __toESM(require_i18n(), 1);
  var AUTHENTICATION_FAILED = "authentication-failed";
  var CONNECTION_EXPIRED = "connection-expired";
  var CONNECTION_LIMIT_EXCEEDED = "connection-limit-exceeded";
  var DOCUMENT_SIZE_LIMIT_EXCEEDED = "document-size-limit-exceeded";
  var PROTOCOL_MISMATCH = "protocol-mismatch";
  var UNKNOWN_ERROR = "unknown-error";
  var ERROR_MESSAGES = {
    [AUTHENTICATION_FAILED]: {
      title: (0, import_i18n260.__)("Unable to connect"),
      description: (0, import_i18n260.__)(
        "Real-time collaboration couldn't verify your permissions. Check that you have access to edit this post or contact your site administrator."
      )
    },
    [CONNECTION_EXPIRED]: {
      title: (0, import_i18n260.__)("Connection expired"),
      description: (0, import_i18n260.__)(
        "Your connection to real-time collaboration has timed out. Editing is paused to prevent conflicts with other editors."
      )
    },
    [CONNECTION_LIMIT_EXCEEDED]: {
      title: (0, import_i18n260.__)("Too many editors connected"),
      description: (0, import_i18n260.__)(
        "Real-time collaboration has reached its connection limit. Try again later or contact your site administrator."
      )
    },
    [PROTOCOL_MISMATCH]: {
      title: (0, import_i18n260.__)("Protocol update"),
      description: (0, import_i18n260.__)(
        "Real-time collaboration has been updated. Please refresh the page to continue editing."
      )
    },
    // DOCUMENT_SIZE_LIMIT_EXCEEDED is not included here because it results in
    // collaboration being disabled entirely.
    [UNKNOWN_ERROR]: {
      title: (0, import_i18n260.__)("Connection lost"),
      description: (0, import_i18n260.__)(
        "The connection to real-time collaboration was interrupted. Editing is paused to prevent conflicts with other editors."
      )
    }
  };
  function getSyncErrorMessages(error2) {
    if (error2?.code && ERROR_MESSAGES[error2?.code]) {
      return ERROR_MESSAGES[error2.code];
    }
    return ERROR_MESSAGES[UNKNOWN_ERROR];
  }

  // packages/editor/build-module/components/post-locked-modal/index.mjs
  var import_jsx_runtime555 = __toESM(require_jsx_runtime(), 1);
  function CollaborationContext() {
    const { isCollaborationSupported, syncConnectionStatus } = (0, import_data145.useSelect)(
      (select9) => {
        const {
          isCollaborationSupported: isSupported,
          getSyncConnectionStatus
        } = unlock(select9(import_core_data91.store));
        return {
          isCollaborationSupported: isSupported(),
          syncConnectionStatus: getSyncConnectionStatus()
        };
      },
      []
    );
    if (isCollaborationSupported) {
      return null;
    }
    if (DOCUMENT_SIZE_LIMIT_EXCEEDED === syncConnectionStatus?.error?.code) {
      return /* @__PURE__ */ (0, import_jsx_runtime555.jsx)("p", { children: (0, import_i18n261.__)(
        "Because this post is too large for real-time collaboration, only one person can edit at a time."
      ) });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime555.jsx)("p", { children: (0, import_i18n261.__)(
      "Because this post uses plugins that aren\u2019t compatible with real-time collaboration, only one person can edit at a time."
    ) });
  }
  function PostLockedModal() {
    const instanceId = (0, import_compose62.useInstanceId)(PostLockedModal);
    const hookName = "core/editor/post-locked-modal-" + instanceId;
    const { autosave: autosave2, updatePostLock: updatePostLock2 } = (0, import_data145.useDispatch)(store);
    const {
      isCollaborationEnabled,
      isLocked,
      isTakeover,
      user,
      postId: postId2,
      postLockUtils,
      activePostLock,
      postType: postType2,
      previewLink
    } = (0, import_data145.useSelect)((select9) => {
      const {
        isPostLocked: isPostLocked2,
        isPostLockTakeover: isPostLockTakeover2,
        getPostLockUser: getPostLockUser2,
        getCurrentPostId: getCurrentPostId2,
        getActivePostLock: getActivePostLock2,
        getEditedPostAttribute: getEditedPostAttribute2,
        getEditedPostPreviewLink: getEditedPostPreviewLink2,
        getEditorSettings: getEditorSettings2,
        isCollaborationEnabledForCurrentPost: isCollaborationEnabledForCurrentPost2
      } = unlock(select9(store));
      const { getPostType } = select9(import_core_data91.store);
      return {
        isCollaborationEnabled: isCollaborationEnabledForCurrentPost2(),
        isLocked: isPostLocked2(),
        isTakeover: isPostLockTakeover2(),
        user: getPostLockUser2(),
        postId: getCurrentPostId2(),
        postLockUtils: getEditorSettings2().postLockUtils,
        activePostLock: getActivePostLock2(),
        postType: getPostType(getEditedPostAttribute2("type")),
        previewLink: getEditedPostPreviewLink2()
      };
    }, []);
    (0, import_element341.useEffect)(() => {
      function sendPostLock(data) {
        if (isLocked) {
          return;
        }
        data["wp-refresh-post-lock"] = {
          lock: activePostLock,
          post_id: postId2
        };
      }
      function receivePostLock(data) {
        if (!data["wp-refresh-post-lock"]) {
          return;
        }
        const received = data["wp-refresh-post-lock"];
        if (received.lock_error) {
          autosave2();
          updatePostLock2({
            isLocked: true,
            isTakeover: true,
            user: {
              name: received.lock_error.name,
              avatar: received.lock_error.avatar_src_2x
            }
          });
        } else if (received.new_lock) {
          updatePostLock2({
            isLocked: false,
            activePostLock: received.new_lock
          });
        }
      }
      function releasePostLock() {
        if (isLocked || !activePostLock) {
          return;
        }
        const data = new window.FormData();
        data.append("action", "wp-remove-post-lock");
        data.append("_wpnonce", postLockUtils.unlockNonce);
        data.append("post_ID", postId2);
        data.append("active_post_lock", activePostLock);
        if (window.navigator.sendBeacon) {
          window.navigator.sendBeacon(postLockUtils.ajaxUrl, data);
        } else {
          const xhr = new window.XMLHttpRequest();
          xhr.open("POST", postLockUtils.ajaxUrl, false);
          xhr.send(data);
        }
      }
      (0, import_hooks53.addAction)("heartbeat.send", hookName, sendPostLock);
      (0, import_hooks53.addAction)("heartbeat.tick", hookName, receivePostLock);
      window.addEventListener("beforeunload", releasePostLock);
      return () => {
        (0, import_hooks53.removeAction)("heartbeat.send", hookName);
        (0, import_hooks53.removeAction)("heartbeat.tick", hookName);
        window.removeEventListener("beforeunload", releasePostLock);
      };
    }, [
      hookName,
      isLocked,
      activePostLock,
      postId2,
      postLockUtils,
      autosave2,
      updatePostLock2
    ]);
    if (!isLocked) {
      return null;
    }
    if (isCollaborationEnabled) {
      return null;
    }
    const userDisplayName = user.name;
    const userAvatar = user.avatar;
    const unlockUrl = (0, import_url18.addQueryArgs)("post.php", {
      "get-post-lock": "1",
      lockKey: true,
      post: postId2,
      action: "edit",
      _wpnonce: postLockUtils.nonce
    });
    const allPostsUrl = (0, import_url18.addQueryArgs)("edit.php", {
      post_type: postType2?.slug
    });
    const allPostsLabel = (0, import_i18n261.__)("Exit editor");
    return /* @__PURE__ */ (0, import_jsx_runtime555.jsx)(
      import_components192.Modal,
      {
        title: isTakeover ? (0, import_i18n261.__)("Someone else has taken over this post") : (0, import_i18n261.__)("This post is already being edited"),
        focusOnMount: true,
        shouldCloseOnClickOutside: false,
        shouldCloseOnEsc: false,
        isDismissible: false,
        className: "editor-post-locked-modal",
        size: "medium",
        children: /* @__PURE__ */ (0, import_jsx_runtime555.jsxs)(import_components192.__experimentalHStack, { alignment: "top", spacing: 6, children: [
          !!userAvatar && /* @__PURE__ */ (0, import_jsx_runtime555.jsx)(
            "img",
            {
              src: userAvatar,
              alt: (0, import_i18n261.__)("Avatar"),
              className: "editor-post-locked-modal__avatar",
              width: 64,
              height: 64
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime555.jsxs)("div", { children: [
            !!isTakeover && /* @__PURE__ */ (0, import_jsx_runtime555.jsxs)(import_jsx_runtime555.Fragment, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime555.jsx)("p", { children: (0, import_element341.createInterpolateElement)(
                userDisplayName ? (0, import_i18n261.sprintf)(
                  /* translators: %s: user's display name */
                  (0, import_i18n261.__)(
                    "<strong>%s</strong> now has editing control of this post (<PreviewLink />). Don\u2019t worry, your changes up to this moment have been saved."
                  ),
                  userDisplayName
                ) : (0, import_i18n261.__)(
                  "Another user now has editing control of this post (<PreviewLink />). Don\u2019t worry, your changes up to this moment have been saved."
                ),
                {
                  strong: /* @__PURE__ */ (0, import_jsx_runtime555.jsx)("strong", {}),
                  PreviewLink: /* @__PURE__ */ (0, import_jsx_runtime555.jsx)(import_components192.ExternalLink, { href: previewLink, children: (0, import_i18n261.__)("preview") })
                }
              ) }),
              /* @__PURE__ */ (0, import_jsx_runtime555.jsx)(CollaborationContext, {})
            ] }),
            !isTakeover && /* @__PURE__ */ (0, import_jsx_runtime555.jsxs)(import_jsx_runtime555.Fragment, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime555.jsx)("p", { children: (0, import_element341.createInterpolateElement)(
                userDisplayName ? (0, import_i18n261.sprintf)(
                  /* translators: %s: user's display name */
                  (0, import_i18n261.__)(
                    "<strong>%s</strong> is currently working on this post (<PreviewLink />), which means you cannot make changes, unless you take over."
                  ),
                  userDisplayName
                ) : (0, import_i18n261.__)(
                  "Another user is currently working on this post (<PreviewLink />), which means you cannot make changes, unless you take over."
                ),
                {
                  strong: /* @__PURE__ */ (0, import_jsx_runtime555.jsx)("strong", {}),
                  PreviewLink: /* @__PURE__ */ (0, import_jsx_runtime555.jsx)(import_components192.ExternalLink, { href: previewLink, children: (0, import_i18n261.__)("preview") })
                }
              ) }),
              /* @__PURE__ */ (0, import_jsx_runtime555.jsx)(CollaborationContext, {}),
              /* @__PURE__ */ (0, import_jsx_runtime555.jsx)("p", { children: (0, import_i18n261.__)(
                "If you take over, the other user will lose editing control to the post, but their changes will be saved."
              ) })
            ] }),
            /* @__PURE__ */ (0, import_jsx_runtime555.jsxs)(
              import_components192.__experimentalHStack,
              {
                className: "editor-post-locked-modal__buttons",
                justify: "flex-end",
                children: [
                  !isTakeover && /* @__PURE__ */ (0, import_jsx_runtime555.jsx)(
                    import_components192.Button,
                    {
                      __next40pxDefaultSize: true,
                      variant: "tertiary",
                      href: unlockUrl,
                      children: (0, import_i18n261.__)("Take over")
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime555.jsx)(
                    import_components192.Button,
                    {
                      __next40pxDefaultSize: true,
                      variant: "primary",
                      href: allPostsUrl,
                      children: allPostsLabel
                    }
                  )
                ]
              }
            )
          ] })
        ] })
      }
    );
  }
  var post_locked_modal_default = true ? (0, import_components192.withFilters)("editor.PostLockedModal")(PostLockedModal) : PostLockedModal;

  // packages/editor/build-module/components/post-pending-status/index.mjs
  var import_i18n262 = __toESM(require_i18n(), 1);
  var import_components193 = __toESM(require_components(), 1);
  var import_data147 = __toESM(require_data(), 1);

  // packages/editor/build-module/components/post-pending-status/check.mjs
  var import_data146 = __toESM(require_data(), 1);
  function PostPendingStatusCheck({ children }) {
    const { hasPublishAction, isPublished } = (0, import_data146.useSelect)((select9) => {
      const { isCurrentPostPublished: isCurrentPostPublished2, getCurrentPost: getCurrentPost2 } = select9(store);
      return {
        hasPublishAction: getCurrentPost2()._links?.["wp:action-publish"] ?? false,
        isPublished: isCurrentPostPublished2()
      };
    }, []);
    if (isPublished || !hasPublishAction) {
      return null;
    }
    return children;
  }
  var check_default6 = PostPendingStatusCheck;

  // packages/editor/build-module/components/post-pending-status/index.mjs
  var import_jsx_runtime556 = __toESM(require_jsx_runtime(), 1);
  function PostPendingStatus() {
    const status = (0, import_data147.useSelect)(
      (select9) => select9(store).getEditedPostAttribute("status"),
      []
    );
    const { editPost: editPost2 } = (0, import_data147.useDispatch)(store);
    const togglePendingStatus = () => {
      const updatedStatus = status === "pending" ? "draft" : "pending";
      editPost2({ status: updatedStatus });
    };
    return /* @__PURE__ */ (0, import_jsx_runtime556.jsx)(check_default6, { children: /* @__PURE__ */ (0, import_jsx_runtime556.jsx)(
      import_components193.CheckboxControl,
      {
        label: (0, import_i18n262.__)("Pending review"),
        checked: status === "pending",
        onChange: togglePendingStatus
      }
    ) });
  }
  var post_pending_status_default = PostPendingStatus;

  // packages/editor/build-module/components/post-preview-button/index.mjs
  var import_element342 = __toESM(require_element(), 1);
  var import_components194 = __toESM(require_components(), 1);
  var import_i18n263 = __toESM(require_i18n(), 1);
  var import_data148 = __toESM(require_data(), 1);
  var import_hooks54 = __toESM(require_hooks(), 1);
  var import_core_data92 = __toESM(require_core_data(), 1);
  var import_jsx_runtime557 = __toESM(require_jsx_runtime(), 1);
  function buildInterstitialMarkup() {
    let markup = (0, import_element342.renderToString)(
      /* @__PURE__ */ (0, import_jsx_runtime557.jsxs)("div", { className: "editor-post-preview-button__interstitial-message", children: [
        /* @__PURE__ */ (0, import_jsx_runtime557.jsxs)(import_components194.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 96 96", children: [
          /* @__PURE__ */ (0, import_jsx_runtime557.jsx)(
            import_components194.Path,
            {
              className: "outer",
              d: "M48 12c19.9 0 36 16.1 36 36S67.9 84 48 84 12 67.9 12 48s16.1-36 36-36",
              fill: "none"
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime557.jsx)(
            import_components194.Path,
            {
              className: "inner",
              d: "M69.5 46.4c0-3.9-1.4-6.7-2.6-8.8-1.6-2.6-3.1-4.9-3.1-7.5 0-2.9 2.2-5.7 5.4-5.7h.4C63.9 19.2 56.4 16 48 16c-11.2 0-21 5.7-26.7 14.4h2.1c3.3 0 8.5-.4 8.5-.4 1.7-.1 1.9 2.4.2 2.6 0 0-1.7.2-3.7.3L40 67.5l7-20.9L42 33c-1.7-.1-3.3-.3-3.3-.3-1.7-.1-1.5-2.7.2-2.6 0 0 5.3.4 8.4.4 3.3 0 8.5-.4 8.5-.4 1.7-.1 1.9 2.4.2 2.6 0 0-1.7.2-3.7.3l11.5 34.3 3.3-10.4c1.6-4.5 2.4-7.8 2.4-10.5zM16.1 48c0 12.6 7.3 23.5 18 28.7L18.8 35c-1.7 4-2.7 8.4-2.7 13zm32.5 2.8L39 78.6c2.9.8 5.9 1.3 9 1.3 3.7 0 7.3-.6 10.6-1.8-.1-.1-.2-.3-.2-.4l-9.8-26.9zM76.2 36c0 3.2-.6 6.9-2.4 11.4L64 75.6c9.5-5.5 15.9-15.8 15.9-27.6 0-5.5-1.4-10.8-3.9-15.3.1 1 .2 2.1.2 3.3z",
              fill: "none"
            }
          )
        ] }),
        /* @__PURE__ */ (0, import_jsx_runtime557.jsx)("p", { children: (0, import_i18n263.__)("Generating preview\u2026") })
      ] })
    );
    markup += `
		<style>
			body {
				margin: 0;
			}
			.editor-post-preview-button__interstitial-message {
				display: flex;
				flex-direction: column;
				align-items: center;
				justify-content: center;
				height: 100vh;
				width: 100vw;
			}
			@-webkit-keyframes paint {
				0% {
					stroke-dashoffset: 0;
				}
			}
			@-moz-keyframes paint {
				0% {
					stroke-dashoffset: 0;
				}
			}
			@-o-keyframes paint {
				0% {
					stroke-dashoffset: 0;
				}
			}
			@keyframes paint {
				0% {
					stroke-dashoffset: 0;
				}
			}
			.editor-post-preview-button__interstitial-message svg {
				width: 192px;
				height: 192px;
				stroke: #555d66;
				stroke-width: 0.75;
			}
			.editor-post-preview-button__interstitial-message svg .outer,
			.editor-post-preview-button__interstitial-message svg .inner {
				stroke-dasharray: 280;
				stroke-dashoffset: 280;
				-webkit-animation: paint 1.5s ease infinite alternate;
				-moz-animation: paint 1.5s ease infinite alternate;
				-o-animation: paint 1.5s ease infinite alternate;
				animation: paint 1.5s ease infinite alternate;
			}
			p {
				text-align: center;
				font-family: -apple-system, system-ui, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
			}
		</style>
	`;
    markup = (0, import_hooks54.applyFilters)("editor.PostPreview.interstitialMarkup", markup);
    return markup;
  }
  function writeInterstitialMessage(targetDocument, markup) {
    targetDocument.write(markup);
    targetDocument.title = (0, import_i18n263.__)("Generating preview\u2026");
    targetDocument.close();
  }
  async function getPreviewDocument(previewWindow) {
    try {
      return previewWindow.document;
    } catch {
    }
    previewWindow.location = "about:blank";
    const timeoutMs = 1e3;
    const intervalMs = 50;
    const deadline = Date.now() + timeoutMs;
    do {
      await new Promise((resolve) => setTimeout(resolve, intervalMs));
      try {
        return previewWindow.document;
      } catch {
      }
    } while (Date.now() < deadline);
    return null;
  }
  async function writeInterstitialIntoPreviewWindow(previewWindow) {
    const previewDocument = await getPreviewDocument(previewWindow);
    if (previewDocument) {
      writeInterstitialMessage(previewDocument, buildInterstitialMarkup());
    }
  }
  function usePostPreviewProps({ forceIsAutosaveable, onPreview }) {
    const { postId: postId2, currentPostLink, previewLink, isSaveable, isViewable } = (0, import_data148.useSelect)((select9) => {
      const editor = select9(store);
      const core = select9(import_core_data92.store);
      const postType2 = core.getPostType(
        editor.getCurrentPostType("type")
      );
      const canView = postType2?.viewable ?? false;
      if (!canView) {
        return { isViewable: canView };
      }
      return {
        postId: editor.getCurrentPostId(),
        currentPostLink: editor.getCurrentPostAttribute("link"),
        previewLink: editor.getEditedPostPreviewLink(),
        isSaveable: editor.isEditedPostSaveable(),
        isViewable: canView
      };
    }, []);
    const { __unstableSaveForPreview: __unstableSaveForPreview2 } = (0, import_data148.useDispatch)(store);
    if (!isViewable) {
      return null;
    }
    const target = `wp-preview-${postId2}`;
    const handlePreviewClick = async (event) => {
      event.preventDefault();
      const previewWindow = window.open("", target);
      previewWindow.focus();
      await writeInterstitialIntoPreviewWindow(previewWindow);
      const link = await __unstableSaveForPreview2({ forceIsAutosaveable });
      previewWindow.location = link;
      onPreview?.();
    };
    const href = previewLink || currentPostLink;
    return {
      href,
      target,
      disabled: !isSaveable,
      onClick: handlePreviewClick
    };
  }
  function PostPreviewMenuItem({ forceIsAutosaveable, onPreview }) {
    const previewProps = usePostPreviewProps({
      forceIsAutosaveable,
      onPreview
    });
    if (!previewProps) {
      return null;
    }
    const { disabled: disabled2, href, onClick, target } = previewProps;
    const label = /* @__PURE__ */ (0, import_jsx_runtime557.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n263._x)("Preview", "imperative verb") });
    if (disabled2) {
      return /* @__PURE__ */ (0, import_jsx_runtime557.jsx)(menu_exports.Item, { disabled: true, children: label });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime557.jsx)(
      menu_exports.LinkItem,
      {
        href,
        onClick,
        openInNewTab: true,
        closeOnClick: true,
        target,
        children: label
      }
    );
  }
  function PostPreviewButton({
    className,
    textContent,
    forceIsAutosaveable,
    role,
    onPreview
  }) {
    const previewProps = usePostPreviewProps({
      forceIsAutosaveable,
      onPreview
    });
    if (!previewProps) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime557.jsx)(
      import_components194.Button,
      {
        variant: !className ? "tertiary" : void 0,
        className: className || "editor-post-preview",
        role,
        size: "compact",
        accessibleWhenDisabled: true,
        ...previewProps,
        children: textContent || /* @__PURE__ */ (0, import_jsx_runtime557.jsxs)(import_jsx_runtime557.Fragment, { children: [
          (0, import_i18n263._x)("Preview", "imperative verb"),
          /* @__PURE__ */ (0, import_jsx_runtime557.jsx)(VisuallyHidden, {
            render: /* @__PURE__ */ (0, import_jsx_runtime557.jsx)("span", {}),
            /* translators: accessibility text */
            children: (0, import_i18n263.__)("(opens in a new tab)")
          })
        ] })
      }
    );
  }

  // packages/editor/build-module/components/post-publish-button/index.mjs
  var import_components195 = __toESM(require_components(), 1);
  var import_data150 = __toESM(require_data(), 1);

  // packages/editor/build-module/components/post-publish-button/label.mjs
  var import_i18n264 = __toESM(require_i18n(), 1);
  var import_data149 = __toESM(require_data(), 1);
  var import_compose63 = __toESM(require_compose(), 1);
  function PublishButtonLabel() {
    const isSmallerThanMediumViewport = (0, import_compose63.useViewportMatch)("medium", "<");
    const {
      isPublished,
      isBeingScheduled,
      isSaving,
      isPublishing,
      hasPublishAction,
      isAutosaving,
      hasNonPostEntityChanges: hasNonPostEntityChanges2,
      postStatusHasChanged,
      postStatus,
      isPostSavingLocked: isPostSavingLocked2
    } = (0, import_data149.useSelect)((select9) => {
      const {
        isCurrentPostPublished: isCurrentPostPublished2,
        isEditedPostBeingScheduled: isEditedPostBeingScheduled2,
        isSavingPost: isSavingPost2,
        isPublishingPost: isPublishingPost2,
        getCurrentPost: getCurrentPost2,
        isAutosavingPost: isAutosavingPost2,
        getPostEdits: getPostEdits2,
        getEditedPostAttribute: getEditedPostAttribute2
      } = select9(store);
      return {
        isPublished: isCurrentPostPublished2(),
        isBeingScheduled: isEditedPostBeingScheduled2(),
        isSaving: isSavingPost2(),
        isPublishing: isPublishingPost2(),
        hasPublishAction: getCurrentPost2()._links?.["wp:action-publish"] ?? false,
        isAutosaving: isAutosavingPost2(),
        hasNonPostEntityChanges: select9(store).hasNonPostEntityChanges(),
        isPostSavingLocked: select9(store).isPostSavingLocked(),
        postStatusHasChanged: !!getPostEdits2()?.status,
        postStatus: getEditedPostAttribute2("status")
      };
    }, []);
    if (isPublishing) {
      return (0, import_i18n264.__)("Publishing\u2026");
    } else if ((isPublished || isBeingScheduled) && isSaving && !isAutosaving) {
      return (0, import_i18n264.__)("Saving\u2026");
    }
    if (!hasPublishAction) {
      return isSmallerThanMediumViewport ? (0, import_i18n264.__)("Publish") : (0, import_i18n264.__)("Submit for Review");
    }
    if (hasNonPostEntityChanges2 && !isPostSavingLocked2 || isPublished || postStatusHasChanged && !["future", "publish"].includes(postStatus) || !postStatusHasChanged && postStatus === "future") {
      return (0, import_i18n264.__)("Save");
    }
    if (isBeingScheduled) {
      return (0, import_i18n264.__)("Schedule");
    }
    return (0, import_i18n264.__)("Publish");
  }

  // packages/editor/build-module/components/post-publish-button/index.mjs
  var import_jsx_runtime558 = __toESM(require_jsx_runtime(), 1);
  var noop9 = () => {
  };
  function PostPublishButton({
    forceIsDirty,
    isOpen: isOpen2,
    isToggle,
    onSubmit = noop9,
    onToggle,
    setEntitiesSavedStatesCallback
  }) {
    const {
      hasPublishAction,
      isBeingScheduled,
      isPostSavingLocked: isPostSavingLocked2,
      isPublishable,
      isPublished,
      isSaveable,
      isSaving,
      isAutoSaving,
      visibility,
      hasNonPostEntityChanges: hasNonPostEntityChanges2,
      isSavingNonPostEntityChanges: isSavingNonPostEntityChanges2,
      postStatus,
      postStatusHasChanged,
      postType: postType2,
      postId: postId2
    } = (0, import_data150.useSelect)((select9) => {
      const store4 = select9(store);
      return {
        isSaving: store4.isSavingPost(),
        isAutoSaving: store4.isAutosavingPost(),
        isBeingScheduled: store4.isEditedPostBeingScheduled(),
        visibility: store4.getEditedPostVisibility(),
        isSaveable: store4.isEditedPostSaveable(),
        isPostSavingLocked: store4.isPostSavingLocked(),
        isPublishable: store4.isEditedPostPublishable(),
        isPublished: store4.isCurrentPostPublished(),
        hasPublishAction: !!store4.getCurrentPost()?._links?.["wp:action-publish"],
        postType: store4.getCurrentPostType(),
        postId: store4.getCurrentPostId(),
        postStatus: store4.getEditedPostAttribute("status"),
        postStatusHasChanged: store4.getPostEdits()?.status,
        hasNonPostEntityChanges: store4.hasNonPostEntityChanges(),
        isSavingNonPostEntityChanges: store4.isSavingNonPostEntityChanges()
      };
    }, []);
    const { editPost: editPost2, savePost: savePost2 } = (0, import_data150.useDispatch)(store);
    const savePostStatus = (status) => {
      editPost2({ status }, { undoIgnore: true });
      savePost2();
    };
    const createOnClick = (callback) => (...args) => {
      if (hasNonPostEntityChanges2 && setEntitiesSavedStatesCallback) {
        const onClose = (savedEntities) => {
          if (savedEntities && savedEntities.some(
            (elt) => elt.kind === "postType" && elt.name === postType2 && elt.key === postId2
          )) {
            callback(...args);
          }
        };
        setEntitiesSavedStatesCallback(() => onClose);
        return noop9;
      }
      return callback(...args);
    };
    const isButtonDisabled = isPostSavingLocked2 || // Disable while a non-post entity (e.g. a newly created term) is mid-save.
    isSavingNonPostEntityChanges2 || (isSaving || !isSaveable || !isPublishable && !forceIsDirty) && !hasNonPostEntityChanges2;
    const isToggleDisabled = isPostSavingLocked2 || isSavingNonPostEntityChanges2 || (isPublished || isSaving || !isSaveable || !isPublishable && !forceIsDirty) && !hasNonPostEntityChanges2;
    let publishStatus = "publish";
    if (postStatusHasChanged) {
      publishStatus = postStatus;
    } else if (!hasPublishAction) {
      publishStatus = "pending";
    } else if (visibility === "private") {
      publishStatus = "private";
    } else if (isBeingScheduled) {
      publishStatus = "future";
    }
    const onClickButton = () => {
      if (isButtonDisabled) {
        return;
      }
      onSubmit();
      savePostStatus(publishStatus);
    };
    const onClickToggle = () => {
      if (isToggleDisabled) {
        return;
      }
      onToggle();
    };
    const buttonProps = {
      "aria-disabled": isButtonDisabled,
      className: "editor-post-publish-button",
      isBusy: !isAutoSaving && isSaving,
      variant: "primary",
      onClick: createOnClick(onClickButton),
      "aria-haspopup": hasNonPostEntityChanges2 ? "dialog" : void 0
    };
    const toggleProps = {
      "aria-disabled": isToggleDisabled,
      "aria-expanded": isOpen2,
      className: "editor-post-publish-panel__toggle",
      isBusy: isSaving && isPublished,
      variant: "primary",
      size: "compact",
      onClick: createOnClick(onClickToggle),
      "aria-haspopup": hasNonPostEntityChanges2 ? "dialog" : void 0
    };
    const componentProps = isToggle ? toggleProps : buttonProps;
    return /* @__PURE__ */ (0, import_jsx_runtime558.jsx)(
      import_components195.Button,
      {
        ...componentProps,
        className: `${componentProps.className} editor-post-publish-button__button`,
        size: "compact",
        children: /* @__PURE__ */ (0, import_jsx_runtime558.jsx)(PublishButtonLabel, {})
      }
    );
  }
  var post_publish_button_default = PostPublishButton;

  // packages/editor/build-module/components/post-publish-panel/index.mjs
  var import_i18n277 = __toESM(require_i18n(), 1);
  var import_element351 = __toESM(require_element(), 1);
  var import_components207 = __toESM(require_components(), 1);
  var import_data164 = __toESM(require_data(), 1);
  var import_compose68 = __toESM(require_compose(), 1);
  var import_core_data102 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/post-publish-panel/prepublish.mjs
  var import_i18n275 = __toESM(require_i18n(), 1);
  var import_components205 = __toESM(require_components(), 1);
  var import_data162 = __toESM(require_data(), 1);
  var import_url19 = __toESM(require_url(), 1);
  var import_core_data100 = __toESM(require_core_data(), 1);
  var import_html_entities26 = __toESM(require_html_entities(), 1);

  // packages/editor/build-module/components/post-visibility/index.mjs
  var import_i18n266 = __toESM(require_i18n(), 1);
  var import_element343 = __toESM(require_element(), 1);
  var import_components196 = __toESM(require_components(), 1);
  var import_compose64 = __toESM(require_compose(), 1);
  var import_data151 = __toESM(require_data(), 1);
  var import_block_editor56 = __toESM(require_block_editor(), 1);

  // packages/editor/build-module/components/post-visibility/utils.mjs
  var import_i18n265 = __toESM(require_i18n(), 1);
  var VISIBILITY_OPTIONS = [
    {
      label: (0, import_i18n265.__)("Public"),
      value: "public",
      description: (0, import_i18n265.__)("Visible to everyone.")
    },
    {
      label: (0, import_i18n265.__)("Private"),
      value: "private",
      description: (0, import_i18n265.__)("Only visible to site admins and editors.")
    },
    {
      label: (0, import_i18n265.__)("Password protected"),
      value: "password",
      description: (0, import_i18n265.__)("Only visible to those who know the password.")
    }
  ];

  // packages/editor/build-module/components/post-visibility/index.mjs
  var import_jsx_runtime559 = __toESM(require_jsx_runtime(), 1);
  function PostVisibility(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime559.jsx)(PrivatePostVisibility, { ...props, showPopoverHeader: true });
  }
  function PrivatePostVisibility({ onClose, showPopoverHeader }) {
    const instanceId = (0, import_compose64.useInstanceId)(PrivatePostVisibility);
    const { status, visibility, password } = (0, import_data151.useSelect)((select9) => ({
      status: select9(store).getEditedPostAttribute("status"),
      visibility: select9(store).getEditedPostVisibility(),
      password: select9(store).getEditedPostAttribute("password")
    }));
    const { editPost: editPost2 } = (0, import_data151.useDispatch)(store);
    const [hasPassword, setHasPassword] = (0, import_element343.useState)(!!password);
    function updateVisibility(value) {
      const nextValues = {
        public: {
          status: visibility === "private" ? "draft" : status,
          password: ""
        },
        private: { status: "private", password: "" },
        password: {
          status: visibility === "private" ? "draft" : status,
          password: password || ""
        }
      };
      editPost2(nextValues[value]);
      setHasPassword(value === "password");
    }
    const updatePassword = (value) => {
      editPost2({ password: value });
    };
    const help = (0, import_i18n266.__)("Control how this post is viewed.");
    return /* @__PURE__ */ (0, import_jsx_runtime559.jsxs)("div", { className: "editor-post-visibility", children: [
      showPopoverHeader && /* @__PURE__ */ (0, import_jsx_runtime559.jsx)(
        import_block_editor56.__experimentalInspectorPopoverHeader,
        {
          title: (0, import_i18n266.__)("Visibility"),
          help,
          onClose
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime559.jsxs)(import_components196.__experimentalVStack, { spacing: 4, children: [
        !showPopoverHeader && /* @__PURE__ */ (0, import_jsx_runtime559.jsx)(Text, { render: /* @__PURE__ */ (0, import_jsx_runtime559.jsx)("p", {}), children: help }),
        /* @__PURE__ */ (0, import_jsx_runtime559.jsx)(
          import_components196.RadioControl,
          {
            label: (0, import_i18n266.__)("Visibility"),
            hideLabelFromVision: true,
            options: VISIBILITY_OPTIONS,
            selected: hasPassword ? "password" : visibility,
            onChange: updateVisibility
          }
        ),
        hasPassword && /* @__PURE__ */ (0, import_jsx_runtime559.jsx)(
          import_components196.TextControl,
          {
            label: (0, import_i18n266.__)("Password"),
            onChange: updatePassword,
            value: password,
            placeholder: (0, import_i18n266.__)("Use a secure password"),
            type: "text",
            id: `editor-post-visibility__password-input-${instanceId}`,
            maxLength: 255
          }
        )
      ] })
    ] });
  }

  // packages/editor/build-module/components/post-visibility/label.mjs
  var import_data152 = __toESM(require_data(), 1);
  function PostVisibilityLabel() {
    return usePostVisibilityLabel();
  }
  function usePostVisibilityLabel() {
    const visibility = (0, import_data152.useSelect)(
      (select9) => select9(store).getEditedPostVisibility(),
      []
    );
    return VISIBILITY_OPTIONS.find((option) => option.value === visibility)?.label;
  }

  // packages/editor/build-module/components/post-schedule/index.mjs
  var import_a11y11 = __toESM(require_a11y(), 1);
  var import_date21 = __toESM(require_date(), 1);
  var import_i18n268 = __toESM(require_i18n(), 1);
  var import_components197 = __toESM(require_components(), 1);
  var import_data154 = __toESM(require_data(), 1);
  var import_block_editor57 = __toESM(require_block_editor(), 1);
  var import_element344 = __toESM(require_element(), 1);
  var import_core_data93 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/post-schedule/label.mjs
  var import_i18n267 = __toESM(require_i18n(), 1);
  var import_date20 = __toESM(require_date(), 1);
  var import_data153 = __toESM(require_data(), 1);
  function PostScheduleLabel(props) {
    return usePostScheduleLabel(props);
  }
  function usePostScheduleLabel({ full = false } = {}) {
    const { date, isFloating } = (0, import_data153.useSelect)(
      (select9) => ({
        date: select9(store).getEditedPostAttribute("date"),
        isFloating: select9(store).isEditedPostDateFloating()
      }),
      []
    );
    return full ? getFullPostScheduleLabel(date) : getPostScheduleLabel(date, { isFloating });
  }
  function getFullPostScheduleLabel(dateAttribute) {
    const date = (0, import_date20.getDate)(dateAttribute);
    const timezoneAbbreviation = getTimezoneAbbreviation();
    const formattedDate = (0, import_date20.dateI18n)(
      // translators: Use a non-breaking space between 'g:i' and 'a' if appropriate.
      (0, import_i18n267._x)("F j, Y g:i\xA0a", "post schedule full date format"),
      date
    );
    return (0, import_i18n267.isRTL)() ? `${timezoneAbbreviation} ${formattedDate}` : `${formattedDate} ${timezoneAbbreviation}`;
  }
  function getPostScheduleLabel(dateAttribute, { isFloating = false, now = /* @__PURE__ */ new Date() } = {}) {
    if (!dateAttribute || isFloating) {
      return (0, import_i18n267.__)("Immediately");
    }
    if (!isTimezoneSameAsSiteTimezone(now)) {
      return getFullPostScheduleLabel(dateAttribute);
    }
    const date = (0, import_date20.getDate)(dateAttribute);
    if (isSameDay2(date, now)) {
      return (0, import_i18n267.sprintf)(
        // translators: %s: Time of day the post is scheduled for.
        (0, import_i18n267.__)("Today at %s"),
        // translators: If using a space between 'g:i' and 'a', use a non-breaking space.
        (0, import_date20.dateI18n)((0, import_i18n267._x)("g:i\xA0a", "post schedule time format"), date)
      );
    }
    const tomorrow = new Date(now);
    tomorrow.setDate(tomorrow.getDate() + 1);
    if (isSameDay2(date, tomorrow)) {
      return (0, import_i18n267.sprintf)(
        // translators: %s: Time of day the post is scheduled for.
        (0, import_i18n267.__)("Tomorrow at %s"),
        // translators: If using a space between 'g:i' and 'a', use a non-breaking space.
        (0, import_date20.dateI18n)((0, import_i18n267._x)("g:i\xA0a", "post schedule time format"), date)
      );
    }
    if (date.getFullYear() === now.getFullYear()) {
      return (0, import_date20.dateI18n)(
        // translators: If using a space between 'g:i' and 'a', use a non-breaking space.
        (0, import_i18n267._x)("F j g:i\xA0a", "post schedule date format without year"),
        date
      );
    }
    return (0, import_date20.dateI18n)(
      // translators: Use a non-breaking space between 'g:i' and 'a' if appropriate.
      (0, import_i18n267._x)("F j, Y g:i\xA0a", "post schedule full date format"),
      date
    );
  }
  function getTimezoneAbbreviation() {
    const { timezone } = (0, import_date20.getSettings)();
    if (timezone.abbr && isNaN(Number(timezone.abbr))) {
      return timezone.abbr;
    }
    const symbol3 = timezone.offset < 0 ? "" : "+";
    return `UTC${symbol3}${timezone.offsetFormatted}`;
  }
  function isTimezoneSameAsSiteTimezone(date) {
    const { timezone } = (0, import_date20.getSettings)();
    const siteOffset = Number(timezone.offset);
    const dateOffset = -1 * (date.getTimezoneOffset() / 60);
    return siteOffset === dateOffset;
  }
  function isSameDay2(left, right) {
    return left.getDate() === right.getDate() && left.getMonth() === right.getMonth() && left.getFullYear() === right.getFullYear();
  }

  // packages/editor/build-module/components/post-schedule/index.mjs
  var import_jsx_runtime560 = __toESM(require_jsx_runtime(), 1);
  var { PrivatePublishDateTimePicker } = unlock(import_block_editor57.privateApis);
  function PostSchedule(props) {
    return /* @__PURE__ */ (0, import_jsx_runtime560.jsx)(
      PrivatePostSchedule,
      {
        ...props,
        showPopoverHeaderActions: true,
        isCompact: false
      }
    );
  }
  function PrivatePostSchedule({
    onClose,
    showPopoverHeader = true,
    showPopoverHeaderActions,
    isCompact
  }) {
    const { postDate, postType: postType2, isDateFloating } = (0, import_data154.useSelect)(
      (select9) => ({
        postDate: select9(store).getEditedPostAttribute("date"),
        postType: select9(store).getCurrentPostType(),
        isDateFloating: select9(store).isEditedPostDateFloating()
      }),
      []
    );
    const { editPost: editPost2 } = (0, import_data154.useDispatch)(store);
    const onUpdateDate = (date) => {
      editPost2({ date });
      (0, import_a11y11.speak)(
        date ? (0, import_i18n268.sprintf)(
          // translators: %s: The new publish date and time, e.g. "June 3, 2025 12:00 pm UTC+0".
          (0, import_i18n268.__)("Publish date set to %s."),
          getFullPostScheduleLabel(date)
        ) : (0, import_i18n268.__)("Publish date set to now."),
        "assertive"
      );
    };
    const [previewedMonth, setPreviewedMonth] = (0, import_element344.useState)(
      startOfMonth(new Date(postDate))
    );
    const eventsByPostType = (0, import_data154.useSelect)(
      (select9) => select9(import_core_data93.store).getEntityRecords("postType", postType2, {
        status: "publish,future",
        after: startOfMonth(previewedMonth).toISOString(),
        before: endOfMonth(previewedMonth).toISOString(),
        exclude: [select9(store).getCurrentPostId()],
        per_page: 100,
        _fields: "id,date"
      }),
      [previewedMonth, postType2]
    );
    const events = (0, import_element344.useMemo)(
      () => (eventsByPostType || []).map(({ date: eventDate }) => ({
        date: new Date(eventDate)
      })),
      [eventsByPostType]
    );
    const settings = (0, import_date21.getSettings)();
    const is12HourTime = /a(?!\\)/i.test(
      settings.formats.time.toLowerCase().replace(/\\\\/g, "").split("").reverse().join("")
      // Reverse the string and test for "a" not followed by a slash.
    );
    const picker = /* @__PURE__ */ (0, import_jsx_runtime560.jsx)(
      PrivatePublishDateTimePicker,
      {
        currentDate: postDate,
        onChange: onUpdateDate,
        is12Hour: is12HourTime,
        dateOrder: (
          /* translators: Order of day, month, and year. Available formats are 'dmy', 'mdy', and 'ymd'. */
          (0, import_i18n268._x)("dmy", "date order")
        ),
        events,
        onMonthPreviewed: (date) => setPreviewedMonth(parseISO(date)),
        onClose,
        isCompact,
        showPopoverHeader,
        showPopoverHeaderActions
      }
    );
    if (showPopoverHeader) {
      return picker;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime560.jsxs)(import_jsx_runtime560.Fragment, { children: [
      picker,
      /* @__PURE__ */ (0, import_jsx_runtime560.jsx)(
        import_components197.Button,
        {
          className: "editor-post-schedule__reset",
          variant: "secondary",
          __next40pxDefaultSize: true,
          disabled: isDateFloating,
          accessibleWhenDisabled: true,
          onClick: () => onUpdateDate(null),
          children: (0, import_i18n268.__)("Reset")
        }
      )
    ] });
  }

  // packages/editor/build-module/components/post-publish-panel/maybe-tags-panel.mjs
  var import_i18n270 = __toESM(require_i18n(), 1);
  var import_element346 = __toESM(require_element(), 1);
  var import_data157 = __toESM(require_data(), 1);
  var import_components200 = __toESM(require_components(), 1);
  var import_core_data96 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/post-taxonomies/flat-term-selector.mjs
  var import_i18n269 = __toESM(require_i18n(), 1);
  var import_element345 = __toESM(require_element(), 1);
  var import_components199 = __toESM(require_components(), 1);
  var import_data156 = __toESM(require_data(), 1);
  var import_core_data95 = __toESM(require_core_data(), 1);
  var import_compose65 = __toESM(require_compose(), 1);
  var import_a11y12 = __toESM(require_a11y(), 1);
  var import_notices26 = __toESM(require_notices(), 1);

  // packages/editor/build-module/components/post-taxonomies/most-used-terms.mjs
  var import_components198 = __toESM(require_components(), 1);
  var import_data155 = __toESM(require_data(), 1);
  var import_core_data94 = __toESM(require_core_data(), 1);
  var import_jsx_runtime561 = __toESM(require_jsx_runtime(), 1);
  var MIN_MOST_USED_TERMS = 3;
  var DEFAULT_QUERY2 = {
    per_page: 10,
    orderby: "count",
    order: "desc",
    hide_empty: true,
    _fields: "id,name,count",
    context: "view"
  };
  function MostUsedTerms({ onSelect, taxonomy }) {
    const { _terms, showTerms } = (0, import_data155.useSelect)(
      (select9) => {
        const mostUsedTerms = select9(import_core_data94.store).getEntityRecords(
          "taxonomy",
          taxonomy.slug,
          DEFAULT_QUERY2
        );
        return {
          _terms: mostUsedTerms,
          showTerms: mostUsedTerms?.length >= MIN_MOST_USED_TERMS
        };
      },
      [taxonomy.slug]
    );
    if (!showTerms) {
      return null;
    }
    const terms = unescapeTerms(_terms);
    return /* @__PURE__ */ (0, import_jsx_runtime561.jsxs)("div", { className: "editor-post-taxonomies__flat-term-most-used", children: [
      /* @__PURE__ */ (0, import_jsx_runtime561.jsx)(
        import_components198.BaseControl.VisualLabel,
        {
          as: "h3",
          className: "editor-post-taxonomies__flat-term-most-used-label",
          children: taxonomy.labels.most_used
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime561.jsx)(
        "ul",
        {
          role: "list",
          className: "editor-post-taxonomies__flat-term-most-used-list",
          children: terms.map((term) => /* @__PURE__ */ (0, import_jsx_runtime561.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime561.jsx)(
            import_components198.Button,
            {
              __next40pxDefaultSize: true,
              variant: "link",
              onClick: () => onSelect(term),
              children: term.name
            }
          ) }, term.id))
        }
      )
    ] });
  }

  // packages/editor/build-module/components/post-taxonomies/flat-term-selector.mjs
  var import_jsx_runtime562 = __toESM(require_jsx_runtime(), 1);
  var EMPTY_ARRAY15 = [];
  var MAX_TERMS_SUGGESTIONS = 100;
  var DEFAULT_QUERY3 = {
    per_page: MAX_TERMS_SUGGESTIONS,
    _fields: "id,name",
    context: "view"
  };
  var CREATE_TERM_VALUE = "__create__";
  var PENDING_TERM_PREFIX = "__pending__:";
  var pendingTermId = 0;
  var termToItem = (term) => ({
    value: String(term.id),
    label: unescapeString(term.name)
  });
  var itemToTermId = (item) => Number(item.value);
  var isSameTerm = (termA, termB) => termA.value === termB.value;
  var isSameTermName = (nameA, nameB) => nameA.toLowerCase() === nameB.toLowerCase();
  var isPendingTerm = (item) => item.value.startsWith(PENDING_TERM_PREFIX);
  function FlatTermSelector({ slug }) {
    const [values, setValues] = (0, import_element345.useState)(EMPTY_ARRAY15);
    const [inputValue, setInputValue] = (0, import_element345.useState)("");
    const [suggestions, setSuggestions] = (0, import_element345.useState)(EMPTY_ARRAY15);
    const [isSearching, setIsSearching] = (0, import_element345.useState)(false);
    const lastSearchRef = (0, import_element345.useRef)("");
    const pendingTermsRef = (0, import_element345.useRef)(/* @__PURE__ */ new Set());
    const registry = (0, import_data156.useRegistry)();
    const { editPost: editPost2 } = (0, import_data156.useDispatch)(store);
    const { saveEntityRecord } = (0, import_data156.useDispatch)(import_core_data95.store);
    const { createErrorNotice } = (0, import_data156.useDispatch)(import_notices26.store);
    const {
      terms,
      termIds,
      taxonomy,
      hasAssignAction,
      hasCreateAction,
      hasResolvedTerms
    } = (0, import_data156.useSelect)(
      (select9) => {
        const { getCurrentPost: getCurrentPost2, getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
        const { getEntityRecords, getEntityRecord, hasFinishedResolution } = select9(import_core_data95.store);
        const post2 = getCurrentPost2();
        const _taxonomy = getEntityRecord("root", "taxonomy", slug);
        const _termIds = _taxonomy ? getEditedPostAttribute2(_taxonomy.rest_base) : EMPTY_ARRAY15;
        const canCreate = !!_taxonomy && !!post2._links?.["wp:action-create-" + _taxonomy.rest_base];
        const canAssign = !!_taxonomy && !!post2._links?.["wp:action-assign-" + _taxonomy.rest_base];
        if (!canAssign) {
          return {
            hasAssignAction: canAssign
          };
        }
        const query = {
          ...DEFAULT_QUERY3,
          // Sort ids so reordering alone doesn't produce a new query key and re-fetch.
          include: _termIds?.length ? [..._termIds].sort((a2, b2) => a2 - b2).join(",") : void 0,
          per_page: -1
        };
        return {
          hasCreateAction: canCreate,
          hasAssignAction: canAssign,
          taxonomy: _taxonomy,
          termIds: _termIds,
          terms: _termIds?.length ? getEntityRecords("taxonomy", slug, query) : EMPTY_ARRAY15,
          hasResolvedTerms: hasFinishedResolution("getEntityRecords", [
            "taxonomy",
            slug,
            query
          ])
        };
      },
      [slug]
    );
    (0, import_element345.useEffect)(() => {
      if (hasResolvedTerms) {
        setValues((currentValues) => [
          ...(terms ?? []).map(termToItem),
          // Terms that are still being created aren't in the store yet.
          ...currentValues.filter(isPendingTerm)
        ]);
      }
    }, [terms, hasResolvedTerms]);
    const searchTerms = (0, import_element345.useCallback)(
      async (search) => {
        const records = await registry.resolveSelect(import_core_data95.store).getEntityRecords("taxonomy", slug, {
          ...DEFAULT_QUERY3,
          search
        });
        if (lastSearchRef.current === search) {
          setSuggestions((records ?? []).map(termToItem));
          setIsSearching(false);
        }
      },
      [registry, slug]
    );
    const debouncedSearch = (0, import_compose65.useDebounce)(searchTerms, 500);
    const newTermName = inputValue.trim();
    const hasExactMatch = [...suggestions, ...values].some(
      (term) => isSameTermName(term.label, newTermName)
    );
    const showCreatableItem = hasCreateAction && !!newTermName && !hasExactMatch && !isSearching;
    const creatableItem = (0, import_element345.useMemo)(
      () => showCreatableItem ? {
        value: CREATE_TERM_VALUE,
        label: (0, import_i18n269.sprintf)(
          /* translators: %s: term name. */
          (0, import_i18n269._x)("Create: %s", "term"),
          newTermName
        ),
        creatable: true
      } : void 0,
      [newTermName, showCreatableItem]
    );
    const items = (0, import_element345.useMemo)(
      () => creatableItem ? [...suggestions, creatableItem] : suggestions,
      [suggestions, creatableItem]
    );
    if (!hasAssignAction) {
      return null;
    }
    async function findOrCreateTerm(name2) {
      try {
        const newTerm = await saveEntityRecord(
          "taxonomy",
          slug,
          { name: name2 },
          { throwOnError: true }
        );
        return termToItem(newTerm);
      } catch (error2) {
        if (error2.code !== "term_exists") {
          throw error2;
        }
        return { value: String(error2.data.term_id), label: name2 };
      }
    }
    function onUpdateTerms(newTermIds) {
      editPost2({ [taxonomy.rest_base]: newTermIds });
    }
    function assignTerm(termId) {
      const assignedTermIds = registry.select(store).getEditedPostAttribute(taxonomy.rest_base);
      if (!assignedTermIds?.includes(termId)) {
        onUpdateTerms([...assignedTermIds ?? EMPTY_ARRAY15, termId]);
      }
    }
    async function createTerm(name2) {
      const pendingTerm = {
        // A term removed and created again shouldn't share a key with the
        // earlier request, which may still resolve.
        value: PENDING_TERM_PREFIX + ++pendingTermId,
        label: name2
      };
      pendingTermsRef.current.add(pendingTerm.value);
      setValues((currentValues) => [...currentValues, pendingTerm]);
      let savedTerm;
      try {
        savedTerm = await findOrCreateTerm(name2);
      } catch (error2) {
        createErrorNotice(error2.message, {
          type: "snackbar"
        });
        pendingTermsRef.current.delete(pendingTerm.value);
        setValues(
          (currentValues) => currentValues.filter(
            (item) => !isSameTerm(item, pendingTerm)
          )
        );
        return;
      }
      if (!pendingTermsRef.current.has(pendingTerm.value)) {
        return;
      }
      pendingTermsRef.current.delete(pendingTerm.value);
      setValues(
        (currentValues) => currentValues.filter(
          (item) => isSameTerm(item, pendingTerm) || !isSameTerm(item, savedTerm)
        ).map(
          (item) => isSameTerm(item, pendingTerm) ? savedTerm : item
        )
      );
      assignTerm(itemToTermId(savedTerm));
      (0, import_a11y12.speak)(termAddedLabel, "assertive");
    }
    async function onChange(newValues) {
      const isCreatingTerm = newValues.some(
        (item) => item.value === CREATE_TERM_VALUE
      );
      if (isCreatingTerm) {
        await createTerm(newTermName);
        return;
      }
      if (newValues.length !== values.length) {
        (0, import_a11y12.speak)(
          newValues.length > values.length ? termAddedLabel : termRemovedLabel,
          "assertive"
        );
      }
      pendingTermsRef.current = new Set(
        newValues.filter(isPendingTerm).map((item) => item.value)
      );
      setValues(newValues);
      onUpdateTerms(
        // Terms that are still being created have no id to assign yet.
        newValues.filter((item) => !isPendingTerm(item)).map(itemToTermId)
      );
    }
    function appendTerm(newTerm) {
      if (termIds.includes(newTerm.id)) {
        return;
      }
      (0, import_a11y12.speak)(termAddedLabel, "assertive");
      assignTerm(newTerm.id);
    }
    const newTermLabel = taxonomy?.labels?.add_new_item ?? (slug === "post_tag" ? (0, import_i18n269.__)("Add Tag") : (0, import_i18n269.__)("Add Term"));
    const singularName = taxonomy?.labels?.singular_name ?? (slug === "post_tag" ? (0, import_i18n269.__)("Tag") : (0, import_i18n269.__)("Term"));
    const termAddedLabel = (0, import_i18n269.sprintf)(
      /* translators: %s: taxonomy singular name, e.g. "Tag". */
      (0, import_i18n269._x)("%s added", "term"),
      singularName
    );
    const termRemovedLabel = (0, import_i18n269.sprintf)(
      /* translators: %s: taxonomy singular name, e.g. "Tag". */
      (0, import_i18n269._x)("%s removed", "term"),
      singularName
    );
    const notFoundLabel = taxonomy?.labels?.not_found ?? (0, import_i18n269.__)("No results found.");
    function onInputValueChange(nextInputValue) {
      setInputValue(nextInputValue);
      lastSearchRef.current = nextInputValue;
      setSuggestions(EMPTY_ARRAY15);
      if (!nextInputValue) {
        debouncedSearch.cancel();
        setIsSearching(false);
        return;
      }
      setIsSearching(true);
      debouncedSearch(nextInputValue);
    }
    return /* @__PURE__ */ (0, import_jsx_runtime562.jsxs)(Stack, { direction: "column", gap: "lg", children: [
      /* @__PURE__ */ (0, import_jsx_runtime562.jsx)(
        SearchableChipSelectControl3,
        {
          openOnInputClick: false,
          filter: null,
          label: newTermLabel,
          items,
          value: values,
          onValueChange: onChange,
          isItemEqualToValue: isSameTerm,
          inputValue,
          onInputValueChange,
          statusContent: isSearching ? /* @__PURE__ */ (0, import_jsx_runtime562.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", children: [
            /* @__PURE__ */ (0, import_jsx_runtime562.jsx)(Spinner, {}),
            (0, import_i18n269.__)("Searching\u2026")
          ] }) : suggestions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime562.jsx)(VisuallyHidden, { children: (0, import_i18n269.sprintf)(
            /* translators: %d: number of results. */
            (0, import_i18n269._n)(
              "%d result found.",
              "%d results found.",
              suggestions.length
            ),
            suggestions.length
          ) }),
          emptyContent: isSearching ? null : notFoundLabel,
          showClearButton: false,
          chipsContent: (selectedTerms) => selectedTerms.map((term) => /* @__PURE__ */ (0, import_jsx_runtime562.jsx)(
            SearchableChipSelectControl3.ChipWithRemove,
            {
              removeLabel: (0, import_i18n269.sprintf)(
                /* translators: %s: term name. */
                (0, import_i18n269._x)("Remove %s", "term"),
                term.label
              ),
              children: term.label
            },
            term.value
          ))
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime562.jsx)(MostUsedTerms, { taxonomy, onSelect: appendTerm })
    ] });
  }
  var flat_term_selector_default = (0, import_components199.withFilters)("editor.PostTaxonomyType")(FlatTermSelector);

  // packages/editor/build-module/components/post-publish-panel/maybe-tags-panel.mjs
  var import_jsx_runtime563 = __toESM(require_jsx_runtime(), 1);
  var TagsPanel = () => {
    const tagLabels = (0, import_data157.useSelect)((select9) => {
      const taxonomy = select9(import_core_data96.store).getTaxonomy("post_tag");
      return taxonomy?.labels;
    }, []);
    const addNewItem = tagLabels?.add_new_item ?? (0, import_i18n270.__)("Add tag");
    const tagLabel = tagLabels?.name ?? (0, import_i18n270.__)("Tags");
    const panelBodyTitle = [
      (0, import_i18n270.__)("Suggestion:"),
      /* @__PURE__ */ (0, import_jsx_runtime563.jsx)("span", { className: "editor-post-publish-panel__link", children: addNewItem }, "label")
    ];
    return /* @__PURE__ */ (0, import_jsx_runtime563.jsxs)(import_components200.PanelBody, { initialOpen: false, title: panelBodyTitle, children: [
      /* @__PURE__ */ (0, import_jsx_runtime563.jsx)("p", { children: (0, import_i18n270.sprintf)(
        // translators: %s is the taxonomy name (e.g., "Tags").
        (0, import_i18n270.__)(
          "%s help users and search engines navigate your site and find your content. Add a few keywords to describe your post."
        ),
        tagLabel
      ) }),
      /* @__PURE__ */ (0, import_jsx_runtime563.jsx)(flat_term_selector_default, { slug: "post_tag" })
    ] });
  };
  var MaybeTagsPanel = () => {
    const { postHasTags, siteHasTags, isPostTypeSupported } = (0, import_data157.useSelect)(
      (select9) => {
        const postType2 = select9(store).getCurrentPostType();
        const tagsTaxonomy = select9(import_core_data96.store).getEntityRecord(
          "root",
          "taxonomy",
          "post_tag"
        );
        const _isPostTypeSupported = tagsTaxonomy?.types?.includes(postType2);
        const areTagsFetched = tagsTaxonomy !== void 0;
        const tags = tagsTaxonomy && select9(store).getEditedPostAttribute(
          tagsTaxonomy.rest_base
        );
        const siteTags = _isPostTypeSupported ? !!select9(import_core_data96.store).getEntityRecords(
          "taxonomy",
          "post_tag",
          { per_page: 1 }
        )?.length : false;
        return {
          postHasTags: !!tags?.length,
          siteHasTags: siteTags,
          isPostTypeSupported: areTagsFetched && _isPostTypeSupported
        };
      },
      []
    );
    const [hadTagsWhenOpeningThePanel] = (0, import_element346.useState)(postHasTags);
    if (!isPostTypeSupported || !siteHasTags) {
      return null;
    }
    if (!hadTagsWhenOpeningThePanel) {
      return /* @__PURE__ */ (0, import_jsx_runtime563.jsx)(TagsPanel, {});
    }
    return null;
  };
  var maybe_tags_panel_default = MaybeTagsPanel;

  // packages/editor/build-module/components/post-publish-panel/maybe-post-format-panel.mjs
  var import_components201 = __toESM(require_components(), 1);
  var import_data158 = __toESM(require_data(), 1);
  var import_i18n271 = __toESM(require_i18n(), 1);
  var import_core_data97 = __toESM(require_core_data(), 1);
  var import_jsx_runtime564 = __toESM(require_jsx_runtime(), 1);
  var getSuggestion = (supportedFormats, suggestedPostFormat) => {
    const formats = POST_FORMATS2.filter(
      (format7) => supportedFormats?.includes(format7.id)
    );
    return formats.find((format7) => format7.id === suggestedPostFormat);
  };
  var PostFormatSuggestion = ({
    suggestedPostFormat,
    suggestionText,
    onUpdatePostFormat
  }) => /* @__PURE__ */ (0, import_jsx_runtime564.jsx)(
    import_components201.Button,
    {
      __next40pxDefaultSize: true,
      variant: "link",
      onClick: () => onUpdatePostFormat(suggestedPostFormat),
      children: suggestionText
    }
  );
  function PostFormatPanel() {
    const { currentPostFormat, suggestion } = (0, import_data158.useSelect)((select9) => {
      const { getEditedPostAttribute: getEditedPostAttribute2, getSuggestedPostFormat: getSuggestedPostFormat2 } = select9(store);
      const supportedFormats = select9(import_core_data97.store).getThemeSupports().formats ?? [];
      return {
        currentPostFormat: getEditedPostAttribute2("format"),
        suggestion: getSuggestion(
          supportedFormats,
          getSuggestedPostFormat2()
        )
      };
    }, []);
    const { editPost: editPost2 } = (0, import_data158.useDispatch)(store);
    const onUpdatePostFormat = (format7) => editPost2({ format: format7 });
    const panelBodyTitle = [
      (0, import_i18n271.__)("Suggestion:"),
      /* @__PURE__ */ (0, import_jsx_runtime564.jsx)("span", { className: "editor-post-publish-panel__link", children: (0, import_i18n271.__)("Use a post format") }, "label")
    ];
    if (!suggestion || suggestion.id === currentPostFormat) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime564.jsxs)(import_components201.PanelBody, { initialOpen: false, title: panelBodyTitle, children: [
      /* @__PURE__ */ (0, import_jsx_runtime564.jsx)("p", { children: (0, import_i18n271.__)(
        "Your theme uses post formats to highlight different kinds of content, like images or videos. Apply a post format to see this special styling."
      ) }),
      /* @__PURE__ */ (0, import_jsx_runtime564.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime564.jsx)(
        PostFormatSuggestion,
        {
          onUpdatePostFormat,
          suggestedPostFormat: suggestion.id,
          suggestionText: (0, import_i18n271.sprintf)(
            /* translators: %1s: post format */
            (0, import_i18n271.__)('Apply the "%1$s" format.'),
            suggestion.caption
          )
        }
      ) })
    ] });
  }

  // packages/editor/build-module/components/post-publish-panel/maybe-category-panel.mjs
  var import_i18n273 = __toESM(require_i18n(), 1);
  var import_data160 = __toESM(require_data(), 1);
  var import_components203 = __toESM(require_components(), 1);
  var import_core_data99 = __toESM(require_core_data(), 1);
  var import_element348 = __toESM(require_element(), 1);

  // packages/editor/build-module/components/post-taxonomies/hierarchical-term-selector.mjs
  var import_i18n272 = __toESM(require_i18n(), 1);
  var import_element347 = __toESM(require_element(), 1);
  var import_notices27 = __toESM(require_notices(), 1);
  var import_components202 = __toESM(require_components(), 1);
  var import_data159 = __toESM(require_data(), 1);
  var import_compose66 = __toESM(require_compose(), 1);
  var import_core_data98 = __toESM(require_core_data(), 1);
  var import_a11y13 = __toESM(require_a11y(), 1);
  var import_html_entities25 = __toESM(require_html_entities(), 1);

  // packages/editor/build-module/utils/normalize-text-string.mjs
  var import_remove_accents6 = __toESM(require_remove_accents(), 1);
  var ALL_UNICODE_DASH_CHARACTERS = new RegExp(
    /[\u007e\u00ad\u2053\u207b\u208b\u2212\p{Pd}]/gu
  );
  var normalizeTextString = (value) => {
    return (0, import_remove_accents6.default)(value).normalize("NFKC").toLocaleLowerCase().replace(ALL_UNICODE_DASH_CHARACTERS, "-");
  };

  // packages/editor/build-module/components/post-taxonomies/hierarchical-term-selector.mjs
  var import_jsx_runtime565 = __toESM(require_jsx_runtime(), 1);
  var { RECEIVE_INTERMEDIATE_RESULTS } = unlock(import_core_data98.privateApis);
  var DEFAULT_QUERY4 = {
    per_page: -1,
    orderby: "name",
    order: "asc",
    _fields: "id,name,parent",
    context: "view",
    [RECEIVE_INTERMEDIATE_RESULTS]: true
  };
  var MIN_TERMS_COUNT_FOR_FILTER = 8;
  var EMPTY_ARRAY16 = [];
  var SPEAK_DEBOUNCE_MS = 500;
  function getResultCount(termsTree) {
    let count = 0;
    for (const term of termsTree) {
      count++;
      if (void 0 !== term.children) {
        count += getResultCount(term.children);
      }
    }
    return count;
  }
  var TermCheckbox = (0, import_element347.memo)(function Checkbox2({
    id,
    name: name2,
    checked: checked2,
    onToggle
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime565.jsx)(
      import_components202.CheckboxControl,
      {
        checked: checked2,
        onChange: () => onToggle(id),
        label: (0, import_html_entities25.decodeEntities)(name2)
      }
    );
  });
  function TermRow({ term, selectedTerms, onToggle }) {
    return /* @__PURE__ */ (0, import_jsx_runtime565.jsxs)("div", { className: "editor-post-taxonomies__hierarchical-terms-choice", children: [
      /* @__PURE__ */ (0, import_jsx_runtime565.jsx)(
        TermCheckbox,
        {
          id: term.id,
          name: term.name,
          checked: selectedTerms.has(term.id),
          onToggle
        }
      ),
      !!term.children.length && /* @__PURE__ */ (0, import_jsx_runtime565.jsx)("div", { className: "editor-post-taxonomies__hierarchical-terms-subchoices", children: term.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime565.jsx)(
        TermRow,
        {
          term: child,
          selectedTerms,
          onToggle
        },
        child.id
      )) })
    ] });
  }
  function sortBySelected(termsTree, terms) {
    const selectedTerms = new Set(terms);
    const treeHasSelection = (termTree) => {
      if (selectedTerms.has(termTree.id)) {
        return true;
      }
      return !!termTree.children?.some(treeHasSelection);
    };
    const selected = [];
    const unselected = [];
    for (const termTree of termsTree) {
      if (treeHasSelection(termTree)) {
        selected.push(termTree);
      } else {
        unselected.push(termTree);
      }
    }
    return [...selected, ...unselected];
  }
  function findTerm(terms, parent, name2) {
    return terms.find((term) => {
      return (!term.parent && !parent || parseInt(term.parent) === parseInt(parent)) && term.name.toLowerCase() === name2.toLowerCase();
    });
  }
  function getFilterMatcher(filterValue) {
    const normalizedFilterValue = normalizeTextString(filterValue);
    const matchTermsForFilter = (originalTerm) => {
      if ("" === filterValue) {
        return originalTerm;
      }
      const term = { ...originalTerm };
      if (term.children.length > 0) {
        term.children = term.children.map(matchTermsForFilter).filter((child) => child);
      }
      if (-1 !== normalizeTextString(term.name).indexOf(
        normalizedFilterValue
      ) || term.children.length > 0) {
        return term;
      }
      return false;
    };
    return matchTermsForFilter;
  }
  function HierarchicalTermSelector({ slug }) {
    const [adding, setAdding] = (0, import_element347.useState)(false);
    const [formName, setFormName] = (0, import_element347.useState)("");
    const [formParent, setFormParent] = (0, import_element347.useState)("");
    const [showForm, setShowForm] = (0, import_element347.useState)(false);
    const [filterValue, setFilterValue] = (0, import_element347.useState)("");
    const deferredFilterValue = (0, import_element347.useDeferredValue)(filterValue);
    const debouncedSpeak = (0, import_compose66.useDebounce)(import_a11y13.speak, SPEAK_DEBOUNCE_MS);
    const {
      hasCreateAction,
      hasAssignAction,
      terms,
      loading,
      availableTerms,
      taxonomy
    } = (0, import_data159.useSelect)(
      (select9) => {
        const { getCurrentPost: getCurrentPost2, getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
        const { getEntityRecord, getEntityRecords, isResolving } = select9(import_core_data98.store);
        const _taxonomy = getEntityRecord("root", "taxonomy", slug);
        const post2 = getCurrentPost2();
        return {
          hasCreateAction: _taxonomy ? !!post2._links?.["wp:action-create-" + _taxonomy.rest_base] : false,
          hasAssignAction: _taxonomy ? !!post2._links?.["wp:action-assign-" + _taxonomy.rest_base] : false,
          terms: _taxonomy ? getEditedPostAttribute2(_taxonomy.rest_base) : EMPTY_ARRAY16,
          loading: isResolving("getEntityRecords", [
            "taxonomy",
            slug,
            DEFAULT_QUERY4
          ]),
          availableTerms: getEntityRecords("taxonomy", slug, DEFAULT_QUERY4) || EMPTY_ARRAY16,
          taxonomy: _taxonomy
        };
      },
      [slug]
    );
    const { editPost: editPost2 } = (0, import_data159.useDispatch)(store);
    const { saveEntityRecord } = (0, import_data159.useDispatch)(import_core_data98.store);
    const { createErrorNotice } = (0, import_data159.useDispatch)(import_notices27.store);
    const selectedTerms = (0, import_element347.useMemo)(() => new Set(terms), [terms]);
    const availableTermsTree = (0, import_element347.useMemo)(
      () => sortBySelected(buildTermsTree2(availableTerms), terms),
      // Remove `terms` from the dependency list to avoid reordering every time
      // checking or unchecking a term.
      [availableTerms]
    );
    const shownTerms = (0, import_element347.useMemo)(() => {
      if ("" === deferredFilterValue) {
        return availableTermsTree;
      }
      return availableTermsTree.map(getFilterMatcher(deferredFilterValue)).filter((term) => term);
    }, [availableTermsTree, deferredFilterValue]);
    const resultCount = getResultCount(shownTerms);
    (0, import_element347.useEffect)(() => {
      if ("" === deferredFilterValue) {
        return;
      }
      debouncedSpeak(
        (0, import_i18n272.sprintf)(
          /* translators: %d: number of results. */
          (0, import_i18n272._n)("%d result found.", "%d results found.", resultCount),
          resultCount
        ),
        "polite"
      );
      return () => debouncedSpeak.cancel();
    }, [resultCount, deferredFilterValue, debouncedSpeak]);
    const onUpdateTerms = (termIds) => {
      editPost2({ [taxonomy.rest_base]: termIds });
    };
    const onToggleTerm = (0, import_compose66.useEvent)((termId) => {
      const id = parseInt(termId, 10);
      onUpdateTerms(
        selectedTerms.has(id) ? terms.filter((term) => term !== id) : [...terms, id]
      );
    });
    if (!hasAssignAction) {
      return null;
    }
    const addTerm = (term) => {
      return saveEntityRecord("taxonomy", slug, term, {
        throwOnError: true
      });
    };
    const onChangeFormName = (value) => {
      setFormName(value);
    };
    const onChangeFormParent = (parentId) => {
      setFormParent(parentId);
    };
    const onToggleForm = () => {
      setShowForm(!showForm);
    };
    const onAddTerm = async (event) => {
      event.preventDefault();
      if (formName === "" || adding) {
        return;
      }
      const existingTerm = findTerm(availableTerms, formParent, formName);
      if (existingTerm) {
        if (!terms.some((term) => term === existingTerm.id)) {
          onUpdateTerms([...terms, existingTerm.id]);
        }
        setFormName("");
        setFormParent("");
        return;
      }
      setAdding(true);
      let newTerm;
      try {
        newTerm = await addTerm({
          name: formName,
          parent: formParent ? formParent : void 0
        });
      } catch (error2) {
        createErrorNotice(error2.message, {
          type: "snackbar"
        });
        return;
      }
      const defaultName = slug === "category" ? (0, import_i18n272.__)("Category") : (0, import_i18n272.__)("Term");
      const termAddedMessage = (0, import_i18n272.sprintf)(
        /* translators: %s: term name. */
        (0, import_i18n272._x)("%s added", "term"),
        taxonomy?.labels?.singular_name ?? defaultName
      );
      (0, import_a11y13.speak)(termAddedMessage, "assertive");
      setAdding(false);
      setFormName("");
      setFormParent("");
      onUpdateTerms([...terms, newTerm.id]);
    };
    const labelWithFallback = (labelProperty, fallbackIsCategory, fallbackIsNotCategory) => taxonomy?.labels?.[labelProperty] ?? (slug === "category" ? fallbackIsCategory : fallbackIsNotCategory);
    const newTermButtonLabel = labelWithFallback(
      "add_new_item",
      (0, import_i18n272.__)("Add Category"),
      (0, import_i18n272.__)("Add Term")
    );
    const newTermLabel = labelWithFallback(
      "new_item_name",
      (0, import_i18n272.__)("Add Category"),
      (0, import_i18n272.__)("Add Term")
    );
    const parentSelectLabel = labelWithFallback(
      "parent_item",
      (0, import_i18n272.__)("Parent Category"),
      (0, import_i18n272.__)("Parent Term")
    );
    const noParentOption = `\u2014 ${parentSelectLabel} \u2014`;
    const newTermSubmitLabel = newTermButtonLabel;
    const filterLabel = taxonomy?.labels?.search_items ?? (0, import_i18n272.__)("Search Terms");
    const groupLabel = taxonomy?.name ?? (0, import_i18n272.__)("Terms");
    const showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER;
    return /* @__PURE__ */ (0, import_jsx_runtime565.jsxs)(Stack, { direction: "column", gap: "lg", children: [
      showFilter && !loading && /* @__PURE__ */ (0, import_jsx_runtime565.jsx)(
        import_components202.SearchControl,
        {
          label: filterLabel,
          placeholder: filterLabel,
          value: filterValue,
          onChange: setFilterValue
        }
      ),
      loading && /* @__PURE__ */ (0, import_jsx_runtime565.jsx)(
        Stack,
        {
          justify: "center",
          style: {
            // Match SearchControl height to prevent layout shift.
            height: "40px"
          },
          children: /* @__PURE__ */ (0, import_jsx_runtime565.jsx)(Spinner, {})
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime565.jsx)(
        "div",
        {
          className: "editor-post-taxonomies__hierarchical-terms-list",
          tabIndex: "0",
          role: "group",
          "aria-label": groupLabel,
          children: shownTerms.map((term) => /* @__PURE__ */ (0, import_jsx_runtime565.jsx)(
            TermRow,
            {
              term,
              selectedTerms,
              onToggle: onToggleTerm
            },
            term.id
          ))
        }
      ),
      !loading && hasCreateAction && /* @__PURE__ */ (0, import_jsx_runtime565.jsx)(
        import_components202.Button,
        {
          __next40pxDefaultSize: true,
          onClick: onToggleForm,
          className: "editor-post-taxonomies__hierarchical-terms-add",
          "aria-expanded": showForm,
          variant: "link",
          children: newTermButtonLabel
        }
      ),
      showForm && /* @__PURE__ */ (0, import_jsx_runtime565.jsx)("form", { onSubmit: onAddTerm, children: /* @__PURE__ */ (0, import_jsx_runtime565.jsxs)(Stack, { direction: "column", gap: "lg", children: [
        /* @__PURE__ */ (0, import_jsx_runtime565.jsx)(
          InputControl,
          {
            className: "editor-post-taxonomies__hierarchical-terms-input",
            label: newTermLabel,
            value: formName,
            onValueChange: onChangeFormName,
            required: true
          }
        ),
        !!availableTerms.length && /* @__PURE__ */ (0, import_jsx_runtime565.jsx)(
          import_components202.TreeSelect,
          {
            label: parentSelectLabel,
            noOptionLabel: noParentOption,
            onChange: onChangeFormParent,
            selectedId: formParent,
            tree: availableTermsTree
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime565.jsx)(
          import_components202.Button,
          {
            __next40pxDefaultSize: true,
            variant: "secondary",
            type: "submit",
            className: "editor-post-taxonomies__hierarchical-terms-submit",
            children: newTermSubmitLabel
          }
        )
      ] }) })
    ] });
  }
  var hierarchical_term_selector_default = (0, import_components202.withFilters)("editor.PostTaxonomyType")(
    HierarchicalTermSelector
  );

  // packages/editor/build-module/components/post-publish-panel/maybe-category-panel.mjs
  var import_jsx_runtime566 = __toESM(require_jsx_runtime(), 1);
  function MaybeCategoryPanel() {
    const { hasNoCategory, hasSiteCategories } = (0, import_data160.useSelect)((select9) => {
      const postType2 = select9(store).getCurrentPostType();
      const { canUser, getEntityRecord } = select9(import_core_data99.store);
      const categoriesTaxonomy = getEntityRecord(
        "root",
        "taxonomy",
        "category"
      );
      const defaultCategoryId = canUser("read", {
        kind: "root",
        name: "site"
      }) ? getEntityRecord("root", "site")?.default_category : void 0;
      const defaultCategory = defaultCategoryId ? getEntityRecord("taxonomy", "category", defaultCategoryId) : void 0;
      const postTypeSupportsCategories = categoriesTaxonomy && categoriesTaxonomy.types.some((type) => type === postType2);
      const categories = categoriesTaxonomy && select9(store).getEditedPostAttribute(
        categoriesTaxonomy.rest_base
      );
      const siteCategories = postTypeSupportsCategories ? !!select9(import_core_data99.store).getEntityRecords("taxonomy", "category", {
        exclude: [defaultCategoryId],
        per_page: 1
      })?.length : false;
      const noCategory = !!categoriesTaxonomy && !!defaultCategory && postTypeSupportsCategories && (categories?.length === 0 || categories?.length === 1 && defaultCategory?.id === categories[0]);
      return {
        hasNoCategory: noCategory,
        hasSiteCategories: siteCategories
      };
    }, []);
    const [shouldShowPanel, setShouldShowPanel] = (0, import_element348.useState)(false);
    (0, import_element348.useEffect)(() => {
      if (hasNoCategory) {
        setShouldShowPanel(true);
      }
    }, [hasNoCategory]);
    if (!shouldShowPanel || !hasSiteCategories) {
      return null;
    }
    const panelBodyTitle = [
      (0, import_i18n273.__)("Suggestion:"),
      /* @__PURE__ */ (0, import_jsx_runtime566.jsx)("span", { className: "editor-post-publish-panel__link", children: (0, import_i18n273.__)("Assign a category") }, "label")
    ];
    return /* @__PURE__ */ (0, import_jsx_runtime566.jsxs)(import_components203.PanelBody, { initialOpen: false, title: panelBodyTitle, children: [
      /* @__PURE__ */ (0, import_jsx_runtime566.jsx)("p", { children: (0, import_i18n273.__)(
        "Categories provide a helpful way to group related posts together and to quickly tell readers what a post is about."
      ) }),
      /* @__PURE__ */ (0, import_jsx_runtime566.jsx)(hierarchical_term_selector_default, { slug: "category" })
    ] });
  }
  var maybe_category_panel_default = MaybeCategoryPanel;

  // packages/editor/build-module/components/post-publish-panel/maybe-upload-media.mjs
  var import_components204 = __toESM(require_components(), 1);
  var import_data161 = __toESM(require_data(), 1);
  var import_i18n274 = __toESM(require_i18n(), 1);
  var import_block_editor58 = __toESM(require_block_editor(), 1);
  var import_element349 = __toESM(require_element(), 1);
  var import_jsx_runtime567 = __toESM(require_jsx_runtime(), 1);
  var { mediaSideloadFromUrlKey: mediaSideloadFromUrlKey2 } = unlock(import_block_editor58.privateApis);
  function flattenBlocks2(blocks) {
    const result = [];
    blocks.forEach((block) => {
      result.push(block);
      result.push(...flattenBlocks2(block.innerBlocks));
    });
    return result;
  }
  function hasExternalMedia(block) {
    if (block.name === "core/image" || block.name === "core/cover") {
      return block.attributes.url && !block.attributes.id;
    }
    if (block.name === "core/media-text") {
      return block.attributes.mediaUrl && !block.attributes.mediaId;
    }
    return void 0;
  }
  function getMediaInfo(block) {
    if (block.name === "core/image" || block.name === "core/cover") {
      const { url, alt, id } = block.attributes;
      return { url, alt, id };
    }
    if (block.name === "core/media-text") {
      const { mediaUrl: url, mediaAlt: alt, mediaId: id } = block.attributes;
      return { url, alt, id };
    }
    return {};
  }
  function Image2({ clientId, alt, url }) {
    const { selectBlock: selectBlock2 } = (0, import_data161.useDispatch)(import_block_editor58.store);
    return /* @__PURE__ */ (0, import_jsx_runtime567.jsx)(
      import_components204.__unstableMotion.img,
      {
        tabIndex: 0,
        role: "button",
        "aria-label": (0, import_i18n274.__)("Select image block."),
        onClick: () => {
          selectBlock2(clientId);
        },
        onKeyDown: (event) => {
          if (event.key === "Enter" || event.key === " ") {
            selectBlock2(clientId);
            event.preventDefault();
          }
        },
        alt,
        src: url,
        animate: { opacity: 1 },
        exit: { opacity: 0, scale: 0 },
        style: {
          width: "32px",
          height: "32px",
          objectFit: "cover",
          borderRadius: "2px",
          cursor: "var(--wpds-cursor-control, pointer)"
        },
        whileHover: { scale: 1.08 }
      },
      clientId
    );
  }
  function MaybeUploadMediaPanel() {
    const [isUploading, setIsUploading] = (0, import_element349.useState)(false);
    const [isAnimating2, setIsAnimating] = (0, import_element349.useState)(false);
    const [hadUploadError, setHadUploadError] = (0, import_element349.useState)(false);
    const { editorBlocks, mediaSideloadFromUrl: mediaSideloadFromUrl2 } = (0, import_data161.useSelect)(
      (select9) => ({
        editorBlocks: select9(import_block_editor58.store).getBlocks(),
        mediaSideloadFromUrl: select9(import_block_editor58.store).getSettings()[mediaSideloadFromUrlKey2]
      }),
      []
    );
    const blocksWithExternalMedia = flattenBlocks2(editorBlocks).filter(
      (block) => hasExternalMedia(block)
    );
    const { updateBlockAttributes: updateBlockAttributes2 } = (0, import_data161.useDispatch)(import_block_editor58.store);
    if (!mediaSideloadFromUrl2 || !blocksWithExternalMedia.length) {
      return null;
    }
    const panelBodyTitle = [
      (0, import_i18n274.__)("Suggestion:"),
      /* @__PURE__ */ (0, import_jsx_runtime567.jsx)("span", { className: "editor-post-publish-panel__link", children: (0, import_i18n274.__)("External media") }, "label")
    ];
    function updateBlockWithUploadedMedia(block, media) {
      if (block.name === "core/image" || block.name === "core/cover") {
        updateBlockAttributes2(block.clientId, {
          id: media.id,
          url: media.url
        });
      }
      if (block.name === "core/media-text") {
        updateBlockAttributes2(block.clientId, {
          mediaId: media.id,
          mediaUrl: media.url
        });
      }
    }
    function uploadImages() {
      setIsUploading(true);
      setHadUploadError(false);
      const mediaUrls = new Set(
        blocksWithExternalMedia.map((block) => {
          const { url } = getMediaInfo(block);
          return url;
        })
      );
      const uploadPromises = Object.fromEntries(
        [...mediaUrls].map((url) => {
          const uploadPromise = new Promise((resolve, reject) => {
            mediaSideloadFromUrl2({
              url,
              onSuccess: (media) => resolve(media),
              onError: () => reject()
            });
          });
          return [url, uploadPromise];
        })
      );
      Promise.allSettled(
        blocksWithExternalMedia.map((block) => {
          const { url } = getMediaInfo(block);
          return uploadPromises[url].then(
            (media) => updateBlockWithUploadedMedia(block, media)
          ).then(() => setIsAnimating(true)).catch(() => setHadUploadError(true));
        })
      ).finally(() => {
        setIsUploading(false);
      });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime567.jsxs)(import_components204.PanelBody, { initialOpen: true, title: panelBodyTitle, children: [
      /* @__PURE__ */ (0, import_jsx_runtime567.jsx)("p", { children: (0, import_i18n274.__)(
        "Upload external images to the Media Library. Images from different domains may load slowly, display incorrectly, or be removed unexpectedly."
      ) }),
      /* @__PURE__ */ (0, import_jsx_runtime567.jsxs)(
        "div",
        {
          style: {
            display: "inline-flex",
            flexWrap: "wrap",
            gap: "8px"
          },
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime567.jsx)(
              import_components204.__unstableAnimatePresence,
              {
                onExitComplete: () => setIsAnimating(false),
                children: blocksWithExternalMedia.map((block) => {
                  const { url, alt } = getMediaInfo(block);
                  return /* @__PURE__ */ (0, import_jsx_runtime567.jsx)(
                    Image2,
                    {
                      clientId: block.clientId,
                      url,
                      alt
                    },
                    block.clientId
                  );
                })
              }
            ),
            isUploading || isAnimating2 ? /* @__PURE__ */ (0, import_jsx_runtime567.jsx)(import_components204.Spinner, {}) : /* @__PURE__ */ (0, import_jsx_runtime567.jsx)(
              import_components204.Button,
              {
                size: "compact",
                variant: "primary",
                onClick: uploadImages,
                children: (0, import_i18n274._x)("Upload", "verb")
              }
            )
          ]
        }
      ),
      hadUploadError && /* @__PURE__ */ (0, import_jsx_runtime567.jsx)("p", { children: (0, import_i18n274.__)("Upload failed, try again.") })
    ] });
  }

  // packages/editor/build-module/components/post-publish-panel/prepublish.mjs
  var import_jsx_runtime568 = __toESM(require_jsx_runtime(), 1);
  function PostPublishPanelPrepublish({ children }) {
    const {
      isBeingScheduled,
      isRequestingSiteIcon,
      hasPublishAction,
      siteIconUrl,
      siteTitle,
      siteHome
    } = (0, import_data162.useSelect)((select9) => {
      const { getCurrentPost: getCurrentPost2, isEditedPostBeingScheduled: isEditedPostBeingScheduled2 } = select9(store);
      const { getEntityRecord, isResolving } = select9(import_core_data100.store);
      const siteData = getEntityRecord("root", "__unstableBase", void 0) || {};
      return {
        hasPublishAction: getCurrentPost2()._links?.["wp:action-publish"] ?? false,
        isBeingScheduled: isEditedPostBeingScheduled2(),
        isRequestingSiteIcon: isResolving("getEntityRecord", [
          "root",
          "__unstableBase",
          void 0
        ]),
        siteIconUrl: siteData.site_icon_url,
        siteTitle: siteData.name,
        siteHome: siteData.home && (0, import_url19.filterURLForDisplay)(siteData.home)
      };
    }, []);
    let siteIcon = /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(
      import_components205.Icon,
      {
        className: "components-site-icon",
        size: "36px",
        icon: wordpress_default
      }
    );
    if (siteIconUrl) {
      siteIcon = /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(
        "img",
        {
          alt: (0, import_i18n275.__)("Site Icon"),
          className: "components-site-icon",
          src: siteIconUrl
        }
      );
    }
    if (isRequestingSiteIcon) {
      siteIcon = null;
    }
    let prePublishTitle, prePublishBodyText;
    if (!hasPublishAction) {
      prePublishTitle = (0, import_i18n275.__)("Are you ready to submit for review?");
      prePublishBodyText = (0, import_i18n275.__)(
        "Your work will be reviewed and then approved."
      );
    } else if (isBeingScheduled) {
      prePublishTitle = (0, import_i18n275.__)("Are you ready to schedule?");
      prePublishBodyText = (0, import_i18n275.__)(
        "Your work will be published at the specified date and time."
      );
    } else {
      prePublishTitle = (0, import_i18n275.__)("Are you ready to publish?");
      prePublishBodyText = (0, import_i18n275.__)(
        "Double-check your settings before publishing."
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime568.jsxs)("div", { className: "editor-post-publish-panel__prepublish", children: [
      /* @__PURE__ */ (0, import_jsx_runtime568.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime568.jsx)("strong", { children: prePublishTitle }) }),
      /* @__PURE__ */ (0, import_jsx_runtime568.jsx)("p", { children: prePublishBodyText }),
      /* @__PURE__ */ (0, import_jsx_runtime568.jsxs)("div", { className: "components-site-card", children: [
        siteIcon,
        /* @__PURE__ */ (0, import_jsx_runtime568.jsxs)("div", { className: "components-site-info", children: [
          /* @__PURE__ */ (0, import_jsx_runtime568.jsx)("span", { className: "components-site-name", children: (0, import_html_entities26.decodeEntities)(siteTitle) || (0, import_i18n275.__)("(Untitled)") }),
          /* @__PURE__ */ (0, import_jsx_runtime568.jsx)("span", { className: "components-site-home", children: siteHome })
        ] })
      ] }),
      /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(MaybeUploadMediaPanel, {}),
      hasPublishAction && /* @__PURE__ */ (0, import_jsx_runtime568.jsxs)(import_jsx_runtime568.Fragment, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(
          import_components205.PanelBody,
          {
            initialOpen: false,
            title: [
              (0, import_i18n275.__)("Visibility:"),
              /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(
                "span",
                {
                  className: "editor-post-publish-panel__link",
                  children: /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(PostVisibilityLabel, {})
                },
                "label"
              )
            ],
            children: /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(PrivatePostVisibility, { showPopoverHeader: false })
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(
          import_components205.PanelBody,
          {
            initialOpen: false,
            title: [
              (0, import_i18n275.__)("Publish:"),
              /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(
                "span",
                {
                  className: "editor-post-publish-panel__link",
                  children: /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(PostScheduleLabel, {})
                },
                "label"
              )
            ],
            children: /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(
              PrivatePostSchedule,
              {
                showPopoverHeader: false,
                isCompact: false
              }
            )
          }
        )
      ] }),
      /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(PostFormatPanel, {}),
      /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(maybe_tags_panel_default, {}),
      /* @__PURE__ */ (0, import_jsx_runtime568.jsx)(maybe_category_panel_default, {}),
      children
    ] });
  }
  var prepublish_default = PostPublishPanelPrepublish;

  // packages/editor/build-module/components/post-publish-panel/postpublish.mjs
  var import_components206 = __toESM(require_components(), 1);
  var import_i18n276 = __toESM(require_i18n(), 1);
  var import_element350 = __toESM(require_element(), 1);
  var import_data163 = __toESM(require_data(), 1);
  var import_url20 = __toESM(require_url(), 1);
  var import_html_entities27 = __toESM(require_html_entities(), 1);
  var import_compose67 = __toESM(require_compose(), 1);
  var import_core_data101 = __toESM(require_core_data(), 1);
  var import_jsx_runtime569 = __toESM(require_jsx_runtime(), 1);
  var POSTNAME = "%postname%";
  var PAGENAME = "%pagename%";
  var getFuturePostUrl = (post2) => {
    const { slug } = post2;
    if (post2.permalink_template.includes(POSTNAME)) {
      return post2.permalink_template.replace(POSTNAME, slug);
    }
    if (post2.permalink_template.includes(PAGENAME)) {
      return post2.permalink_template.replace(PAGENAME, slug);
    }
    return post2.permalink_template;
  };
  function CopyButton2({ text }) {
    const [showCopyConfirmation, setShowCopyConfirmation] = (0, import_element350.useState)(false);
    const timeoutIdRef = (0, import_element350.useRef)();
    const ref = (0, import_compose67.useCopyToClipboard)(text, () => {
      setShowCopyConfirmation(true);
      if (timeoutIdRef.current) {
        clearTimeout(timeoutIdRef.current);
      }
      timeoutIdRef.current = setTimeout(() => {
        setShowCopyConfirmation(false);
      }, 4e3);
    });
    (0, import_element350.useEffect)(() => {
      return () => {
        if (timeoutIdRef.current) {
          clearTimeout(timeoutIdRef.current);
        }
      };
    }, []);
    return /* @__PURE__ */ (0, import_jsx_runtime569.jsx)(import_components206.Button, { __next40pxDefaultSize: true, variant: "secondary", ref, children: showCopyConfirmation ? (0, import_i18n276.__)("Copied!") : (0, import_i18n276.__)("Copy") });
  }
  function PostPublishPanelPostpublish({
    focusOnMount,
    children
  }) {
    const { post: post2, postType: postType2, isScheduled } = (0, import_data163.useSelect)((select9) => {
      const {
        getEditedPostAttribute: getEditedPostAttribute2,
        getCurrentPost: getCurrentPost2,
        isCurrentPostScheduled: isCurrentPostScheduled2
      } = select9(store);
      const { getPostType } = select9(import_core_data101.store);
      return {
        post: getCurrentPost2(),
        postType: getPostType(getEditedPostAttribute2("type")),
        isScheduled: isCurrentPostScheduled2()
      };
    }, []);
    const postLabel = postType2?.labels?.singular_name;
    const viewPostLabel = postType2?.labels?.view_item;
    const addNewPostLabel = postType2?.labels?.add_new_item;
    const link = post2.status === "future" ? getFuturePostUrl(post2) : post2.link;
    const addLink = (0, import_url20.addQueryArgs)("post-new.php", {
      post_type: post2.type
    });
    const postLinkRef = (0, import_element350.useCallback)(
      (node) => {
        if (focusOnMount && node) {
          node.focus();
        }
      },
      [focusOnMount]
    );
    const postPublishNonLinkHeader = isScheduled ? /* @__PURE__ */ (0, import_jsx_runtime569.jsxs)(import_jsx_runtime569.Fragment, { children: [
      (0, import_i18n276.__)("is now scheduled. It will go live on"),
      " ",
      /* @__PURE__ */ (0, import_jsx_runtime569.jsx)(PostScheduleLabel, {}),
      "."
    ] }) : (0, import_i18n276.__)("is now live.");
    return /* @__PURE__ */ (0, import_jsx_runtime569.jsxs)("div", { className: "post-publish-panel__postpublish", children: [
      /* @__PURE__ */ (0, import_jsx_runtime569.jsxs)(import_components206.PanelBody, { className: "post-publish-panel__postpublish-header", children: [
        /* @__PURE__ */ (0, import_jsx_runtime569.jsx)(import_components206.ExternalLink, { ref: postLinkRef, href: link, children: (0, import_html_entities27.decodeEntities)(post2.title) || (0, import_i18n276.__)("(no title)") }),
        " ",
        postPublishNonLinkHeader
      ] }),
      /* @__PURE__ */ (0, import_jsx_runtime569.jsxs)(import_components206.PanelBody, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime569.jsx)("p", { className: "post-publish-panel__postpublish-subheader", children: /* @__PURE__ */ (0, import_jsx_runtime569.jsx)("strong", { children: (0, import_i18n276.__)("What\u2019s next?") }) }),
        /* @__PURE__ */ (0, import_jsx_runtime569.jsxs)("div", { className: "post-publish-panel__postpublish-post-address-container", children: [
          /* @__PURE__ */ (0, import_jsx_runtime569.jsx)(
            import_components206.TextControl,
            {
              className: "post-publish-panel__postpublish-post-address",
              readOnly: true,
              label: (0, import_i18n276.sprintf)(
                /* translators: %s: post type singular name */
                (0, import_i18n276.__)("%s address"),
                postLabel
              ),
              value: (0, import_url20.safeDecodeURIComponent)(link),
              onFocus: (event) => event.target.select()
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime569.jsx)("div", { className: "post-publish-panel__postpublish-post-address__copy-button-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime569.jsx)(CopyButton2, { text: link }) })
        ] }),
        /* @__PURE__ */ (0, import_jsx_runtime569.jsxs)("div", { className: "post-publish-panel__postpublish-buttons", children: [
          !isScheduled && /* @__PURE__ */ (0, import_jsx_runtime569.jsxs)(
            import_components206.Button,
            {
              variant: "primary",
              href: link,
              __next40pxDefaultSize: true,
              icon: external_default,
              iconPosition: "right",
              target: "_blank",
              children: [
                viewPostLabel,
                /* @__PURE__ */ (0, import_jsx_runtime569.jsx)(VisuallyHidden, {
                  render: /* @__PURE__ */ (0, import_jsx_runtime569.jsx)("span", {}),
                  /* translators: accessibility text */
                  children: (0, import_i18n276.__)("(opens in a new tab)")
                })
              ]
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime569.jsx)(
            import_components206.Button,
            {
              variant: isScheduled ? "primary" : "secondary",
              __next40pxDefaultSize: true,
              href: addLink,
              children: addNewPostLabel
            }
          )
        ] })
      ] }),
      children
    ] });
  }

  // packages/editor/build-module/components/post-publish-panel/index.mjs
  var import_jsx_runtime570 = __toESM(require_jsx_runtime(), 1);
  function PostPublishPanel({
    forceIsDirty,
    onClose,
    PostPublishExtension,
    PrePublishExtension,
    ...propsForPanel
  }) {
    const {
      hasPublishAction,
      isPostTypeViewable,
      isBeingScheduled,
      isDirty,
      isPublished,
      isPublishSidebarEnabled: isPublishSidebarEnabled2,
      isSaving,
      isSavingNonPostEntityChanges: isSavingNonPostEntityChanges2,
      isScheduled,
      currentPostId
    } = (0, import_data164.useSelect)((select9) => {
      const { getPostType } = select9(import_core_data102.store);
      const {
        getCurrentPost: getCurrentPost2,
        getCurrentPostId: getCurrentPostId2,
        getEditedPostAttribute: getEditedPostAttribute2,
        isCurrentPostPublished: isCurrentPostPublished2,
        isCurrentPostScheduled: isCurrentPostScheduled2,
        isEditedPostBeingScheduled: isEditedPostBeingScheduled2,
        isEditedPostDirty: isEditedPostDirty2,
        isAutosavingPost: isAutosavingPost2,
        isSavingPost: isSavingPost2,
        isSavingNonPostEntityChanges: _isSavingNonPostEntityChanges,
        isPublishSidebarEnabled: _isPublishSidebarEnabled
      } = select9(store);
      const postType2 = getPostType(getEditedPostAttribute2("type"));
      return {
        hasPublishAction: getCurrentPost2()._links?.["wp:action-publish"] ?? false,
        isPostTypeViewable: postType2?.viewable,
        isBeingScheduled: isEditedPostBeingScheduled2(),
        isDirty: isEditedPostDirty2(),
        isPublished: isCurrentPostPublished2(),
        isPublishSidebarEnabled: _isPublishSidebarEnabled(),
        isSaving: isSavingPost2() && !isAutosavingPost2(),
        isSavingNonPostEntityChanges: _isSavingNonPostEntityChanges(),
        isScheduled: isCurrentPostScheduled2(),
        currentPostId: getCurrentPostId2()
      };
    }, []);
    const { disablePublishSidebar: disablePublishSidebar2, enablePublishSidebar: enablePublishSidebar2 } = (0, import_data164.useDispatch)(store);
    const cancelButtonRef = (0, import_element351.useRef)(null);
    const wrapperRef = (0, import_compose68.useMergeRefs)([
      (0, import_compose68.useFocusReturn)(),
      (0, import_compose68.useConstrainedTabbing)()
    ]);
    (0, import_element351.useEffect)(() => {
      cancelButtonRef.current?.focus();
    }, []);
    const prevPostIdRef = (0, import_element351.useRef)(currentPostId);
    const stableOnClose = (0, import_compose68.useEvent)(onClose);
    (0, import_element351.useEffect)(() => {
      const postChanged = currentPostId !== prevPostIdRef.current;
      prevPostIdRef.current = currentPostId;
      if (postChanged || isPublished && !isSaving && isDirty) {
        stableOnClose();
      }
    }, [isPublished, isSaving, isDirty, currentPostId, stableOnClose]);
    function onTogglePublishSidebar() {
      if (isPublishSidebarEnabled2) {
        disablePublishSidebar2();
      } else {
        enablePublishSidebar2();
      }
    }
    function onSubmit() {
      if (!hasPublishAction || !isPostTypeViewable) {
        onClose();
      }
    }
    const isPublishedOrScheduled = isPublished || isScheduled && isBeingScheduled;
    const isPrePublish = !isPublishedOrScheduled && !isSaving;
    const isPostPublish = isPublishedOrScheduled && !isSaving;
    return /* @__PURE__ */ (0, import_jsx_runtime570.jsxs)(
      "div",
      {
        ref: wrapperRef,
        tabIndex: -1,
        className: "editor-post-publish-panel",
        ...propsForPanel,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime570.jsx)("div", { className: "editor-post-publish-panel__header", children: isPostPublish ? /* @__PURE__ */ (0, import_jsx_runtime570.jsx)(
            import_components207.Button,
            {
              size: "compact",
              onClick: onClose,
              icon: close_small_default,
              label: (0, import_i18n277.__)("Close panel")
            }
          ) : /* @__PURE__ */ (0, import_jsx_runtime570.jsxs)(import_jsx_runtime570.Fragment, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime570.jsx)("div", { className: "editor-post-publish-panel__header-cancel-button", children: /* @__PURE__ */ (0, import_jsx_runtime570.jsx)(
              import_components207.Button,
              {
                ref: cancelButtonRef,
                accessibleWhenDisabled: true,
                disabled: isSavingNonPostEntityChanges2,
                onClick: onClose,
                variant: "secondary",
                size: "compact",
                children: (0, import_i18n277.__)("Cancel")
              }
            ) }),
            /* @__PURE__ */ (0, import_jsx_runtime570.jsx)("div", { className: "editor-post-publish-panel__header-publish-button", children: /* @__PURE__ */ (0, import_jsx_runtime570.jsx)(
              post_publish_button_default,
              {
                onSubmit,
                forceIsDirty
              }
            ) })
          ] }) }),
          /* @__PURE__ */ (0, import_jsx_runtime570.jsxs)("div", { className: "editor-post-publish-panel__content", children: [
            isPrePublish && /* @__PURE__ */ (0, import_jsx_runtime570.jsx)(prepublish_default, { children: PrePublishExtension && /* @__PURE__ */ (0, import_jsx_runtime570.jsx)(PrePublishExtension, {}) }),
            isPostPublish && /* @__PURE__ */ (0, import_jsx_runtime570.jsx)(PostPublishPanelPostpublish, { focusOnMount: true, children: PostPublishExtension && /* @__PURE__ */ (0, import_jsx_runtime570.jsx)(PostPublishExtension, {}) }),
            isSaving && /* @__PURE__ */ (0, import_jsx_runtime570.jsx)(import_components207.Spinner, { "data-testid": "post-publish-panel-spinner" })
          ] }),
          /* @__PURE__ */ (0, import_jsx_runtime570.jsx)("div", { className: "editor-post-publish-panel__footer", children: /* @__PURE__ */ (0, import_jsx_runtime570.jsx)(
            import_components207.CheckboxControl,
            {
              label: (0, import_i18n277.__)("Always show pre-publish checks."),
              checked: isPublishSidebarEnabled2,
              onChange: onTogglePublishSidebar
            }
          ) })
        ]
      }
    );
  }

  // packages/editor/build-module/components/post-saved-state/index.mjs
  var import_components210 = __toESM(require_components(), 1);
  var import_compose70 = __toESM(require_compose(), 1);
  var import_data168 = __toESM(require_data(), 1);
  var import_element353 = __toESM(require_element(), 1);
  var import_i18n280 = __toESM(require_i18n(), 1);
  var import_keycodes13 = __toESM(require_keycodes(), 1);
  var import_preferences14 = __toESM(require_preferences(), 1);

  // packages/editor/build-module/components/post-status/index.mjs
  var import_components209 = __toESM(require_components(), 1);
  var import_i18n279 = __toESM(require_i18n(), 1);
  var import_data167 = __toESM(require_data(), 1);
  var import_element352 = __toESM(require_element(), 1);
  var import_core_data103 = __toESM(require_core_data(), 1);
  var import_block_editor59 = __toESM(require_block_editor(), 1);
  var import_compose69 = __toESM(require_compose(), 1);

  // packages/editor/build-module/components/post-sticky/index.mjs
  var import_i18n278 = __toESM(require_i18n(), 1);
  var import_components208 = __toESM(require_components(), 1);
  var import_data166 = __toESM(require_data(), 1);

  // packages/editor/build-module/components/post-sticky/check.mjs
  var import_data165 = __toESM(require_data(), 1);
  function PostStickyCheck({ children }) {
    const { hasStickyAction, postType: postType2 } = (0, import_data165.useSelect)((select9) => {
      const post2 = select9(store).getCurrentPost();
      return {
        hasStickyAction: post2._links?.["wp:action-sticky"] ?? false,
        postType: select9(store).getCurrentPostType()
      };
    }, []);
    if (postType2 !== "post" || !hasStickyAction) {
      return null;
    }
    return children;
  }

  // packages/editor/build-module/components/post-sticky/index.mjs
  var import_jsx_runtime571 = __toESM(require_jsx_runtime(), 1);
  function PostSticky() {
    const postSticky = (0, import_data166.useSelect)((select9) => {
      return select9(store).getEditedPostAttribute("sticky") ?? false;
    }, []);
    const { editPost: editPost2 } = (0, import_data166.useDispatch)(store);
    return /* @__PURE__ */ (0, import_jsx_runtime571.jsx)(PostStickyCheck, { children: /* @__PURE__ */ (0, import_jsx_runtime571.jsx)(
      import_components208.CheckboxControl,
      {
        className: "editor-post-sticky__checkbox-control",
        label: (0, import_i18n278.__)("Sticky"),
        help: (0, import_i18n278.__)("Pin this post to the top of the blog."),
        checked: postSticky,
        onChange: () => editPost2({ sticky: !postSticky })
      }
    ) });
  }

  // packages/editor/build-module/components/post-status/index.mjs
  var import_jsx_runtime572 = __toESM(require_jsx_runtime(), 1);
  var postStatusesInfo = {
    "auto-draft": { label: (0, import_i18n279.__)("Draft"), icon: drafts_default },
    draft: { label: (0, import_i18n279.__)("Draft"), icon: drafts_default },
    pending: { label: (0, import_i18n279.__)("Pending"), icon: pending_default },
    private: { label: (0, import_i18n279.__)("Private"), icon: not_allowed_default },
    future: { label: (0, import_i18n279.__)("Scheduled"), icon: scheduled_default },
    publish: { label: (0, import_i18n279.__)("Published"), icon: published_default }
  };
  var STATUS_OPTIONS = [
    {
      label: (0, import_i18n279.__)("Draft"),
      value: "draft",
      description: (0, import_i18n279.__)("Not ready to publish.")
    },
    {
      label: (0, import_i18n279.__)("Pending"),
      value: "pending",
      description: (0, import_i18n279.__)("Waiting for review before publishing.")
    },
    {
      label: (0, import_i18n279.__)("Private"),
      value: "private",
      description: (0, import_i18n279.__)("Only visible to site admins and editors.")
    },
    {
      label: (0, import_i18n279.__)("Scheduled"),
      value: "future",
      description: (0, import_i18n279.__)("Publish automatically on a chosen date.")
    },
    {
      label: (0, import_i18n279.__)("Published"),
      value: "publish",
      description: (0, import_i18n279.__)("Visible to everyone.")
    }
  ];
  function PostStatus() {
    const { status, date, password, postId: postId2, postType: postType2, canEdit } = (0, import_data167.useSelect)(
      (select9) => {
        const {
          getEditedPostAttribute: getEditedPostAttribute2,
          getCurrentPostId: getCurrentPostId2,
          getCurrentPostType: getCurrentPostType2,
          getCurrentPost: getCurrentPost2
        } = select9(store);
        return {
          status: getEditedPostAttribute2("status"),
          date: getEditedPostAttribute2("date"),
          password: getEditedPostAttribute2("password"),
          postId: getCurrentPostId2(),
          postType: getCurrentPostType2(),
          canEdit: getCurrentPost2()._links?.["wp:action-publish"] ?? false
        };
      },
      []
    );
    const [showPassword, setShowPassword] = (0, import_element352.useState)(!!password);
    const passwordInputId = (0, import_compose69.useInstanceId)(
      PostStatus,
      "editor-change-status__password-input"
    );
    const { editEntityRecord } = (0, import_data167.useDispatch)(import_core_data103.store);
    const [popoverAnchor, setPopoverAnchor] = (0, import_element352.useState)(null);
    const popoverProps = (0, import_element352.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        "aria-label": (0, import_i18n279.__)("Status & visibility"),
        headerTitle: (0, import_i18n279.__)("Status & visibility"),
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor]
    );
    if (DESIGN_POST_TYPES.includes(postType2)) {
      return null;
    }
    const updatePost2 = ({
      status: newStatus = status,
      password: newPassword = password,
      date: newDate = date
    }) => {
      editEntityRecord("postType", postType2, postId2, {
        status: newStatus,
        date: newDate,
        password: newPassword
      });
    };
    const handleTogglePassword = (value) => {
      setShowPassword(value);
      if (!value) {
        updatePost2({ password: "" });
      }
    };
    const handleStatus = (value) => {
      let newDate = date;
      let newPassword = password;
      if (status === "future" && new Date(date) > /* @__PURE__ */ new Date()) {
        newDate = null;
      }
      if (value === "private" && password) {
        newPassword = "";
      }
      updatePost2({
        status: value,
        date: newDate,
        password: newPassword
      });
    };
    return /* @__PURE__ */ (0, import_jsx_runtime572.jsx)(post_panel_row_default, { label: (0, import_i18n279.__)("Status"), ref: setPopoverAnchor, children: canEdit ? /* @__PURE__ */ (0, import_jsx_runtime572.jsx)(
      import_components209.Dropdown,
      {
        className: "editor-post-status",
        contentClassName: "editor-change-status__content",
        popoverProps,
        focusOnMount: true,
        renderToggle: ({ onToggle, isOpen: isOpen2 }) => /* @__PURE__ */ (0, import_jsx_runtime572.jsx)(
          import_components209.Button,
          {
            className: "editor-post-status__toggle",
            variant: "tertiary",
            size: "compact",
            onClick: onToggle,
            icon: postStatusesInfo[status]?.icon,
            "aria-label": (0, import_i18n279.sprintf)(
              // translators: %s: Current post status.
              (0, import_i18n279.__)("Change status: %s"),
              postStatusesInfo[status]?.label
            ),
            "aria-expanded": isOpen2,
            children: postStatusesInfo[status]?.label
          }
        ),
        renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime572.jsxs)(import_jsx_runtime572.Fragment, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime572.jsx)(
            import_block_editor59.__experimentalInspectorPopoverHeader,
            {
              title: (0, import_i18n279.__)("Status & visibility"),
              onClose
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime572.jsx)(
            "form",
            {
              onSubmit: (event) => {
                event.preventDefault();
                onClose();
              },
              children: /* @__PURE__ */ (0, import_jsx_runtime572.jsxs)(import_components209.__experimentalVStack, { spacing: 4, children: [
                /* @__PURE__ */ (0, import_jsx_runtime572.jsx)(
                  import_components209.RadioControl,
                  {
                    className: "editor-change-status__options",
                    hideLabelFromVision: true,
                    label: (0, import_i18n279.__)("Status"),
                    options: STATUS_OPTIONS,
                    onChange: handleStatus,
                    selected: status === "auto-draft" ? "draft" : status
                  }
                ),
                status === "future" && /* @__PURE__ */ (0, import_jsx_runtime572.jsx)("div", { className: "editor-change-status__publish-date-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime572.jsx)(
                  PrivatePostSchedule,
                  {
                    showPopoverHeaderActions: false,
                    isCompact: true
                  }
                ) }),
                status !== "private" && /* @__PURE__ */ (0, import_jsx_runtime572.jsxs)(
                  import_components209.__experimentalVStack,
                  {
                    as: "fieldset",
                    spacing: 4,
                    className: "editor-change-status__password-fieldset",
                    children: [
                      /* @__PURE__ */ (0, import_jsx_runtime572.jsx)(
                        import_components209.CheckboxControl,
                        {
                          label: (0, import_i18n279.__)(
                            "Password protected"
                          ),
                          help: (0, import_i18n279.__)(
                            "Only visible to those who know the password."
                          ),
                          checked: showPassword,
                          onChange: handleTogglePassword
                        }
                      ),
                      showPassword && /* @__PURE__ */ (0, import_jsx_runtime572.jsx)("div", { className: "editor-change-status__password-input", children: /* @__PURE__ */ (0, import_jsx_runtime572.jsx)(
                        import_components209.TextControl,
                        {
                          label: (0, import_i18n279.__)(
                            "Password"
                          ),
                          onChange: (value) => updatePost2({
                            password: value
                          }),
                          value: password,
                          placeholder: (0, import_i18n279.__)(
                            "Use a secure password"
                          ),
                          type: "text",
                          id: passwordInputId,
                          maxLength: 255
                        }
                      ) })
                    ]
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime572.jsx)(PostSticky, {})
              ] })
            }
          )
        ] })
      }
    ) : /* @__PURE__ */ (0, import_jsx_runtime572.jsx)("div", { className: "editor-post-status is-read-only", children: postStatusesInfo[status]?.label }) });
  }

  // packages/editor/build-module/components/post-saved-state/index.mjs
  var import_jsx_runtime573 = __toESM(require_jsx_runtime(), 1);
  function PostSavedState({ forceIsDirty }) {
    const [forceSavedMessage, setForceSavedMessage] = (0, import_element353.useState)(false);
    const isLargeViewport = (0, import_compose70.useViewportMatch)("small");
    const {
      isAutosaving,
      isDirty,
      isNew,
      isPublished,
      isSaveable,
      isSaving,
      isSavingLocked,
      isSavingNonPostEntityChanges: isSavingNonPostEntityChanges2,
      isScheduled,
      hasPublishAction,
      showIconLabels,
      postStatus,
      postStatusHasChanged,
      postType: postType2
    } = (0, import_data168.useSelect)(
      (select9) => {
        const store4 = select9(store);
        const { get } = select9(import_preferences14.store);
        return {
          isAutosaving: store4.isAutosavingPost(),
          isDirty: forceIsDirty || store4.isEditedPostDirty(),
          isNew: store4.isEditedPostNew(),
          isPublished: store4.isCurrentPostPublished(),
          isSaving: store4.isSavingPost(),
          isSaveable: store4.isEditedPostSaveable(),
          isSavingLocked: store4.isPostSavingLocked(),
          isSavingNonPostEntityChanges: store4.isSavingNonPostEntityChanges(),
          isScheduled: store4.isCurrentPostScheduled(),
          hasPublishAction: !!store4.getCurrentPost()?._links?.["wp:action-publish"],
          showIconLabels: get("core", "showIconLabels"),
          postStatus: store4.getEditedPostAttribute("status"),
          postStatusHasChanged: !!store4.getPostEdits()?.status,
          postType: store4.getCurrentPostType()
        };
      },
      [forceIsDirty]
    );
    const isPending = postStatus === "pending";
    const { savePost: savePost2 } = (0, import_data168.useDispatch)(store);
    const wasSaving = (0, import_compose70.usePrevious)(isSaving);
    (0, import_element353.useEffect)(() => {
      let timeoutId;
      if (wasSaving && !isSaving) {
        setForceSavedMessage(true);
        timeoutId = setTimeout(() => {
          setForceSavedMessage(false);
        }, 1e3);
      }
      return () => clearTimeout(timeoutId);
    }, [isSaving]);
    if (postType2 === ATTACHMENT_POST_TYPE) {
      return null;
    }
    if (!hasPublishAction && isPending) {
      return null;
    }
    const isIneligibleStatus = !["pending", "draft", "auto-draft"].includes(postStatus) && STATUS_OPTIONS.map(({ value }) => value).includes(postStatus);
    if (isPublished || isScheduled || isIneligibleStatus || postStatusHasChanged && ["pending", "draft"].includes(postStatus)) {
      return null;
    }
    const label = isPending ? (0, import_i18n280.__)("Save as pending") : (0, import_i18n280.__)("Save draft");
    const shortLabel = (0, import_i18n280.__)("Save");
    const isSaved = forceSavedMessage || !isNew && !isDirty;
    const isSavedState = isSaving || isSaved;
    const isDisabled = isSaving || isSaved || !isSaveable || isSavingLocked || // Disable while a non-post entity (e.g. a newly created term) is mid-save.
    isSavingNonPostEntityChanges2;
    let text;
    if (isSaving) {
      text = isAutosaving ? (0, import_i18n280.__)("Autosaving") : (0, import_i18n280.__)("Saving");
    } else if (isSaved) {
      text = (0, import_i18n280.__)("Saved");
    } else if (isLargeViewport) {
      text = label;
    } else if (showIconLabels) {
      text = shortLabel;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime573.jsxs)(
      import_components210.Button,
      {
        className: isSaveable || isSaving ? clsx_default({
          "editor-post-save-draft": !isSavedState,
          "editor-post-saved-state": isSavedState,
          "is-saving": isSaving,
          "is-autosaving": isAutosaving,
          "is-saved": isSaved,
          [(0, import_components210.__unstableGetAnimateClassName)({
            type: "loading"
          })]: isSaving
        }) : void 0,
        onClick: isDisabled ? void 0 : () => savePost2(),
        shortcut: isDisabled ? void 0 : import_keycodes13.displayShortcut.primary("s"),
        variant: "tertiary",
        size: "compact",
        icon: isLargeViewport ? void 0 : cloud_upload_default,
        label: text || label,
        "aria-disabled": isDisabled,
        children: [
          isSavedState && /* @__PURE__ */ (0, import_jsx_runtime573.jsx)(icon_default, { icon: isSaved ? check_default : cloud_default }),
          text
        ]
      }
    );
  }

  // packages/editor/build-module/components/post-schedule/check.mjs
  var import_data169 = __toESM(require_data(), 1);
  function PostScheduleCheck({ children }) {
    const hasPublishAction = (0, import_data169.useSelect)((select9) => {
      return select9(store).getCurrentPost()._links?.["wp:action-publish"] ?? false;
    }, []);
    if (!hasPublishAction) {
      return null;
    }
    return children;
  }

  // packages/editor/build-module/components/post-schedule/panel.mjs
  var import_components211 = __toESM(require_components(), 1);
  var import_i18n281 = __toESM(require_i18n(), 1);
  var import_element354 = __toESM(require_element(), 1);
  var import_data170 = __toESM(require_data(), 1);
  var import_jsx_runtime574 = __toESM(require_jsx_runtime(), 1);
  function PostSchedulePanel() {
    const [popoverAnchor, setPopoverAnchor] = (0, import_element354.useState)(null);
    const postType2 = (0, import_data170.useSelect)(
      (select9) => select9(store).getCurrentPostType(),
      []
    );
    const popoverProps = (0, import_element354.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        "aria-label": (0, import_i18n281.__)("Change publish date"),
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor]
    );
    const label = usePostScheduleLabel();
    const fullLabel = usePostScheduleLabel({ full: true });
    if (DESIGN_POST_TYPES.includes(postType2)) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime574.jsx)(PostScheduleCheck, { children: /* @__PURE__ */ (0, import_jsx_runtime574.jsx)(post_panel_row_default, { label: (0, import_i18n281.__)("Publish"), ref: setPopoverAnchor, children: /* @__PURE__ */ (0, import_jsx_runtime574.jsx)(
      import_components211.Dropdown,
      {
        popoverProps,
        focusOnMount: true,
        className: "editor-post-schedule__panel-dropdown",
        contentClassName: "editor-post-schedule__dialog",
        renderToggle: ({ onToggle, isOpen: isOpen2 }) => /* @__PURE__ */ (0, import_jsx_runtime574.jsx)(
          import_components211.Button,
          {
            size: "compact",
            className: "editor-post-schedule__dialog-toggle",
            variant: "tertiary",
            tooltipPosition: "middle left",
            onClick: onToggle,
            "aria-label": (0, import_i18n281.sprintf)(
              // translators: %s: Current post date.
              (0, import_i18n281.__)("Change date: %s"),
              label
            ),
            label: fullLabel,
            showTooltip: label !== fullLabel,
            "aria-expanded": isOpen2,
            children: label
          }
        ),
        renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime574.jsx)(PostSchedule, { onClose })
      }
    ) }) });
  }

  // packages/editor/build-module/components/post-switch-to-draft-button/index.mjs
  var import_components212 = __toESM(require_components(), 1);
  var import_i18n282 = __toESM(require_i18n(), 1);
  var import_data171 = __toESM(require_data(), 1);
  var import_element355 = __toESM(require_element(), 1);
  var import_deprecated15 = __toESM(require_deprecated(), 1);
  var import_jsx_runtime575 = __toESM(require_jsx_runtime(), 1);
  function PostSwitchToDraftButton() {
    (0, import_deprecated15.default)("wp.editor.PostSwitchToDraftButton", {
      since: "6.7",
      version: "6.9"
    });
    const [showConfirmDialog, setShowConfirmDialog] = (0, import_element355.useState)(false);
    const { editPost: editPost2, savePost: savePost2 } = (0, import_data171.useDispatch)(store);
    const { isSaving, isPublished, isScheduled } = (0, import_data171.useSelect)((select9) => {
      const { isSavingPost: isSavingPost2, isCurrentPostPublished: isCurrentPostPublished2, isCurrentPostScheduled: isCurrentPostScheduled2 } = select9(store);
      return {
        isSaving: isSavingPost2(),
        isPublished: isCurrentPostPublished2(),
        isScheduled: isCurrentPostScheduled2()
      };
    }, []);
    const isDisabled = isSaving || !isPublished && !isScheduled;
    let alertMessage;
    let confirmButtonText;
    if (isPublished) {
      alertMessage = (0, import_i18n282.__)("Are you sure you want to unpublish this post?");
      confirmButtonText = (0, import_i18n282.__)("Unpublish");
    } else if (isScheduled) {
      alertMessage = (0, import_i18n282.__)("Are you sure you want to unschedule this post?");
      confirmButtonText = (0, import_i18n282.__)("Unschedule");
    }
    const handleConfirm = () => {
      setShowConfirmDialog(false);
      editPost2({ status: "draft" });
      savePost2();
    };
    return /* @__PURE__ */ (0, import_jsx_runtime575.jsxs)(import_jsx_runtime575.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime575.jsx)(
        import_components212.Button,
        {
          __next40pxDefaultSize: true,
          className: "editor-post-switch-to-draft",
          onClick: () => {
            if (!isDisabled) {
              setShowConfirmDialog(true);
            }
          },
          "aria-disabled": isDisabled,
          variant: "secondary",
          style: { flexGrow: "1", justifyContent: "center" },
          children: (0, import_i18n282.__)("Switch to draft")
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime575.jsx)(
        import_components212.__experimentalConfirmDialog,
        {
          isOpen: showConfirmDialog,
          onConfirm: handleConfirm,
          onCancel: () => setShowConfirmDialog(false),
          confirmButtonText,
          children: alertMessage
        }
      )
    ] });
  }

  // packages/editor/build-module/components/post-sync-status/index.mjs
  var import_data172 = __toESM(require_data(), 1);
  var import_i18n283 = __toESM(require_i18n(), 1);
  var import_jsx_runtime576 = __toESM(require_jsx_runtime(), 1);
  function PostSyncStatus() {
    const { syncStatus, postType: postType2 } = (0, import_data172.useSelect)((select9) => {
      const { getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
      const meta2 = getEditedPostAttribute2("meta");
      const currentSyncStatus = meta2?.wp_pattern_sync_status === "unsynced" ? "unsynced" : getEditedPostAttribute2("wp_pattern_sync_status");
      return {
        syncStatus: currentSyncStatus,
        postType: getEditedPostAttribute2("type")
      };
    });
    if (postType2 !== "wp_block") {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime576.jsx)(post_panel_row_default, { label: (0, import_i18n283.__)("Sync status"), children: /* @__PURE__ */ (0, import_jsx_runtime576.jsx)("div", { className: "editor-post-sync-status__value", children: syncStatus === "unsynced" ? (0, import_i18n283._x)("Not synced", "pattern (singular)") : (0, import_i18n283._x)("Synced", "pattern (singular)") }) });
  }

  // packages/editor/build-module/components/post-taxonomies/index.mjs
  var import_element356 = __toESM(require_element(), 1);
  var import_data173 = __toESM(require_data(), 1);
  var import_core_data104 = __toESM(require_core_data(), 1);
  var import_jsx_runtime577 = __toESM(require_jsx_runtime(), 1);
  var identity3 = (x2) => x2;
  function PostTaxonomies({ taxonomyWrapper = identity3 }) {
    const { postType: postType2, taxonomies } = (0, import_data173.useSelect)((select9) => {
      return {
        postType: select9(store).getCurrentPostType(),
        taxonomies: select9(import_core_data104.store).getEntityRecords(
          "root",
          "taxonomy"
        )
      };
    }, []);
    const visibleTaxonomies = (taxonomies ?? []).filter(
      (taxonomy) => (
        // In some circumstances .visibility can end up as undefined so optional chaining operator required.
        // https://github.com/WordPress/gutenberg/issues/40326
        taxonomy.types.includes(postType2) && taxonomy.visibility?.show_ui
      )
    );
    return visibleTaxonomies.map((taxonomy) => {
      const TaxonomyComponent = taxonomy.hierarchical ? hierarchical_term_selector_default : flat_term_selector_default;
      return /* @__PURE__ */ (0, import_jsx_runtime577.jsx)(import_element356.Fragment, { children: taxonomyWrapper(
        /* @__PURE__ */ (0, import_jsx_runtime577.jsx)(TaxonomyComponent, { slug: taxonomy.slug }),
        taxonomy
      ) }, `taxonomy-${taxonomy.slug}`);
    });
  }
  var post_taxonomies_default = PostTaxonomies;

  // packages/editor/build-module/components/post-taxonomies/check.mjs
  var import_data174 = __toESM(require_data(), 1);
  var import_core_data105 = __toESM(require_core_data(), 1);
  function PostTaxonomiesCheck({ children }) {
    const hasTaxonomies = (0, import_data174.useSelect)((select9) => {
      const postType2 = select9(store).getCurrentPostType();
      const taxonomies = select9(import_core_data105.store).getEntityRecords(
        "root",
        "taxonomy"
      );
      return taxonomies?.some(
        (taxonomy) => taxonomy.types.includes(postType2)
      );
    }, []);
    if (!hasTaxonomies) {
      return null;
    }
    return children;
  }

  // packages/editor/build-module/components/post-taxonomies/panel.mjs
  var import_components213 = __toESM(require_components(), 1);
  var import_data175 = __toESM(require_data(), 1);
  var import_jsx_runtime578 = __toESM(require_jsx_runtime(), 1);
  function TaxonomyPanel({ taxonomy, children }) {
    const slug = taxonomy?.slug;
    const panelName = slug ? `taxonomy-panel-${slug}` : "";
    const { isEnabled, isOpened } = (0, import_data175.useSelect)(
      (select9) => {
        const { isEditorPanelEnabled: isEditorPanelEnabled2, isEditorPanelOpened: isEditorPanelOpened2 } = select9(store);
        return {
          isEnabled: slug ? isEditorPanelEnabled2(panelName) : false,
          isOpened: slug ? isEditorPanelOpened2(panelName) : false
        };
      },
      [panelName, slug]
    );
    const { toggleEditorPanelOpened: toggleEditorPanelOpened2 } = (0, import_data175.useDispatch)(store);
    if (!isEnabled) {
      return null;
    }
    const taxonomyMenuName = taxonomy?.labels?.menu_name;
    if (!taxonomyMenuName) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime578.jsx)(
      import_components213.PanelBody,
      {
        title: taxonomyMenuName,
        opened: isOpened,
        onToggle: () => toggleEditorPanelOpened2(panelName),
        children
      }
    );
  }
  function PostTaxonomies2() {
    return /* @__PURE__ */ (0, import_jsx_runtime578.jsx)(PostTaxonomiesCheck, { children: /* @__PURE__ */ (0, import_jsx_runtime578.jsx)(
      post_taxonomies_default,
      {
        taxonomyWrapper: (content, taxonomy) => {
          return /* @__PURE__ */ (0, import_jsx_runtime578.jsx)(TaxonomyPanel, { taxonomy, children: content });
        }
      }
    ) });
  }

  // packages/editor/build-module/components/post-text-editor/index.mjs
  var import_element357 = __toESM(require_element(), 1);
  var import_i18n284 = __toESM(require_i18n(), 1);
  var import_core_data106 = __toESM(require_core_data(), 1);
  var import_data176 = __toESM(require_data(), 1);
  var import_compose71 = __toESM(require_compose(), 1);

  // packages/editor/build-module/components/post-text-editor/utils.mjs
  var STRING_TOO_LARGE_THRESHOLD = 1e3;
  function getDiff(oldValue, newValue) {
    const maxStringLength = Math.max(oldValue.length, newValue.length);
    if (maxStringLength <= STRING_TOO_LARGE_THRESHOLD) {
      return diffChars(oldValue, newValue);
    }
    let start2 = 0;
    const minStringLength = Math.min(oldValue.length, newValue.length);
    while (start2 < minStringLength && oldValue[start2] === newValue[start2]) {
      start2++;
    }
    let oldEnd = oldValue.length;
    let newEnd = newValue.length;
    while (oldEnd > start2 && newEnd > start2 && oldValue[oldEnd - 1] === newValue[newEnd - 1]) {
      oldEnd--;
      newEnd--;
    }
    const oldChangedValue = oldValue.slice(start2, oldEnd);
    const newChangedValue = newValue.slice(start2, newEnd);
    const maxChangedStringLength = Math.max(
      oldChangedValue.length,
      newChangedValue.length
    );
    let changes;
    if (maxChangedStringLength <= STRING_TOO_LARGE_THRESHOLD) {
      changes = diffChars(oldChangedValue, newChangedValue);
    } else {
      changes = diffLines(oldChangedValue, newChangedValue);
    }
    if (start2 > 0) {
      changes.unshift({ value: oldValue.slice(0, start2) });
    }
    if (oldEnd < oldValue.length) {
      changes.push({ value: oldValue.slice(oldEnd) });
    }
    return changes;
  }
  function clampCursorPosition(position, value) {
    return Math.max(0, Math.min(value.length, position));
  }
  function getCursorOffsetFromCommonTextBeforeCursor(oldValue, newValue, position) {
    const oldValueBeforeCursor = oldValue.slice(0, position);
    let low = 1;
    let high = oldValueBeforeCursor.length;
    let cursorOffset;
    while (low <= high) {
      const length2 = Math.floor((low + high) / 2);
      const index3 = newValue.indexOf(
        oldValueBeforeCursor.slice(oldValueBeforeCursor.length - length2)
      );
      if (index3 === -1) {
        high = length2 - 1;
      } else {
        cursorOffset = index3 + length2;
        low = length2 + 1;
      }
    }
    return cursorOffset;
  }
  function adjustPosition(position, changes, oldValue, newValue) {
    let oldIndex = 0;
    let newIndex = 0;
    let adjustedPosition = position;
    for (let i2 = 0; i2 < changes.length; i2++) {
      const change = changes[i2];
      if (!change.added && !change.removed) {
        oldIndex += change.value.length;
        newIndex += change.value.length;
        continue;
      }
      const oldStart = oldIndex;
      const newStart = newIndex;
      let oldLength = 0;
      let newLength = 0;
      while (i2 < changes.length && (changes[i2].added || changes[i2].removed)) {
        if (changes[i2].removed) {
          oldLength += changes[i2].value.length;
        } else {
          newLength += changes[i2].value.length;
        }
        i2++;
      }
      i2--;
      const oldEnd = oldStart + oldLength;
      const newEnd = newStart + newLength;
      if (position < oldStart) {
        break;
      }
      if (oldLength === 0) {
        adjustedPosition += newLength;
      } else if (position <= oldEnd) {
        const cursorOffset = getCursorOffsetFromCommonTextBeforeCursor(
          oldValue.slice(oldStart, oldEnd),
          newValue.slice(newStart, newEnd),
          position - oldStart
        );
        adjustedPosition = cursorOffset === void 0 ? newEnd : newStart + cursorOffset;
        break;
      } else {
        adjustedPosition += newLength - oldLength;
      }
      oldIndex += oldLength;
      newIndex += newLength;
    }
    return clampCursorPosition(adjustedPosition, newValue);
  }

  // packages/editor/build-module/components/post-text-editor/index.mjs
  var import_jsx_runtime579 = __toESM(require_jsx_runtime(), 1);
  function PostTextEditor() {
    const instanceId = (0, import_compose71.useInstanceId)(PostTextEditor);
    const textareaRef = (0, import_element357.useRef)();
    const previousValueRef = (0, import_element357.useRef)();
    const selectionRef = (0, import_element357.useRef)();
    const { value, type, id } = (0, import_data176.useSelect)((select9) => {
      const { getCurrentPostType: getCurrentPostType2, getCurrentPostId: getCurrentPostId2, getEditedPostContent: getEditedPostContent2 } = select9(store);
      return {
        value: getEditedPostContent2(),
        type: getCurrentPostType2(),
        id: getCurrentPostId2()
      };
    }, []);
    const { editEntityRecord } = (0, import_data176.useDispatch)(import_core_data106.store);
    (0, import_element357.useLayoutEffect)(() => {
      const textarea = textareaRef.current;
      const previousValue = previousValueRef.current;
      previousValueRef.current = value;
      if (!textarea || previousValue === void 0 || previousValue === value || !selectionRef.current) {
        return;
      }
      const { selectionStart, selectionEnd, selectionDirection } = selectionRef.current;
      const changes = getDiff(previousValue, value);
      const adjustedSelectionStart = adjustPosition(
        selectionStart,
        changes,
        previousValue,
        value
      );
      const adjustedSelectionEnd = adjustPosition(
        selectionEnd,
        changes,
        previousValue,
        value
      );
      textarea.setSelectionRange(
        adjustedSelectionStart,
        adjustedSelectionEnd,
        selectionDirection
      );
      selectionRef.current = {
        selectionStart: adjustedSelectionStart,
        selectionEnd: adjustedSelectionEnd,
        selectionDirection
      };
    }, [value]);
    const updateSelection = (event) => {
      const { selectionStart, selectionEnd, selectionDirection } = event.target;
      selectionRef.current = {
        selectionStart,
        selectionEnd,
        selectionDirection
      };
    };
    return /* @__PURE__ */ (0, import_jsx_runtime579.jsxs)(import_jsx_runtime579.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime579.jsx)(
        VisuallyHidden,
        {
          render: /* @__PURE__ */ (0, import_jsx_runtime579.jsx)("label", { htmlFor: `post-content-${instanceId}` }),
          children: (0, import_i18n284.__)("Type text or HTML")
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime579.jsx)(
        "textarea",
        {
          autoComplete: "off",
          dir: "auto",
          ref: textareaRef,
          value,
          onChange: (event) => {
            updateSelection(event);
            previousValueRef.current = event.target.value;
            editEntityRecord("postType", type, id, {
              content: event.target.value,
              blocks: void 0,
              selection: void 0
            });
          },
          onFocus: updateSelection,
          onMouseUp: updateSelection,
          onKeyUp: updateSelection,
          className: "editor-post-text-editor",
          id: `post-content-${instanceId}`,
          placeholder: (0, import_i18n284.__)("Start writing with text or HTML")
        }
      )
    ] });
  }

  // packages/editor/build-module/components/post-title/index.mjs
  var import_i18n285 = __toESM(require_i18n(), 1);
  var import_element360 = __toESM(require_element(), 1);
  var import_html_entities28 = __toESM(require_html_entities(), 1);
  var import_data179 = __toESM(require_data(), 1);
  var import_block_editor60 = __toESM(require_block_editor(), 1);
  var import_blocks27 = __toESM(require_blocks(), 1);
  var import_rich_text4 = __toESM(require_rich_text(), 1);
  var import_compose72 = __toESM(require_compose(), 1);
  var import_dom35 = __toESM(require_dom(), 1);

  // packages/editor/build-module/components/post-title/constants.mjs
  var DEFAULT_CLASSNAMES = "wp-block wp-block-post-title block-editor-block-list__block editor-post-title editor-post-title__input rich-text";
  var REGEXP_NEWLINES = /[\r\n]+/g;

  // packages/editor/build-module/components/post-title/use-post-title-focus.mjs
  var import_element358 = __toESM(require_element(), 1);
  var import_data177 = __toESM(require_data(), 1);
  function usePostTitleFocus(forwardedRef) {
    const ref = (0, import_element358.useRef)();
    const { isCleanNewPost: isCleanNewPost2 } = (0, import_data177.useSelect)((select9) => {
      const { isCleanNewPost: _isCleanNewPost } = select9(store);
      return {
        isCleanNewPost: _isCleanNewPost()
      };
    }, []);
    (0, import_element358.useImperativeHandle)(forwardedRef, () => ({
      focus: () => {
        ref?.current?.focus();
      }
    }));
    (0, import_element358.useEffect)(() => {
      if (!ref.current) {
        return;
      }
      const { defaultView } = ref.current.ownerDocument;
      const { name: name2, parent } = defaultView;
      const ownerDocument2 = name2 === "editor-canvas" ? parent.document : defaultView.document;
      const { activeElement: activeElement2, body } = ownerDocument2;
      if (isCleanNewPost2 && (!activeElement2 || body === activeElement2)) {
        ref.current.focus();
      }
    }, [isCleanNewPost2]);
    return { ref };
  }

  // packages/editor/build-module/components/post-title/use-post-title.mjs
  var import_data178 = __toESM(require_data(), 1);
  var import_element359 = __toESM(require_element(), 1);
  var import_core_data107 = __toESM(require_core_data(), 1);
  function usePostTitle() {
    const { postType: postType2, postId: postId2, previousTitle } = (0, import_data178.useSelect)((select9) => {
      const {
        getCurrentPostType: getCurrentPostType2,
        getCurrentPostId: getCurrentPostId2,
        isRevisionsMode: isRevisionsMode2,
        isShowingRevisionDiff: isShowingRevisionDiff2,
        getPreviousRevision: getPreviousRevision2
      } = unlock(select9(store));
      const isDiffing = isRevisionsMode2() && isShowingRevisionDiff2();
      return {
        postType: getCurrentPostType2(),
        postId: getCurrentPostId2(),
        // The oldest revision has nothing to compare against, so its whole
        // title reads as added.
        previousTitle: isDiffing ? getPreviousRevision2()?.title?.raw ?? "" : void 0
      };
    }, []);
    const [title, setTitle] = (0, import_core_data107.useEntityProp)(
      "postType",
      postType2,
      "title",
      postId2
    );
    const value = (0, import_element359.useMemo)(
      () => previousTitle === void 0 ? title : diffRevisionHTML(title, previousTitle),
      [title, previousTitle]
    );
    return { title: value, setTitle };
  }

  // packages/editor/build-module/components/post-title/index.mjs
  var import_jsx_runtime580 = __toESM(require_jsx_runtime(), 1);
  var { useRichText } = unlock(import_rich_text4.privateApis);
  var PostTitle = (0, import_element360.forwardRef)((_, forwardedRef) => {
    const { placeholder, isEditingContentOnlySection, isPreview } = (0, import_data179.useSelect)(
      (select9) => {
        const { getSettings: getSettings12, getEditedContentOnlySection } = unlock(
          select9(import_block_editor60.store)
        );
        const { titlePlaceholder, isPreviewMode } = getSettings12();
        return {
          placeholder: titlePlaceholder,
          isEditingContentOnlySection: !!getEditedContentOnlySection(),
          isPreview: isPreviewMode
        };
      },
      []
    );
    const [isSelected2, setIsSelected] = (0, import_element360.useState)(false);
    const { ref: focusRef } = usePostTitleFocus(forwardedRef);
    const { title, setTitle: onUpdate } = usePostTitle();
    const [selection, setSelection] = (0, import_element360.useState)({});
    const { clearSelectedBlock: clearSelectedBlock2, insertBlocks: insertBlocks2, insertDefaultBlock: insertDefaultBlock2 } = (0, import_data179.useDispatch)(import_block_editor60.store);
    const decodedPlaceholder = (0, import_html_entities28.decodeEntities)(placeholder) || (0, import_i18n285.__)("Add title");
    const {
      value,
      onChange,
      ref: richTextRef
    } = useRichText({
      value: title,
      onChange(newValue) {
        onUpdate(newValue.replace(REGEXP_NEWLINES, " "));
      },
      placeholder: decodedPlaceholder,
      selectionStart: selection.start,
      selectionEnd: selection.end,
      onSelectionChange(newStart, newEnd) {
        setSelection((sel) => {
          const { start: start2, end } = sel;
          if (start2 === newStart && end === newEnd) {
            return sel;
          }
          return {
            start: newStart,
            end: newEnd
          };
        });
      },
      __unstableDisableFormats: false
    });
    function onInsertBlockAfter(blocks) {
      insertBlocks2(blocks, 0);
    }
    function onSelect() {
      setIsSelected(true);
      clearSelectedBlock2();
    }
    function onUnselect() {
      setIsSelected(false);
      setSelection({});
    }
    function onEnterPress() {
      insertDefaultBlock2(void 0, void 0, 0);
    }
    const enterRef = (0, import_compose72.useRefEffect)((element) => {
      function onBeforeInput(event) {
        if (event.inputType === "insertParagraph" || event.inputType === "insertLineBreak") {
          event.preventDefault();
          onEnterPress();
        }
      }
      element.addEventListener("beforeinput", onBeforeInput);
      return () => {
        element.removeEventListener("beforeinput", onBeforeInput);
      };
    }, []);
    function onPaste(event) {
      const clipboardData = event.clipboardData;
      let plainText = "";
      let html = "";
      try {
        plainText = clipboardData.getData("text/plain");
        html = clipboardData.getData("text/html");
      } catch {
        return;
      }
      const content = (0, import_blocks27.pasteHandler)({
        HTML: html,
        plainText
      });
      event.preventDefault();
      if (!content.length) {
        return;
      }
      if (typeof content !== "string") {
        const [firstBlock] = content;
        if (!title && (firstBlock.name === "core/heading" || firstBlock.name === "core/paragraph")) {
          const contentNoHTML = (0, import_dom35.__unstableStripHTML)(
            firstBlock.attributes.content
          );
          onUpdate(contentNoHTML);
          onInsertBlockAfter(content.slice(1));
        } else {
          onInsertBlockAfter(content);
        }
      } else {
        const contentNoHTML = (0, import_dom35.__unstableStripHTML)(content);
        onChange((0, import_rich_text4.insert)(value, (0, import_rich_text4.create)({ html: contentNoHTML })));
      }
    }
    const className = clsx_default(DEFAULT_CLASSNAMES, {
      "is-selected": isSelected2
    });
    const style = isEditingContentOnlySection ? { opacity: 0.2 } : void 0;
    return (
      /* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role */
      /* @__PURE__ */ (0, import_jsx_runtime580.jsx)(
        "h1",
        {
          ref: (0, import_compose72.useMergeRefs)([richTextRef, focusRef, enterRef]),
          contentEditable: !isEditingContentOnlySection && !isPreview,
          className,
          "aria-label": decodedPlaceholder,
          role: "textbox",
          "aria-multiline": "true",
          onFocus: onSelect,
          onBlur: onUnselect,
          onPaste,
          style
        }
      )
    );
  });
  var post_title_default = (0, import_element360.forwardRef)((_, forwardedRef) => /* @__PURE__ */ (0, import_jsx_runtime580.jsx)(post_type_support_check_default, { supportKeys: "title", children: /* @__PURE__ */ (0, import_jsx_runtime580.jsx)(PostTitle, { ref: forwardedRef }) }));

  // packages/editor/build-module/components/post-title/post-title-raw.mjs
  var import_components214 = __toESM(require_components(), 1);
  var import_i18n286 = __toESM(require_i18n(), 1);
  var import_html_entities29 = __toESM(require_html_entities(), 1);
  var import_data180 = __toESM(require_data(), 1);
  var import_block_editor61 = __toESM(require_block_editor(), 1);
  var import_element361 = __toESM(require_element(), 1);
  var import_jsx_runtime581 = __toESM(require_jsx_runtime(), 1);
  function PostTitleRaw(_, forwardedRef) {
    const { placeholder } = (0, import_data180.useSelect)((select9) => {
      const { getSettings: getSettings12 } = select9(import_block_editor61.store);
      const { titlePlaceholder } = getSettings12();
      return {
        placeholder: titlePlaceholder
      };
    }, []);
    const [isSelected2, setIsSelected] = (0, import_element361.useState)(false);
    const { title, setTitle: onUpdate } = usePostTitle();
    const { ref: focusRef } = usePostTitleFocus(forwardedRef);
    function onChange(value) {
      onUpdate(value.replace(REGEXP_NEWLINES, " "));
    }
    function onSelect() {
      setIsSelected(true);
    }
    function onUnselect() {
      setIsSelected(false);
    }
    const className = clsx_default(DEFAULT_CLASSNAMES, {
      "is-selected": isSelected2,
      "is-raw-text": true
    });
    const decodedPlaceholder = (0, import_html_entities29.decodeEntities)(placeholder) || (0, import_i18n286.__)("Add title");
    return /* @__PURE__ */ (0, import_jsx_runtime581.jsx)(
      import_components214.TextareaControl,
      {
        ref: focusRef,
        value: title,
        onChange,
        onFocus: onSelect,
        onBlur: onUnselect,
        label: placeholder,
        className,
        placeholder: decodedPlaceholder,
        hideLabelFromVision: true,
        autoComplete: "off",
        dir: "auto",
        rows: 1
      }
    );
  }
  var post_title_raw_default = (0, import_element361.forwardRef)(PostTitleRaw);

  // packages/editor/build-module/components/post-trash/index.mjs
  var import_i18n287 = __toESM(require_i18n(), 1);
  var import_components215 = __toESM(require_components(), 1);
  var import_data182 = __toESM(require_data(), 1);
  var import_element362 = __toESM(require_element(), 1);

  // packages/editor/build-module/components/post-trash/check.mjs
  var import_data181 = __toESM(require_data(), 1);
  var import_core_data108 = __toESM(require_core_data(), 1);
  function PostTrashCheck({ children }) {
    const { canTrashPost } = (0, import_data181.useSelect)((select9) => {
      const { isEditedPostNew: isEditedPostNew2, getCurrentPostId: getCurrentPostId2, getCurrentPostType: getCurrentPostType2 } = select9(store);
      const { canUser } = select9(import_core_data108.store);
      const postType2 = getCurrentPostType2();
      const postId2 = getCurrentPostId2();
      const isNew = isEditedPostNew2();
      const canUserDelete = !!postId2 ? canUser("delete", {
        kind: "postType",
        name: postType2,
        id: postId2
      }) : false;
      return {
        canTrashPost: (!isNew || postId2) && canUserDelete && !GLOBAL_POST_TYPES.includes(postType2)
      };
    }, []);
    if (!canTrashPost) {
      return null;
    }
    return children;
  }

  // packages/editor/build-module/components/post-trash/index.mjs
  var import_jsx_runtime582 = __toESM(require_jsx_runtime(), 1);
  function PostTrash({ onActionPerformed }) {
    const registry = (0, import_data182.useRegistry)();
    const { isNew, isDeleting, postId: postId2, title } = (0, import_data182.useSelect)((select9) => {
      const store4 = select9(store);
      return {
        isNew: store4.isEditedPostNew(),
        isDeleting: store4.isDeletingPost(),
        postId: store4.getCurrentPostId(),
        title: store4.getCurrentPostAttribute("title")
      };
    }, []);
    const { trashPost: trashPost3 } = (0, import_data182.useDispatch)(store);
    const [showConfirmDialog, setShowConfirmDialog] = (0, import_element362.useState)(false);
    if (isNew || !postId2) {
      return null;
    }
    const handleConfirm = async () => {
      setShowConfirmDialog(false);
      await trashPost3();
      const item = await registry.resolveSelect(store).getCurrentPost();
      onActionPerformed?.("move-to-trash", [item]);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime582.jsxs)(PostTrashCheck, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime582.jsx)(
        import_components215.Button,
        {
          __next40pxDefaultSize: true,
          className: "editor-post-trash",
          isDestructive: true,
          variant: "secondary",
          isBusy: isDeleting,
          "aria-disabled": isDeleting,
          onClick: isDeleting ? void 0 : () => setShowConfirmDialog(true),
          children: (0, import_i18n287.__)("Move to trash")
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime582.jsx)(
        import_components215.__experimentalConfirmDialog,
        {
          isOpen: showConfirmDialog,
          onConfirm: handleConfirm,
          onCancel: () => setShowConfirmDialog(false),
          confirmButtonText: (0, import_i18n287.__)("Move to trash"),
          size: "small",
          children: (0, import_i18n287.sprintf)(
            // translators: %s: The item's title.
            (0, import_i18n287.__)('Are you sure you want to move "%s" to the trash?'),
            title
          )
        }
      )
    ] });
  }

  // packages/editor/build-module/components/post-url/index.mjs
  var import_data183 = __toESM(require_data(), 1);
  var import_url21 = __toESM(require_url(), 1);
  var import_element363 = __toESM(require_element(), 1);
  var import_block_editor62 = __toESM(require_block_editor(), 1);
  var import_i18n288 = __toESM(require_i18n(), 1);
  var import_components216 = __toESM(require_components(), 1);
  var import_notices28 = __toESM(require_notices(), 1);
  var import_core_data109 = __toESM(require_core_data(), 1);
  var import_compose73 = __toESM(require_compose(), 1);
  var import_jsx_runtime583 = __toESM(require_jsx_runtime(), 1);
  function PostURL({ onClose }) {
    const {
      isEditable,
      postSlug,
      postLink,
      permalinkPrefix,
      permalinkSuffix,
      permalink
    } = (0, import_data183.useSelect)((select9) => {
      const post2 = select9(store).getCurrentPost();
      const postTypeSlug = select9(store).getCurrentPostType();
      const postType2 = select9(import_core_data109.store).getPostType(postTypeSlug);
      const permalinkParts = select9(store).getPermalinkParts();
      const hasPublishAction = post2?._links?.["wp:action-publish"] ?? false;
      return {
        isEditable: select9(store).isPermalinkEditable() && hasPublishAction,
        postSlug: (0, import_url21.safeDecodeURIComponent)(
          select9(store).getEditedPostSlug()
        ),
        viewPostLabel: postType2?.labels?.view_item,
        postLink: post2.link,
        permalinkPrefix: permalinkParts?.prefix,
        permalinkSuffix: permalinkParts?.suffix,
        permalink: (0, import_url21.safeDecodeURIComponent)(
          select9(store).getPermalink()
        )
      };
    }, []);
    const { editPost: editPost2 } = (0, import_data183.useDispatch)(store);
    const { createNotice } = (0, import_data183.useDispatch)(import_notices28.store);
    const [forceEmptyField, setForceEmptyField] = (0, import_element363.useState)(false);
    const copyButtonRef = (0, import_compose73.useCopyToClipboard)(permalink, () => {
      createNotice("info", (0, import_i18n288.__)("Copied Permalink to clipboard."), {
        isDismissible: true,
        type: "snackbar"
      });
    });
    const postUrlSlugDescriptionId = "editor-post-url__slug-description-" + (0, import_compose73.useInstanceId)(PostURL);
    return /* @__PURE__ */ (0, import_jsx_runtime583.jsxs)("div", { className: "editor-post-url", children: [
      /* @__PURE__ */ (0, import_jsx_runtime583.jsx)(
        import_block_editor62.__experimentalInspectorPopoverHeader,
        {
          title: (0, import_i18n288.__)("Slug"),
          onClose
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime583.jsxs)(import_components216.__experimentalVStack, { spacing: 3, children: [
        isEditable && /* @__PURE__ */ (0, import_jsx_runtime583.jsx)("p", { className: "editor-post-url__intro", children: (0, import_element363.createInterpolateElement)(
          (0, import_i18n288.__)(
            "<span>Customize the last part of the Permalink.</span> <a>Learn more.</a>"
          ),
          {
            span: /* @__PURE__ */ (0, import_jsx_runtime583.jsx)("span", { id: postUrlSlugDescriptionId }),
            a: /* @__PURE__ */ (0, import_jsx_runtime583.jsx)(
              import_components216.ExternalLink,
              {
                href: (0, import_i18n288.__)(
                  "https://wordpress.org/documentation/article/page-post-settings-sidebar/#permalink"
                )
              }
            )
          }
        ) }),
        /* @__PURE__ */ (0, import_jsx_runtime583.jsxs)("div", { children: [
          isEditable && /* @__PURE__ */ (0, import_jsx_runtime583.jsxs)(import_jsx_runtime583.Fragment, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime583.jsx)(
              import_components216.__experimentalInputControl,
              {
                prefix: /* @__PURE__ */ (0, import_jsx_runtime583.jsx)(import_components216.__experimentalInputControlPrefixWrapper, { children: "/" }),
                suffix: /* @__PURE__ */ (0, import_jsx_runtime583.jsx)(import_components216.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime583.jsx)(
                  import_components216.Button,
                  {
                    icon: copy_small_default,
                    ref: copyButtonRef,
                    size: "small",
                    label: (0, import_i18n288.__)("Copy")
                  }
                ) }),
                label: (0, import_i18n288.__)("Slug"),
                hideLabelFromVision: true,
                value: forceEmptyField ? "" : postSlug,
                autoComplete: "off",
                spellCheck: "false",
                type: "text",
                className: "editor-post-url__input",
                onChange: (newValue) => {
                  editPost2({ slug: newValue });
                  if (!newValue) {
                    if (!forceEmptyField) {
                      setForceEmptyField(true);
                    }
                    return;
                  }
                  if (forceEmptyField) {
                    setForceEmptyField(false);
                  }
                },
                onBlur: (event) => {
                  editPost2({
                    slug: (0, import_url21.cleanForSlug)(
                      event.target.value
                    )
                  });
                  if (forceEmptyField) {
                    setForceEmptyField(false);
                  }
                },
                "aria-describedby": postUrlSlugDescriptionId
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime583.jsxs)("p", { className: "editor-post-url__permalink", children: [
              /* @__PURE__ */ (0, import_jsx_runtime583.jsx)("span", { className: "editor-post-url__permalink-visual-label", children: (0, import_i18n288.__)("Permalink:") }),
              /* @__PURE__ */ (0, import_jsx_runtime583.jsxs)(
                import_components216.ExternalLink,
                {
                  className: "editor-post-url__link",
                  href: postLink,
                  target: "_blank",
                  children: [
                    /* @__PURE__ */ (0, import_jsx_runtime583.jsx)("span", { className: "editor-post-url__link-prefix", children: permalinkPrefix }),
                    /* @__PURE__ */ (0, import_jsx_runtime583.jsx)("span", { className: "editor-post-url__link-slug", children: postSlug }),
                    /* @__PURE__ */ (0, import_jsx_runtime583.jsx)("span", { className: "editor-post-url__link-suffix", children: permalinkSuffix })
                  ]
                }
              )
            ] })
          ] }),
          !isEditable && /* @__PURE__ */ (0, import_jsx_runtime583.jsx)(
            import_components216.ExternalLink,
            {
              className: "editor-post-url__link",
              href: postLink,
              target: "_blank",
              children: postLink
            }
          )
        ] })
      ] })
    ] });
  }

  // packages/editor/build-module/components/post-url/check.mjs
  var import_data184 = __toESM(require_data(), 1);
  var import_core_data110 = __toESM(require_core_data(), 1);
  function PostURLCheck({ children }) {
    const isVisible2 = (0, import_data184.useSelect)((select9) => {
      const postTypeSlug = select9(store).getCurrentPostType();
      const postType2 = select9(import_core_data110.store).getPostType(postTypeSlug);
      if (!postType2?.viewable) {
        return false;
      }
      const post2 = select9(store).getCurrentPost();
      if (!post2.link) {
        return false;
      }
      const permalinkParts = select9(store).getPermalinkParts();
      if (!permalinkParts) {
        return false;
      }
      return true;
    }, []);
    if (!isVisible2) {
      return null;
    }
    return children;
  }

  // packages/editor/build-module/components/post-url/label.mjs
  var import_data185 = __toESM(require_data(), 1);
  var import_url22 = __toESM(require_url(), 1);
  function PostURLLabel() {
    return usePostURLLabel();
  }
  function usePostURLLabel() {
    const postLink = (0, import_data185.useSelect)(
      (select9) => select9(store).getPermalink(),
      []
    );
    return (0, import_url22.filterURLForDisplay)((0, import_url22.safeDecodeURIComponent)(postLink));
  }

  // packages/editor/build-module/components/post-url/panel.mjs
  var import_element364 = __toESM(require_element(), 1);
  var import_data186 = __toESM(require_data(), 1);
  var import_components217 = __toESM(require_components(), 1);
  var import_i18n289 = __toESM(require_i18n(), 1);
  var import_url23 = __toESM(require_url(), 1);
  var import_core_data111 = __toESM(require_core_data(), 1);
  var import_jsx_runtime584 = __toESM(require_jsx_runtime(), 1);
  function PostURLPanel() {
    const { isFrontPage } = (0, import_data186.useSelect)((select9) => {
      const { getCurrentPostId: getCurrentPostId2 } = select9(store);
      const { getEditedEntityRecord, canUser } = select9(import_core_data111.store);
      const siteSettings = canUser("read", {
        kind: "root",
        name: "site"
      }) ? getEditedEntityRecord("root", "site") : void 0;
      const _id = getCurrentPostId2();
      return {
        isFrontPage: siteSettings?.page_on_front === _id
      };
    }, []);
    const [popoverAnchor, setPopoverAnchor] = (0, import_element364.useState)(null);
    const popoverProps = (0, import_element364.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor]
    );
    const label = isFrontPage ? (0, import_i18n289.__)("Link") : (0, import_i18n289.__)("Slug");
    return /* @__PURE__ */ (0, import_jsx_runtime584.jsx)(PostURLCheck, { children: /* @__PURE__ */ (0, import_jsx_runtime584.jsxs)(post_panel_row_default, { label, ref: setPopoverAnchor, children: [
      !isFrontPage && /* @__PURE__ */ (0, import_jsx_runtime584.jsx)(
        import_components217.Dropdown,
        {
          popoverProps,
          className: "editor-post-url__panel-dropdown",
          contentClassName: "editor-post-url__panel-dialog",
          focusOnMount: true,
          renderToggle: ({ isOpen: isOpen2, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime584.jsx)(
            PostURLToggle,
            {
              isOpen: isOpen2,
              onClick: onToggle
            }
          ),
          renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime584.jsx)(PostURL, { onClose })
        }
      ),
      isFrontPage && /* @__PURE__ */ (0, import_jsx_runtime584.jsx)(FrontPageLink, {})
    ] }) });
  }
  function PostURLToggle({ isOpen: isOpen2, onClick }) {
    const { slug } = (0, import_data186.useSelect)((select9) => {
      return {
        slug: select9(store).getEditedPostSlug()
      };
    }, []);
    const decodedSlug = (0, import_url23.safeDecodeURIComponent)(slug);
    return /* @__PURE__ */ (0, import_jsx_runtime584.jsx)(
      import_components217.Button,
      {
        size: "compact",
        className: "editor-post-url__panel-toggle",
        variant: "tertiary",
        "aria-expanded": isOpen2,
        "aria-label": (
          // translators: %s: Current post link.
          (0, import_i18n289.sprintf)((0, import_i18n289.__)("Change link: %s"), decodedSlug)
        ),
        onClick,
        children: /* @__PURE__ */ (0, import_jsx_runtime584.jsx)(import_jsx_runtime584.Fragment, { children: decodedSlug })
      }
    );
  }
  function FrontPageLink() {
    const { postLink } = (0, import_data186.useSelect)((select9) => {
      const { getCurrentPost: getCurrentPost2 } = select9(store);
      return {
        postLink: getCurrentPost2()?.link
      };
    }, []);
    return /* @__PURE__ */ (0, import_jsx_runtime584.jsx)(
      import_components217.ExternalLink,
      {
        className: "editor-post-url__front-page-link",
        href: postLink,
        target: "_blank",
        children: postLink
      }
    );
  }

  // packages/editor/build-module/components/post-visibility/check.mjs
  var import_data187 = __toESM(require_data(), 1);
  function PostVisibilityCheck({ render: render5 }) {
    const canEdit = (0, import_data187.useSelect)((select9) => {
      return select9(store).getCurrentPost()._links?.["wp:action-publish"] ?? false;
    });
    return render5({ canEdit });
  }

  // packages/editor/build-module/components/table-of-contents/index.mjs
  var import_i18n293 = __toESM(require_i18n(), 1);
  var import_components218 = __toESM(require_components(), 1);
  var import_data192 = __toESM(require_data(), 1);
  var import_element366 = __toESM(require_element(), 1);
  var import_block_editor64 = __toESM(require_block_editor(), 1);

  // packages/editor/build-module/components/table-of-contents/panel.mjs
  var import_i18n292 = __toESM(require_i18n(), 1);
  var import_data191 = __toESM(require_data(), 1);
  var import_block_editor63 = __toESM(require_block_editor(), 1);

  // packages/editor/build-module/components/word-count/index.mjs
  var import_data188 = __toESM(require_data(), 1);
  var import_i18n290 = __toESM(require_i18n(), 1);
  var import_wordcount2 = __toESM(require_wordcount(), 1);
  var import_jsx_runtime585 = __toESM(require_jsx_runtime(), 1);
  function WordCount() {
    const content = (0, import_data188.useSelect)(
      (select9) => select9(store).getEditedPostAttribute("content"),
      []
    );
    const wordCountType = (0, import_i18n290._x)("words", "Word count type. Do not translate!");
    return /* @__PURE__ */ (0, import_jsx_runtime585.jsx)("span", { className: "word-count", children: (0, import_wordcount2.count)(content, wordCountType) });
  }

  // packages/editor/build-module/components/time-to-read/index.mjs
  var import_data189 = __toESM(require_data(), 1);
  var import_i18n291 = __toESM(require_i18n(), 1);
  var import_wordcount3 = __toESM(require_wordcount(), 1);
  var import_element365 = __toESM(require_element(), 1);
  var import_jsx_runtime586 = __toESM(require_jsx_runtime(), 1);
  var AVERAGE_READING_RATE2 = 189;
  function TimeToRead() {
    const content = (0, import_data189.useSelect)(
      (select9) => select9(store).getEditedPostAttribute("content"),
      []
    );
    const wordCountType = (0, import_i18n291._x)("words", "Word count type. Do not translate!");
    const minutesToRead = Math.round(
      (0, import_wordcount3.count)(content, wordCountType) / AVERAGE_READING_RATE2
    );
    const minutesToReadString = minutesToRead === 0 ? (0, import_element365.createInterpolateElement)((0, import_i18n291.__)("<span>< 1</span> minute"), {
      span: /* @__PURE__ */ (0, import_jsx_runtime586.jsx)("span", {})
    }) : (0, import_element365.createInterpolateElement)(
      (0, import_i18n291.sprintf)(
        /* translators: %s: the number of minutes to read the post. */
        (0, import_i18n291._n)(
          "<span>%s</span> minute",
          "<span>%s</span> minutes",
          minutesToRead
        ),
        minutesToRead
      ),
      {
        span: /* @__PURE__ */ (0, import_jsx_runtime586.jsx)("span", {})
      }
    );
    return /* @__PURE__ */ (0, import_jsx_runtime586.jsx)("span", { className: "time-to-read", children: minutesToReadString });
  }

  // packages/editor/build-module/components/character-count/index.mjs
  var import_data190 = __toESM(require_data(), 1);
  var import_wordcount4 = __toESM(require_wordcount(), 1);
  function CharacterCount() {
    const content = (0, import_data190.useSelect)(
      (select9) => select9(store).getEditedPostAttribute("content"),
      []
    );
    return (0, import_wordcount4.count)(content, "characters_including_spaces");
  }

  // packages/editor/build-module/components/table-of-contents/panel.mjs
  var import_jsx_runtime587 = __toESM(require_jsx_runtime(), 1);
  function TableOfContentsPanel({ hasOutlineItemsDisabled, onRequestClose }) {
    const { headingCount, paragraphCount, numberOfBlocks } = (0, import_data191.useSelect)(
      (select9) => {
        const { getGlobalBlockCount: getGlobalBlockCount2 } = select9(import_block_editor63.store);
        return {
          headingCount: getGlobalBlockCount2("core/heading"),
          paragraphCount: getGlobalBlockCount2("core/paragraph"),
          numberOfBlocks: getGlobalBlockCount2()
        };
      },
      []
    );
    return (
      /*
       * Disable reason: The `list` ARIA role is redundant but
       * Safari+VoiceOver won't announce the list otherwise.
       */
      /* eslint-disable jsx-a11y/no-redundant-roles */
      /* @__PURE__ */ (0, import_jsx_runtime587.jsxs)(import_jsx_runtime587.Fragment, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime587.jsx)(
          "div",
          {
            className: "table-of-contents__wrapper",
            role: "note",
            "aria-label": (0, import_i18n292.__)("Document Statistics"),
            tabIndex: "0",
            children: /* @__PURE__ */ (0, import_jsx_runtime587.jsxs)("ul", { role: "list", className: "table-of-contents__counts", children: [
              /* @__PURE__ */ (0, import_jsx_runtime587.jsxs)("li", { className: "table-of-contents__count", children: [
                (0, import_i18n292.__)("Words"),
                /* @__PURE__ */ (0, import_jsx_runtime587.jsx)(WordCount, {})
              ] }),
              /* @__PURE__ */ (0, import_jsx_runtime587.jsxs)("li", { className: "table-of-contents__count", children: [
                (0, import_i18n292.__)("Characters"),
                /* @__PURE__ */ (0, import_jsx_runtime587.jsx)("span", { className: "table-of-contents__number", children: /* @__PURE__ */ (0, import_jsx_runtime587.jsx)(CharacterCount, {}) })
              ] }),
              /* @__PURE__ */ (0, import_jsx_runtime587.jsxs)("li", { className: "table-of-contents__count", children: [
                (0, import_i18n292.__)("Time to read"),
                /* @__PURE__ */ (0, import_jsx_runtime587.jsx)(TimeToRead, {})
              ] }),
              /* @__PURE__ */ (0, import_jsx_runtime587.jsxs)("li", { className: "table-of-contents__count", children: [
                (0, import_i18n292.__)("Headings"),
                /* @__PURE__ */ (0, import_jsx_runtime587.jsx)("span", { className: "table-of-contents__number", children: headingCount })
              ] }),
              /* @__PURE__ */ (0, import_jsx_runtime587.jsxs)("li", { className: "table-of-contents__count", children: [
                (0, import_i18n292.__)("Paragraphs"),
                /* @__PURE__ */ (0, import_jsx_runtime587.jsx)("span", { className: "table-of-contents__number", children: paragraphCount })
              ] }),
              /* @__PURE__ */ (0, import_jsx_runtime587.jsxs)("li", { className: "table-of-contents__count", children: [
                (0, import_i18n292.__)("Blocks"),
                /* @__PURE__ */ (0, import_jsx_runtime587.jsx)("span", { className: "table-of-contents__number", children: numberOfBlocks })
              ] })
            ] })
          }
        ),
        headingCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime587.jsxs)(import_jsx_runtime587.Fragment, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime587.jsx)("hr", {}),
          /* @__PURE__ */ (0, import_jsx_runtime587.jsx)("h2", { className: "table-of-contents__title", children: (0, import_i18n292.__)("Document Outline") }),
          /* @__PURE__ */ (0, import_jsx_runtime587.jsx)(
            DocumentOutline,
            {
              onSelect: onRequestClose,
              hasOutlineItemsDisabled
            }
          )
        ] })
      ] })
    );
  }
  var panel_default3 = TableOfContentsPanel;

  // packages/editor/build-module/components/table-of-contents/index.mjs
  var import_jsx_runtime588 = __toESM(require_jsx_runtime(), 1);
  function TableOfContents({ hasOutlineItemsDisabled, repositionDropdown, ...props }, ref) {
    const hasBlocks = (0, import_data192.useSelect)(
      (select9) => !!select9(import_block_editor64.store).getBlockCount(),
      []
    );
    return /* @__PURE__ */ (0, import_jsx_runtime588.jsx)(
      import_components218.Dropdown,
      {
        popoverProps: {
          placement: repositionDropdown ? "right" : "bottom"
        },
        className: "table-of-contents",
        contentClassName: "table-of-contents__popover",
        renderToggle: ({ isOpen: isOpen2, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime588.jsx)(
          import_components218.Button,
          {
            __next40pxDefaultSize: true,
            ...props,
            ref,
            onClick: hasBlocks ? onToggle : void 0,
            icon: info_default,
            "aria-expanded": isOpen2,
            "aria-haspopup": "true",
            label: (0, import_i18n293.__)("Details"),
            tooltipPosition: "bottom",
            "aria-disabled": !hasBlocks
          }
        ),
        renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime588.jsx)(
          panel_default3,
          {
            onRequestClose: onClose,
            hasOutlineItemsDisabled
          }
        )
      }
    );
  }
  var table_of_contents_default = (0, import_element366.forwardRef)(TableOfContents);

  // packages/editor/build-module/components/unsaved-changes-warning/index.mjs
  var import_i18n294 = __toESM(require_i18n(), 1);
  var import_element367 = __toESM(require_element(), 1);
  var import_data193 = __toESM(require_data(), 1);
  var import_core_data112 = __toESM(require_core_data(), 1);
  function UnsavedChangesWarning() {
    const { __experimentalGetDirtyEntityRecords } = (0, import_data193.useSelect)(import_core_data112.store);
    (0, import_element367.useEffect)(() => {
      const warnIfUnsavedChanges = (event) => {
        const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
        if (dirtyEntityRecords.length > 0) {
          event.returnValue = (0, import_i18n294.__)(
            "You have unsaved changes. If you proceed, they will be lost."
          );
          return event.returnValue;
        }
      };
      window.addEventListener("beforeunload", warnIfUnsavedChanges);
      return () => {
        window.removeEventListener("beforeunload", warnIfUnsavedChanges);
      };
    }, [__experimentalGetDirtyEntityRecords]);
    return null;
  }

  // packages/editor/build-module/components/deprecated.mjs
  var import_deprecated16 = __toESM(require_deprecated(), 1);
  var import_element368 = __toESM(require_element(), 1);
  var import_block_editor65 = __toESM(require_block_editor(), 1);
  var import_server_side_render = __toESM(require_server_side_render(), 1);
  var import_jsx_runtime589 = __toESM(require_jsx_runtime(), 1);
  function deprecateComponent(name2, Wrapped, staticsToHoist = []) {
    const Component3 = (0, import_element368.forwardRef)((props, ref) => {
      (0, import_deprecated16.default)("wp.editor." + name2, {
        since: "5.3",
        alternative: "wp.blockEditor." + name2,
        version: "6.2"
      });
      return /* @__PURE__ */ (0, import_jsx_runtime589.jsx)(Wrapped, { ref, ...props });
    });
    staticsToHoist.forEach((staticName) => {
      Component3[staticName] = deprecateComponent(
        name2 + "." + staticName,
        Wrapped[staticName]
      );
    });
    return Component3;
  }
  function deprecateFunction(name2, func) {
    return (...args) => {
      (0, import_deprecated16.default)("wp.editor." + name2, {
        since: "5.3",
        alternative: "wp.blockEditor." + name2,
        version: "6.2"
      });
      return func(...args);
    };
  }
  var RichText = deprecateComponent("RichText", import_block_editor65.RichText, ["Content"]);
  RichText.isEmpty = deprecateFunction(
    "RichText.isEmpty",
    import_block_editor65.RichText.isEmpty
  );
  var Autocomplete = deprecateComponent(
    "Autocomplete",
    import_block_editor65.Autocomplete
  );
  var AlignmentToolbar = deprecateComponent(
    "AlignmentToolbar",
    import_block_editor65.AlignmentToolbar
  );
  var BlockAlignmentToolbar = deprecateComponent(
    "BlockAlignmentToolbar",
    import_block_editor65.BlockAlignmentToolbar
  );
  var BlockControls = deprecateComponent(
    "BlockControls",
    import_block_editor65.BlockControls,
    ["Slot"]
  );
  var BlockEdit = deprecateComponent("BlockEdit", import_block_editor65.BlockEdit);
  var BlockEditorKeyboardShortcuts2 = deprecateComponent(
    "BlockEditorKeyboardShortcuts",
    import_block_editor65.BlockEditorKeyboardShortcuts
  );
  var BlockFormatControls = deprecateComponent(
    "BlockFormatControls",
    import_block_editor65.BlockFormatControls,
    ["Slot"]
  );
  var BlockIcon3 = deprecateComponent("BlockIcon", import_block_editor65.BlockIcon);
  var BlockInspector = deprecateComponent(
    "BlockInspector",
    import_block_editor65.BlockInspector
  );
  var BlockList4 = deprecateComponent("BlockList", import_block_editor65.BlockList);
  var BlockMover = deprecateComponent("BlockMover", import_block_editor65.BlockMover);
  var BlockNavigationDropdown = deprecateComponent(
    "BlockNavigationDropdown",
    import_block_editor65.BlockNavigationDropdown
  );
  var BlockSelectionClearer = deprecateComponent(
    "BlockSelectionClearer",
    import_block_editor65.BlockSelectionClearer
  );
  var BlockSettingsMenu = deprecateComponent(
    "BlockSettingsMenu",
    import_block_editor65.BlockSettingsMenu
  );
  var BlockTitle = deprecateComponent("BlockTitle", import_block_editor65.BlockTitle);
  var BlockToolbar = deprecateComponent(
    "BlockToolbar",
    import_block_editor65.BlockToolbar
  );
  var ColorPalette3 = deprecateComponent(
    "ColorPalette",
    import_block_editor65.ColorPalette
  );
  var ContrastChecker = deprecateComponent(
    "ContrastChecker",
    import_block_editor65.ContrastChecker
  );
  var CopyHandler = deprecateComponent("CopyHandler", import_block_editor65.CopyHandler);
  var DefaultBlockAppender = deprecateComponent(
    "DefaultBlockAppender",
    import_block_editor65.DefaultBlockAppender
  );
  var FontSizePicker = deprecateComponent(
    "FontSizePicker",
    import_block_editor65.FontSizePicker
  );
  var Inserter = deprecateComponent("Inserter", import_block_editor65.Inserter);
  var InnerBlocks = deprecateComponent("InnerBlocks", import_block_editor65.InnerBlocks, [
    "ButtonBlockAppender",
    "DefaultBlockAppender",
    "Content"
  ]);
  var InspectorAdvancedControls = deprecateComponent(
    "InspectorAdvancedControls",
    import_block_editor65.InspectorAdvancedControls,
    ["Slot"]
  );
  var InspectorControls = deprecateComponent(
    "InspectorControls",
    import_block_editor65.InspectorControls,
    ["Slot"]
  );
  var PanelColorSettings = deprecateComponent(
    "PanelColorSettings",
    import_block_editor65.PanelColorSettings
  );
  var PlainText = deprecateComponent("PlainText", import_block_editor65.PlainText);
  var RichTextShortcut = deprecateComponent(
    "RichTextShortcut",
    import_block_editor65.RichTextShortcut
  );
  var RichTextToolbarButton = deprecateComponent(
    "RichTextToolbarButton",
    import_block_editor65.RichTextToolbarButton
  );
  var __unstableRichTextInputEvent = deprecateComponent(
    "__unstableRichTextInputEvent",
    import_block_editor65.__unstableRichTextInputEvent
  );
  var MediaPlaceholder = deprecateComponent(
    "MediaPlaceholder",
    import_block_editor65.MediaPlaceholder
  );
  var MediaUpload3 = deprecateComponent("MediaUpload", import_block_editor65.MediaUpload);
  var MediaUploadCheck2 = deprecateComponent(
    "MediaUploadCheck",
    import_block_editor65.MediaUploadCheck
  );
  var MultiSelectScrollIntoView = deprecateComponent(
    "MultiSelectScrollIntoView",
    import_block_editor65.MultiSelectScrollIntoView
  );
  var NavigableToolbar = deprecateComponent(
    "NavigableToolbar",
    import_block_editor65.NavigableToolbar
  );
  var ObserveTyping = deprecateComponent(
    "ObserveTyping",
    import_block_editor65.ObserveTyping
  );
  var SkipToSelectedBlock = deprecateComponent(
    "SkipToSelectedBlock",
    import_block_editor65.SkipToSelectedBlock
  );
  var URLInput = deprecateComponent("URLInput", import_block_editor65.URLInput);
  var URLInputButton = deprecateComponent(
    "URLInputButton",
    import_block_editor65.URLInputButton
  );
  var URLPopover = deprecateComponent("URLPopover", import_block_editor65.URLPopover);
  var Warning = deprecateComponent("Warning", import_block_editor65.Warning);
  var WritingFlow = deprecateComponent("WritingFlow", import_block_editor65.WritingFlow);
  var createCustomColorsHOC = deprecateFunction(
    "createCustomColorsHOC",
    import_block_editor65.createCustomColorsHOC
  );
  var getColorClassName2 = deprecateFunction(
    "getColorClassName",
    import_block_editor65.getColorClassName
  );
  var getColorObjectByAttributeValues = deprecateFunction(
    "getColorObjectByAttributeValues",
    import_block_editor65.getColorObjectByAttributeValues
  );
  var getColorObjectByColorValue = deprecateFunction(
    "getColorObjectByColorValue",
    import_block_editor65.getColorObjectByColorValue
  );
  var getFontSize = deprecateFunction("getFontSize", import_block_editor65.getFontSize);
  var getFontSizeClass = deprecateFunction(
    "getFontSizeClass",
    import_block_editor65.getFontSizeClass
  );
  var withColorContext = deprecateFunction(
    "withColorContext",
    import_block_editor65.withColorContext
  );
  var withColors = deprecateFunction("withColors", import_block_editor65.withColors);
  var withFontSizes = deprecateFunction(
    "withFontSizes",
    import_block_editor65.withFontSizes
  );

  // packages/editor/build-module/components/index.mjs
  var VisualEditorGlobalKeyboardShortcuts = EditorKeyboardShortcuts;
  var TextEditorGlobalKeyboardShortcuts = EditorKeyboardShortcuts;
  var { EntitiesSavedStates, useEntitiesSavedStatesIsDirty } = unlock(import_core_data113.privateApis);

  // packages/editor/build-module/hooks/default-autocompleters.mjs
  function setDefaultCompleters(completers = []) {
    completers.push({ ...link_default2 }, { ...user_default });
    return completers;
  }
  (0, import_hooks55.addFilter)(
    "editor.Autocomplete.completers",
    "editor/autocompleters/set-default-completers",
    setDefaultCompleters
  );

  // packages/editor/build-module/hooks/media-upload.mjs
  var import_element369 = __toESM(require_element(), 1);
  var import_hooks56 = __toESM(require_hooks(), 1);
  var import_deprecated17 = __toESM(require_deprecated(), 1);
  var import_data194 = __toESM(require_data(), 1);
  var import_core_data114 = __toESM(require_core_data(), 1);
  var import_media_utils8 = __toESM(require_media_utils(), 1);
  var import_jsx_runtime590 = __toESM(require_jsx_runtime(), 1);
  var { MediaUploadModal: MediaUploadModalComponent } = unlock(
    import_media_utils8.privateApis
  );
  function MediaUploadModalWithPostContext(props) {
    const { postId: postId2, postType: postType2 } = (0, import_data194.useSelect)((select9) => {
      const { getCurrentPostId: getCurrentPostId2, getCurrentPostType: getCurrentPostType2 } = select9(store);
      const currentPostId = getCurrentPostId2();
      const currentPostType = getCurrentPostType2();
      const postTypeObject = currentPostType ? select9(import_core_data114.store).getPostType(currentPostType) : void 0;
      if (typeof currentPostId !== "number" || !postTypeObject?.viewable) {
        return {};
      }
      return { postId: currentPostId, postType: currentPostType };
    }, []);
    return /* @__PURE__ */ (0, import_jsx_runtime590.jsx)(
      MediaUploadModalComponent,
      {
        ...props,
        postId: postId2,
        postType: postType2
      }
    );
  }
  var MediaUploadModalWrapper = class extends import_element369.Component {
    constructor(props) {
      super(props);
      this.state = {
        isOpen: false
      };
      this.openModal = this.openModal.bind(this);
      this.closeModal = this.closeModal.bind(this);
    }
    openModal() {
      this.setState({ isOpen: true });
    }
    closeModal() {
      this.setState({ isOpen: false });
      this.props.onClose?.();
    }
    render() {
      const {
        allowedTypes,
        multiple,
        value,
        onSelect,
        title,
        modalClass,
        render: render5
      } = this.props;
      const { isOpen: isOpen2 } = this.state;
      return /* @__PURE__ */ (0, import_jsx_runtime590.jsxs)(import_jsx_runtime590.Fragment, { children: [
        render5({ open: this.openModal }),
        /* @__PURE__ */ (0, import_jsx_runtime590.jsx)(
          MediaUploadModalWithPostContext,
          {
            allowedTypes,
            multiple: !!multiple,
            value,
            onSelect: (media) => {
              onSelect(media);
              this.closeModal();
            },
            onClose: this.closeModal,
            title,
            isOpen: isOpen2,
            modalClass
          }
        )
      ] });
    }
  };
  if (window.__experimentalDataViewsMediaModal) {
    (0, import_hooks56.addFilter)(
      "editor.MediaUpload",
      "core/editor/components/media-upload",
      () => {
        (0, import_deprecated17.default)("Extending MediaUpload as a class component", {
          since: "7.0",
          version: "7.2",
          hint: "MediaUpload will become a function component in WordPress 7.2 Please update any custom implementations to use function components instead."
        });
        return MediaUploadModalWrapper;
      }
    );
  } else {
    (0, import_hooks56.addFilter)(
      "editor.MediaUpload",
      "core/editor/components/media-upload",
      () => {
        return import_media_utils8.MediaUpload;
      }
    );
  }

  // packages/editor/build-module/hooks/pattern-overrides.mjs
  var import_hooks57 = __toESM(require_hooks(), 1);
  var import_patterns9 = __toESM(require_patterns(), 1);
  var import_compose74 = __toESM(require_compose(), 1);
  var import_block_editor66 = __toESM(require_block_editor(), 1);
  var import_data195 = __toESM(require_data(), 1);
  var import_blocks28 = __toESM(require_blocks(), 1);
  var import_jsx_runtime591 = __toESM(require_jsx_runtime(), 1);
  var {
    PatternOverridesControls,
    ResetOverridesControl,
    PATTERN_TYPES: PATTERN_TYPES5,
    PATTERN_SYNC_TYPES: PATTERN_SYNC_TYPES2
  } = unlock(import_patterns9.privateApis);
  var withPatternOverrideControls = (0, import_compose74.createHigherOrderComponent)(
    (BlockEdit2) => (props) => {
      const isSupportedBlock = (0, import_data195.useSelect)(
        (select9) => {
          const { __experimentalBlockBindingsSupportedAttributes } = select9(import_block_editor66.store).getSettings();
          return !!__experimentalBlockBindingsSupportedAttributes?.[props.name];
        },
        [props.name]
      );
      return /* @__PURE__ */ (0, import_jsx_runtime591.jsxs)(import_jsx_runtime591.Fragment, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime591.jsx)(BlockEdit2, { ...props }, "edit"),
        props.isSelected && isSupportedBlock && /* @__PURE__ */ (0, import_jsx_runtime591.jsx)(ControlsWithStoreSubscription, { ...props })
      ] });
    },
    "withPatternOverrideControls"
  );
  function ControlsWithStoreSubscription(props) {
    const blockEditingMode = (0, import_block_editor66.useBlockEditingMode)();
    const { hasPatternOverridesSource, isEditingSyncedPattern } = (0, import_data195.useSelect)(
      (select9) => {
        const { getCurrentPostType: getCurrentPostType2, getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
        return {
          // For editing link to the site editor if the theme and user permissions support it.
          hasPatternOverridesSource: !!(0, import_blocks28.getBlockBindingsSource)(
            "core/pattern-overrides"
          ),
          isEditingSyncedPattern: getCurrentPostType2() === PATTERN_TYPES5.user && getEditedPostAttribute2("meta")?.wp_pattern_sync_status !== PATTERN_SYNC_TYPES2.unsynced && getEditedPostAttribute2("wp_pattern_sync_status") !== PATTERN_SYNC_TYPES2.unsynced
        };
      },
      []
    );
    const bindings = props.attributes.metadata?.bindings;
    const hasPatternBindings = !!bindings && Object.values(bindings).some(
      (binding) => binding.source === "core/pattern-overrides"
    );
    const shouldShowPatternOverridesControls = isEditingSyncedPattern && blockEditingMode === "default";
    const shouldShowResetOverridesControl = !isEditingSyncedPattern && !!props.attributes.metadata?.name && blockEditingMode !== "disabled" && hasPatternBindings;
    if (!hasPatternOverridesSource) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime591.jsxs)(import_jsx_runtime591.Fragment, { children: [
      shouldShowPatternOverridesControls && /* @__PURE__ */ (0, import_jsx_runtime591.jsx)(PatternOverridesControls, { ...props }),
      shouldShowResetOverridesControl && /* @__PURE__ */ (0, import_jsx_runtime591.jsx)(ResetOverridesControl, { ...props })
    ] });
  }
  (0, import_hooks57.addFilter)(
    "editor.BlockEdit",
    "core/editor/with-pattern-override-controls",
    withPatternOverrideControls
  );

  // packages/editor/build-module/hooks/navigation-link-view-button.mjs
  var import_hooks58 = __toESM(require_hooks(), 1);
  var import_compose75 = __toESM(require_compose(), 1);
  var import_element370 = __toESM(require_element(), 1);
  var import_i18n295 = __toESM(require_i18n(), 1);
  var import_block_editor67 = __toESM(require_block_editor(), 1);
  var import_components220 = __toESM(require_components(), 1);
  var import_data196 = __toESM(require_data(), 1);
  var import_jsx_runtime592 = __toESM(require_jsx_runtime(), 1);
  var SUPPORTED_BLOCKS = ["core/navigation-link", "core/navigation-submenu"];
  function NavigationViewButton({ attributes }) {
    const { kind, id, type } = attributes;
    const blockEditingMode = (0, import_block_editor67.useBlockEditingMode)();
    const onNavigateToEntityRecord = (0, import_data196.useSelect)(
      (select9) => select9(import_block_editor67.store).getSettings().onNavigateToEntityRecord,
      []
    );
    const onViewPage = (0, import_element370.useCallback)(() => {
      if (kind === "post-type" && type === "page" && id && onNavigateToEntityRecord) {
        onNavigateToEntityRecord({
          postId: id,
          postType: type
        });
      }
    }, [kind, id, type, onNavigateToEntityRecord]);
    if (kind !== "post-type" || type !== "page" || !id || !onNavigateToEntityRecord || blockEditingMode !== "contentOnly") {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime592.jsx)(import_block_editor67.__unstableBlockToolbarLastItem, { children: /* @__PURE__ */ (0, import_jsx_runtime592.jsx)(import_components220.ToolbarGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime592.jsx)(
      import_components220.ToolbarButton,
      {
        name: "view",
        title: (0, import_i18n295.__)("View"),
        onClick: onViewPage,
        children: (0, import_i18n295.__)("View")
      }
    ) }) });
  }
  var withNavigationViewButton = (0, import_compose75.createHigherOrderComponent)(
    (BlockEdit2) => (props) => {
      const isSupportedBlock = SUPPORTED_BLOCKS.includes(props.name);
      return /* @__PURE__ */ (0, import_jsx_runtime592.jsxs)(import_jsx_runtime592.Fragment, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime592.jsx)(BlockEdit2, { ...props }, "edit"),
        props.isSelected && isSupportedBlock && /* @__PURE__ */ (0, import_jsx_runtime592.jsx)(NavigationViewButton, { ...props })
      ] });
    },
    "withNavigationViewButton"
  );
  (0, import_hooks58.addFilter)(
    "editor.BlockEdit",
    "core/editor/with-navigation-view-button",
    withNavigationViewButton
  );

  // packages/editor/build-module/hooks/template-part-navigation-edit-button.mjs
  var import_hooks59 = __toESM(require_hooks(), 1);
  var import_compose76 = __toESM(require_compose(), 1);
  var import_element371 = __toESM(require_element(), 1);
  var import_i18n296 = __toESM(require_i18n(), 1);
  var import_block_editor68 = __toESM(require_block_editor(), 1);
  var import_components221 = __toESM(require_components(), 1);
  var import_data197 = __toESM(require_data(), 1);
  var import_jsx_runtime593 = __toESM(require_jsx_runtime(), 1);
  var NAVIGATION_BLOCK_NAME = "core/navigation";
  var TEMPLATE_PART_BLOCK_NAME = "core/template-part";
  var BLOCK_INSPECTOR_AREA = "edit-post/block";
  function TemplatePartNavigationEditButton({ clientId }) {
    const registry = (0, import_data197.useRegistry)();
    const { selectBlock: selectBlock2, flashBlock } = (0, import_data197.useDispatch)(import_block_editor68.store);
    const { requestInspectorTab } = unlock((0, import_data197.useDispatch)(import_block_editor68.store));
    const { enableComplementaryArea: enableComplementaryArea2 } = (0, import_data197.useDispatch)(store3);
    const {
      hasNavigationBlocks,
      firstNavigationBlockId,
      isNavigationEditable
    } = (0, import_data197.useSelect)(
      (select9) => {
        const {
          getClientIdsOfDescendants: getClientIdsOfDescendants2,
          getBlockName: getBlockName2,
          getBlockEditingMode
        } = select9(import_block_editor68.store);
        const descendants = getClientIdsOfDescendants2(clientId);
        const navigationBlocksInTemplatePart = descendants.filter(
          (blockId) => getBlockName2(blockId) === NAVIGATION_BLOCK_NAME
        );
        const _hasNavigationBlocks = navigationBlocksInTemplatePart.length > 0;
        const _firstNavigationBlockId = _hasNavigationBlocks ? navigationBlocksInTemplatePart[0] : null;
        return {
          hasNavigationBlocks: _hasNavigationBlocks,
          firstNavigationBlockId: _firstNavigationBlockId,
          // We can't use the useBlockEditingMode hook here because the current
          // context is the template part, not the navigation block.
          isNavigationEditable: getBlockEditingMode(_firstNavigationBlockId) !== "disabled"
        };
      },
      [clientId]
    );
    const onEditNavigation = (0, import_element371.useCallback)(() => {
      if (firstNavigationBlockId) {
        registry.batch(() => {
          selectBlock2(firstNavigationBlockId);
          flashBlock(firstNavigationBlockId, 500);
          enableComplementaryArea2("core", BLOCK_INSPECTOR_AREA);
          requestInspectorTab("list", {
            openPanel: firstNavigationBlockId
          });
        });
      }
    }, [
      firstNavigationBlockId,
      registry,
      selectBlock2,
      flashBlock,
      enableComplementaryArea2,
      requestInspectorTab
    ]);
    if (!hasNavigationBlocks || !isNavigationEditable) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime593.jsx)(import_block_editor68.__unstableBlockToolbarLastItem, { children: /* @__PURE__ */ (0, import_jsx_runtime593.jsx)(import_components221.ToolbarGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime593.jsx)(
      import_components221.ToolbarButton,
      {
        label: (0, import_i18n296.__)("Edit navigation"),
        onClick: onEditNavigation,
        children: (0, import_i18n296.__)("Edit navigation")
      }
    ) }) });
  }
  var withTemplatePartNavigationEditButton = (0, import_compose76.createHigherOrderComponent)(
    (BlockEdit2) => (props) => {
      const isTemplatePart2 = props.name === TEMPLATE_PART_BLOCK_NAME;
      return /* @__PURE__ */ (0, import_jsx_runtime593.jsxs)(import_jsx_runtime593.Fragment, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime593.jsx)(BlockEdit2, { ...props }, "edit"),
        props.isSelected && isTemplatePart2 && /* @__PURE__ */ (0, import_jsx_runtime593.jsx)(
          TemplatePartNavigationEditButton,
          {
            clientId: props.clientId
          }
        )
      ] });
    },
    "withTemplatePartNavigationEditButton"
  );
  (0, import_hooks59.addFilter)(
    "editor.BlockEdit",
    "core/editor/with-template-part-navigation-edit-button",
    withTemplatePartNavigationEditButton
  );

  // packages/editor/build-module/hooks/push-changes-to-global-styles/index.mjs
  var import_hooks61 = __toESM(require_hooks(), 1);
  var import_compose77 = __toESM(require_compose(), 1);
  var import_block_editor69 = __toESM(require_block_editor(), 1);
  var import_components223 = __toESM(require_components(), 1);
  var import_i18n299 = __toESM(require_i18n(), 1);
  var import_blocks30 = __toESM(require_blocks(), 1);
  var import_element374 = __toESM(require_element(), 1);
  var import_data198 = __toESM(require_data(), 1);
  var import_notices29 = __toESM(require_notices(), 1);
  var import_core_data115 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/utils/set-nested-value.mjs
  function setNestedValue(object, path, value) {
    if (!object || typeof object !== "object") {
      return object;
    }
    path.reduce((acc, key, idx) => {
      if (acc[key] === void 0) {
        if (Number.isInteger(path[idx + 1])) {
          acc[key] = [];
        } else {
          acc[key] = {};
        }
      }
      if (idx === path.length - 1) {
        acc[key] = value;
      }
      return acc[key];
    }, object);
    return object;
  }

  // packages/editor/build-module/hooks/push-changes-to-global-styles/apply-globally-modal.mjs
  var import_components222 = __toESM(require_components(), 1);
  var import_i18n298 = __toESM(require_i18n(), 1);
  var import_blocks29 = __toESM(require_blocks(), 1);
  var import_element373 = __toESM(require_element(), 1);

  // packages/editor/build-module/hooks/push-changes-to-global-styles/use-review-rows.mjs
  var import_element372 = __toESM(require_element(), 1);

  // packages/editor/build-module/hooks/push-changes-to-global-styles/style-labels.mjs
  var import_i18n297 = __toESM(require_i18n(), 1);
  var STYLE_LABELS = {
    // Typography.
    "typography.fontFamily": (0, import_i18n297.__)("Font family"),
    "typography.fontSize": (0, import_i18n297.__)("Font size"),
    "typography.fontStyle": (0, import_i18n297.__)("Font style"),
    "typography.fontWeight": (0, import_i18n297.__)("Font weight"),
    "typography.lineHeight": (0, import_i18n297.__)("Line height"),
    "typography.letterSpacing": (0, import_i18n297.__)("Letter spacing"),
    "typography.textDecoration": (0, import_i18n297.__)("Text decoration"),
    "typography.textTransform": (0, import_i18n297.__)("Letter case"),
    "typography.textColumns": (0, import_i18n297.__)("Text columns"),
    "typography.writingMode": (0, import_i18n297.__)("Orientation"),
    // Color.
    "color.text": (0, import_i18n297.__)("Text color"),
    "color.background": (0, import_i18n297.__)("Background color"),
    "color.gradient": (0, import_i18n297.__)("Gradient"),
    "elements.link.color.text": (0, import_i18n297.__)("Link color"),
    // Spacing.
    "spacing.padding": (0, import_i18n297.__)("Padding"),
    "spacing.margin": (0, import_i18n297.__)("Margin"),
    "spacing.blockGap": (0, import_i18n297.__)("Block spacing"),
    // Border.
    border: (0, import_i18n297.__)("Border"),
    "border.top": (0, import_i18n297.__)("Border top"),
    "border.right": (0, import_i18n297.__)("Border right"),
    "border.bottom": (0, import_i18n297.__)("Border bottom"),
    "border.left": (0, import_i18n297.__)("Border left"),
    "border.color": (0, import_i18n297.__)("Border color"),
    "border.width": (0, import_i18n297.__)("Border width"),
    "border.style": (0, import_i18n297.__)("Border style"),
    "border.radius": (0, import_i18n297.__)("Border radius"),
    // Dimensions.
    "dimensions.minHeight": (0, import_i18n297.__)("Minimum height"),
    "dimensions.aspectRatio": (0, import_i18n297.__)("Aspect ratio")
  };
  function getStyleLabel(path) {
    const key = path.join(".");
    if (STYLE_LABELS[key]) {
      return STYLE_LABELS[key];
    }
    return capitalCase(path[path.length - 1] ?? "");
  }

  // packages/editor/build-module/hooks/push-changes-to-global-styles/format-style-value.mjs
  var EMPTY_VALUE_LABEL = "\u2014";
  var PRESET_USER_PREFIX = "var:preset|";
  var PRESET_CSS_VAR_REGEX = /^var\(\s*--wp--preset--[a-z0-9-]+?\s*(?:,[^)]*)?\)$/i;
  function getPresetSlug(value) {
    if (value.startsWith(PRESET_USER_PREFIX)) {
      return value.split("|").pop();
    }
    if (PRESET_CSS_VAR_REGEX.test(value)) {
      return value.replace(/^var\(\s*/, "").replace(/\s*(?:,[^)]*)?\)$/, "").split("--").pop();
    }
    return void 0;
  }
  var isSet = (value) => value !== void 0 && value !== null && value !== "";
  var BORDER_SIDES = ["top", "right", "bottom", "left"];
  function flattenBorder(border) {
    if (isSet(border.width) || isSet(border.style) || isSet(border.color)) {
      return border;
    }
    const setSides = BORDER_SIDES.filter((side) => border[side]);
    if (!setSides.length) {
      return border;
    }
    const collapse = (property) => {
      const values = setSides.map((side) => border[side]?.[property]);
      return values.every((value) => value === values[0]) ? values[0] : void 0;
    };
    return {
      width: collapse("width"),
      style: collapse("style"),
      color: collapse("color")
    };
  }
  function formatStyleValue(value) {
    if (!isSet(value)) {
      return EMPTY_VALUE_LABEL;
    }
    if (typeof value === "string") {
      const presetSlug = getPresetSlug(value);
      if (presetSlug) {
        return capitalCase(presetSlug);
      }
      return value;
    }
    if (typeof value === "number") {
      return String(value);
    }
    if (typeof value === "object") {
      try {
        const stringified = JSON.stringify(value);
        return stringified && stringified !== "{}" && stringified !== "[]" ? stringified : EMPTY_VALUE_LABEL;
      } catch {
        return EMPTY_VALUE_LABEL;
      }
    }
    return String(value);
  }
  function formatBorderShorthand(border) {
    if (!border || typeof border !== "object") {
      return formatStyleValue(border);
    }
    const { width, style, color } = flattenBorder(border);
    const parts = [width, style, color].filter(isSet).map((part) => formatStyleValue(part));
    return parts.length ? parts.join(" ") : EMPTY_VALUE_LABEL;
  }
  var RADIUS_CORNERS = ["topLeft", "topRight", "bottomRight", "bottomLeft"];
  function formatBorderRadius(radius) {
    if (radius && typeof radius === "object") {
      const parts = RADIUS_CORNERS.map(
        (corner) => radius[corner]
      ).filter(isSet);
      return parts.length ? parts.join(" ") : EMPTY_VALUE_LABEL;
    }
    return formatStyleValue(radius);
  }
  function formatSpacingShorthand(spacing, resolve = (value) => value) {
    const format7 = (value) => formatStyleValue(resolve(value));
    if (!spacing || typeof spacing !== "object") {
      return format7(spacing);
    }
    const { top, right, bottom, left } = spacing;
    if (isSet(top) && isSet(right) && isSet(bottom) && isSet(left)) {
      if (top === right && right === bottom && bottom === left) {
        return format7(top);
      }
      if (top === bottom && left === right) {
        return `${format7(top)} ${format7(left)}`;
      }
      return [top, right, bottom, left].map(format7).join(" ");
    }
    if (!isSet(top) && !isSet(right) && !isSet(bottom) && !isSet(left)) {
      return EMPTY_VALUE_LABEL;
    }
    return [top, right, bottom, left].map(
      (value) => isSet(value) ? format7(value) : EMPTY_VALUE_LABEL
    ).join(" ");
  }
  function formatBlockGap(gap, resolve = (value) => value) {
    const format7 = (value) => formatStyleValue(resolve(value));
    if (!gap || typeof gap !== "object") {
      return format7(gap);
    }
    const { top: row, left: column } = gap;
    if (!isSet(row) && !isSet(column)) {
      return EMPTY_VALUE_LABEL;
    }
    if (row === column) {
      return format7(row);
    }
    const rowLabel = isSet(row) ? format7(row) : EMPTY_VALUE_LABEL;
    const columnLabel = isSet(column) ? format7(column) : EMPTY_VALUE_LABEL;
    return `${rowLabel} - ${columnLabel}`;
  }

  // packages/editor/build-module/hooks/push-changes-to-global-styles/use-review-rows.mjs
  function formatReviewValue(format7, value, resolve) {
    if (format7 === "border") {
      return formatBorderShorthand(value);
    }
    if (format7 === "borderRadius") {
      return formatBorderRadius(value);
    }
    if (format7 === "spacing") {
      return formatSpacingShorthand(value, resolve);
    }
    if (format7 === "blockGap") {
      return formatBlockGap(value, resolve);
    }
    return formatStyleValue(value);
  }
  function useReviewRows(rows, merged, name2) {
    return (0, import_element372.useMemo)(() => {
      const resolve = (value) => getValueFromVariable(merged, name2, value);
      return rows.map((row) => {
        const currentValue = getStyle(
          merged,
          row.primaryPath.join("."),
          name2,
          // Keep preset values encoded (e.g. `var:preset|color|vivid-red`)
          // so they show by name, matching the new value.
          false
        );
        return {
          ...row,
          label: getStyleLabel(row.primaryPath),
          currentValue,
          formattedCurrentValue: formatReviewValue(
            row.format,
            currentValue,
            resolve
          ),
          formattedNewValue: formatReviewValue(
            row.format,
            row.newValue,
            resolve
          )
        };
      });
    }, [rows, merged, name2]);
  }

  // packages/editor/build-module/hooks/push-changes-to-global-styles/apply-globally-modal.mjs
  var import_jsx_runtime594 = __toESM(require_jsx_runtime(), 1);
  var DEFAULT_LAYOUTS2 = { pickerTable: {} };
  var getItemId2 = (row) => row.id;
  function ApplyGloballyModal({
    name: name2,
    rows,
    onApply,
    onRequestClose
  }) {
    const { merged } = useGlobalStyles();
    const reviewRows = useReviewRows(rows, merged, name2);
    const [selection, setSelection] = (0, import_element373.useState)(
      () => reviewRows.map((row) => row.id)
    );
    const [view, setView] = (0, import_element373.useState)(() => ({
      type: "pickerTable",
      titleField: "label",
      fields: ["current", "new"],
      page: 1,
      perPage: reviewRows.length,
      layout: { enableMoving: false }
    }));
    const fields2 = (0, import_element373.useMemo)(
      () => [
        {
          id: "label",
          label: (0, import_i18n298.__)("Style"),
          enableSorting: false,
          enableHiding: false,
          filterBy: false,
          getValue: ({ item }) => item.label,
          render: ({ item }) => item.label
        },
        {
          id: "current",
          label: (0, import_i18n298.__)("Current"),
          enableSorting: false,
          enableHiding: false,
          filterBy: false,
          getValue: ({ item }) => item.formattedCurrentValue,
          render: ({ item }) => /* @__PURE__ */ (0, import_jsx_runtime594.jsx)("span", { className: "editor-push-changes-to-global-styles-modal__value", children: item.formattedCurrentValue })
        },
        {
          id: "new",
          label: (0, import_i18n298.__)("New"),
          enableSorting: false,
          enableHiding: false,
          filterBy: false,
          getValue: ({ item }) => item.formattedNewValue,
          render: ({ item }) => /* @__PURE__ */ (0, import_jsx_runtime594.jsx)("span", { className: "editor-push-changes-to-global-styles-modal__value", children: item.formattedNewValue })
        }
      ],
      []
    );
    const actions2 = (0, import_element373.useMemo)(
      () => [
        {
          id: "apply",
          label: (0, import_i18n298.__)("Apply"),
          isPrimary: true,
          supportsBulk: true,
          callback(items) {
            onApply(items);
            onRequestClose();
          }
        }
      ],
      [onApply, onRequestClose]
    );
    const blockTitle = (0, import_blocks29.getBlockType)(name2)?.title;
    return /* @__PURE__ */ (0, import_jsx_runtime594.jsxs)(
      import_components222.Modal,
      {
        title: (0, import_i18n298.sprintf)(
          // translators: %s: Title of the block e.g. 'Heading'.
          (0, import_i18n298.__)("Apply %s styles globally"),
          blockTitle
        ),
        onRequestClose,
        size: "large",
        className: "editor-push-changes-to-global-styles-modal",
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime594.jsx)("p", { children: (0, import_i18n298.sprintf)(
            // translators: %s: Title of the block e.g. 'Heading'.
            (0, import_i18n298.__)(
              "Choose which styles to make default for all %s blocks."
            ),
            blockTitle
          ) }),
          /* @__PURE__ */ (0, import_jsx_runtime594.jsxs)(
            dataviews_picker_default,
            {
              data: reviewRows,
              fields: fields2,
              view,
              onChangeView: setView,
              actions: actions2,
              selection,
              onChangeSelection: setSelection,
              getItemId: getItemId2,
              paginationInfo: {
                totalItems: reviewRows.length,
                totalPages: 1
              },
              defaultLayouts: DEFAULT_LAYOUTS2,
              search: false,
              itemListLabel: (0, import_i18n298.__)("Styles to apply"),
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime594.jsx)(dataviews_picker_default.Layout, {}),
                /* @__PURE__ */ (0, import_jsx_runtime594.jsx)(dataviews_picker_default.Footer, {})
              ]
            }
          )
        ]
      }
    );
  }

  // packages/editor/build-module/hooks/push-changes-to-global-styles/index.mjs
  var import_jsx_runtime595 = __toESM(require_jsx_runtime(), 1);
  var { cleanEmptyObject: cleanEmptyObject2 } = unlock(import_block_editor69.privateApis);
  var STYLE_PROPERTY2 = {
    ...import_blocks30.__EXPERIMENTAL_STYLE_PROPERTY,
    blockGap: { value: ["spacing", "blockGap"] }
  };
  var STYLE_PATH_TO_CSS_VAR_INFIX = {
    "border.color": "color",
    "color.background": "color",
    "color.text": "color",
    "elements.link.color.text": "color",
    "elements.link.:hover.color.text": "color",
    "elements.link.typography.fontFamily": "font-family",
    "elements.link.typography.fontSize": "font-size",
    "elements.button.color.text": "color",
    "elements.button.color.background": "color",
    "elements.button.typography.fontFamily": "font-family",
    "elements.button.typography.fontSize": "font-size",
    "elements.caption.color.text": "color",
    "elements.heading.color": "color",
    "elements.heading.color.background": "color",
    "elements.heading.typography.fontFamily": "font-family",
    "elements.heading.gradient": "gradient",
    "elements.heading.color.gradient": "gradient",
    "elements.h1.color": "color",
    "elements.h1.color.background": "color",
    "elements.h1.typography.fontFamily": "font-family",
    "elements.h1.color.gradient": "gradient",
    "elements.h2.color": "color",
    "elements.h2.color.background": "color",
    "elements.h2.typography.fontFamily": "font-family",
    "elements.h2.color.gradient": "gradient",
    "elements.h3.color": "color",
    "elements.h3.color.background": "color",
    "elements.h3.typography.fontFamily": "font-family",
    "elements.h3.color.gradient": "gradient",
    "elements.h4.color": "color",
    "elements.h4.color.background": "color",
    "elements.h4.typography.fontFamily": "font-family",
    "elements.h4.color.gradient": "gradient",
    "elements.h5.color": "color",
    "elements.h5.color.background": "color",
    "elements.h5.typography.fontFamily": "font-family",
    "elements.h5.color.gradient": "gradient",
    "elements.h6.color": "color",
    "elements.h6.color.background": "color",
    "elements.h6.typography.fontFamily": "font-family",
    "elements.h6.color.gradient": "gradient",
    "color.gradient": "gradient",
    blockGap: "spacing",
    "typography.fontSize": "font-size",
    "typography.fontFamily": "font-family"
  };
  var STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {
    "border.color": "borderColor",
    "color.background": "backgroundColor",
    "color.text": "textColor",
    "color.gradient": "gradient",
    "typography.fontSize": "fontSize",
    "typography.fontFamily": "fontFamily"
  };
  var SUPPORTED_STYLES = ["border", "color", "spacing", "typography"];
  var getValueFromObjectPath2 = (object, path) => {
    let value = object;
    path.forEach((fieldName) => {
      value = value?.[fieldName];
    });
    return value;
  };
  var sides2 = ["top", "right", "bottom", "left"];
  function getBorderRows(supports, attributes, blockUserConfig) {
    const rows = [];
    const border = attributes.style?.border;
    const userBorder = blockUserConfig?.border;
    const colorSupported = supports.includes("borderColor");
    const widthSupported = supports.includes("borderWidth");
    const styleSupported = supports.includes("borderStyle");
    const presetBorderColor = attributes.borderColor;
    const flatColor = presetBorderColor ? `var:preset|color|${presetBorderColor}` : border?.color;
    const flatRow = buildBorderScopeRow({
      id: "border",
      primaryPath: ["border"],
      side: null,
      color: colorSupported ? flatColor : void 0,
      width: widthSupported ? border?.width : void 0,
      style: styleSupported ? border?.style : void 0,
      userBorder,
      presetAttributes: presetBorderColor ? ["borderColor"] : []
    });
    if (flatRow) {
      rows.push(flatRow);
    }
    sides2.forEach((side) => {
      const sideBorder = border?.[side];
      const sideRow = buildBorderScopeRow({
        id: `border.${side}`,
        primaryPath: ["border", side],
        side,
        color: colorSupported ? sideBorder?.color : void 0,
        width: widthSupported ? sideBorder?.width : void 0,
        style: styleSupported ? sideBorder?.style : void 0,
        userBorder,
        presetAttributes: []
      });
      if (sideRow) {
        rows.push(sideRow);
      }
    });
    if (supports.includes("borderRadius") && border?.radius !== void 0 && border?.radius !== "") {
      rows.push({
        id: "border.radius",
        primaryPath: ["border", "radius"],
        paths: [{ path: ["border", "radius"], value: border.radius }],
        presetAttributes: [],
        newValue: border.radius,
        format: "borderRadius"
      });
    }
    return rows;
  }
  function buildBorderScopeRow({
    id,
    primaryPath,
    side,
    color,
    width,
    style,
    userBorder,
    presetAttributes
  }) {
    if (!color && !width && !style) {
      return null;
    }
    const paths = [];
    const targetSides = side ? [side] : sides2;
    const addChange = (property, value) => {
      if (value === void 0) {
        return;
      }
      if (!side) {
        paths.push({ path: ["border", property], value });
      }
      targetSides.forEach((targetSide) => {
        paths.push({ path: ["border", targetSide, property], value });
      });
    };
    addChange("color", color);
    addChange("width", width);
    addChange("style", style);
    let effectiveStyle = style;
    if (!style && (color || width)) {
      const sideStyles = targetSides.map(
        (targetSide) => userBorder?.[targetSide]?.style
      );
      targetSides.forEach((targetSide, index3) => {
        if (!sideStyles[index3]) {
          paths.push({
            path: ["border", targetSide, "style"],
            value: "solid"
          });
        }
      });
      const sharedStyle = sideStyles.every(
        (sideStyle) => sideStyle === sideStyles[0]
      ) ? sideStyles[0] : void 0;
      effectiveStyle = sharedStyle || "solid";
    }
    return {
      id,
      primaryPath,
      paths,
      presetAttributes,
      newValue: { color, width, style: effectiveStyle },
      format: "border"
    };
  }
  function getChangesToPush(supports, attributes, blockUserConfig) {
    const rows = [];
    supports.forEach((key) => {
      if (!STYLE_PROPERTY2[key]) {
        return;
      }
      if (key.startsWith("border")) {
        return;
      }
      if (STYLE_PROPERTY2[key].rootOnly) {
        return;
      }
      const { value: path } = STYLE_PROPERTY2[key];
      const presetAttributeKey = path.join(".");
      const presetAttributeName = STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE[presetAttributeKey];
      const presetAttributeValue = presetAttributeName ? attributes[presetAttributeName] : void 0;
      const value = presetAttributeValue ? `var:preset|${STYLE_PATH_TO_CSS_VAR_INFIX[presetAttributeKey]}|${presetAttributeValue}` : getValueFromObjectPath2(attributes.style, path);
      const presetAttributes = presetAttributeValue ? [presetAttributeName] : [];
      if (key === "linkColor") {
        const paths = value ? [{ path, value }] : [];
        const hoverPath = ["elements", "link", ":hover", "color", "text"];
        const hoverValue = getValueFromObjectPath2(
          attributes.style,
          hoverPath
        );
        if (hoverValue) {
          paths.push({ path: hoverPath, value: hoverValue });
        }
        if (paths.length === 0) {
          return;
        }
        rows.push({
          id: presetAttributeKey,
          primaryPath: path,
          paths,
          presetAttributes,
          newValue: value ?? hoverValue
        });
        return;
      }
      if (value) {
        let format7;
        if (key === "padding" || key === "margin") {
          format7 = "spacing";
        } else if (key === "blockGap") {
          format7 = "blockGap";
        }
        rows.push({
          id: presetAttributeKey,
          primaryPath: path,
          paths: [{ path, value }],
          presetAttributes,
          newValue: value,
          format: format7
        });
      }
    });
    rows.push(...getBorderRows(supports, attributes, blockUserConfig));
    return rows;
  }
  function useChangesToPush(name2, attributes, userConfig) {
    const supports = (0, import_data198.useSelect)(
      (select9) => {
        return unlock(select9(import_blocks30.store)).getSupportedStyles(name2);
      },
      [name2]
    );
    const blockUserConfig = userConfig?.styles?.blocks?.[name2];
    return (0, import_element374.useMemo)(
      () => getChangesToPush(supports, attributes, blockUserConfig),
      [supports, attributes, blockUserConfig]
    );
  }
  function getStylesUpdate({
    rowsToPush,
    attributes,
    userConfig,
    name: name2
  }) {
    if (!rowsToPush || rowsToPush.length === 0) {
      return null;
    }
    const selectedChanges = rowsToPush.flatMap((row) => row.paths);
    if (selectedChanges.length === 0) {
      return null;
    }
    const { style: blockStyles } = attributes;
    const newBlockStyles = structuredClone(blockStyles);
    const newUserConfig = structuredClone(userConfig);
    for (const { path, value } of selectedChanges) {
      setNestedValue(newBlockStyles, path, void 0);
      setNestedValue(
        newUserConfig,
        ["styles", "blocks", name2, ...path],
        value
      );
    }
    const newBlockAttributes = {
      style: cleanEmptyObject2(newBlockStyles)
    };
    for (const presetAttribute of rowsToPush.flatMap(
      (row) => row.presetAttributes
    )) {
      newBlockAttributes[presetAttribute] = void 0;
    }
    return { newBlockAttributes, newUserConfig };
  }
  function PushChangesToGlobalStylesControl({
    name: name2,
    attributes,
    setAttributes
  }) {
    const { user: userConfig, setUser: setUserConfig } = useGlobalStyles();
    const rows = useChangesToPush(name2, attributes, userConfig);
    const [isModalOpen, setIsModalOpen] = (0, import_element374.useState)(false);
    const { __unstableMarkNextChangeAsNotPersistent } = (0, import_data198.useDispatch)(import_block_editor69.store);
    const { createSuccessNotice } = (0, import_data198.useDispatch)(import_notices29.store);
    const pushChanges = (0, import_element374.useCallback)(
      (rowsToPush) => {
        const update4 = getStylesUpdate({
          rowsToPush,
          attributes,
          userConfig,
          name: name2
        });
        if (!update4) {
          return;
        }
        const { newBlockAttributes, newUserConfig } = update4;
        __unstableMarkNextChangeAsNotPersistent();
        setAttributes(newBlockAttributes);
        setUserConfig(newUserConfig, { undoIgnore: true });
        createSuccessNotice(
          (0, import_i18n299.sprintf)(
            // translators: %s: Title of the block e.g. 'Heading'.
            (0, import_i18n299.__)("%s styles applied."),
            (0, import_blocks30.getBlockType)(name2).title
          ),
          {
            type: "snackbar",
            actions: [
              {
                label: (0, import_i18n299.__)("Undo"),
                onClick() {
                  __unstableMarkNextChangeAsNotPersistent();
                  setAttributes(attributes);
                  setUserConfig(userConfig, {
                    undoIgnore: true
                  });
                }
              }
            ]
          }
        );
      },
      [
        __unstableMarkNextChangeAsNotPersistent,
        attributes,
        createSuccessNotice,
        name2,
        setAttributes,
        setUserConfig,
        userConfig
      ]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime595.jsxs)(
      import_components223.BaseControl,
      {
        className: "editor-push-changes-to-global-styles-control",
        help: (0, import_i18n299.sprintf)(
          // translators: %s: Title of the block e.g. 'Heading'.
          (0, import_i18n299.__)(
            "Review and apply this block\u2019s typography, spacing, dimensions, and color styles to all %s blocks."
          ),
          (0, import_blocks30.getBlockType)(name2).title
        ),
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime595.jsx)(import_components223.BaseControl.VisualLabel, { children: (0, import_i18n299.__)("Styles") }),
          /* @__PURE__ */ (0, import_jsx_runtime595.jsx)(
            import_components223.Button,
            {
              __next40pxDefaultSize: true,
              variant: "secondary",
              accessibleWhenDisabled: true,
              disabled: rows.length === 0,
              onClick: () => setIsModalOpen(true),
              children: (0, import_i18n299.__)("Apply globally")
            }
          ),
          isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime595.jsx)(
            ApplyGloballyModal,
            {
              name: name2,
              rows,
              onApply: pushChanges,
              onRequestClose: () => setIsModalOpen(false)
            }
          )
        ]
      }
    );
  }
  function PushChangesToGlobalStyles(props) {
    const blockEditingMode = (0, import_block_editor69.useBlockEditingMode)();
    const isBlockBasedTheme = (0, import_data198.useSelect)(
      (select9) => select9(import_core_data115.store).getCurrentTheme()?.is_block_theme,
      []
    );
    const supportsStyles = SUPPORTED_STYLES.some(
      (feature) => (0, import_blocks30.hasBlockSupport)(props.name, feature)
    );
    const isDisplayed = blockEditingMode === "default" && supportsStyles && isBlockBasedTheme;
    if (!isDisplayed) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime595.jsx)(import_block_editor69.InspectorAdvancedControls, { children: /* @__PURE__ */ (0, import_jsx_runtime595.jsx)(PushChangesToGlobalStylesControl, { ...props }) });
  }
  var withPushChangesToGlobalStyles = (0, import_compose77.createHigherOrderComponent)(
    (BlockEdit2) => (props) => /* @__PURE__ */ (0, import_jsx_runtime595.jsxs)(import_jsx_runtime595.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime595.jsx)(BlockEdit2, { ...props }, "edit"),
      props.isSelected && /* @__PURE__ */ (0, import_jsx_runtime595.jsx)(PushChangesToGlobalStyles, { ...props })
    ] })
  );
  (0, import_hooks61.addFilter)(
    "editor.BlockEdit",
    "core/editor/push-changes-to-global-styles",
    withPushChangesToGlobalStyles
  );

  // packages/editor/build-module/hooks/note-format.mjs
  var import_rich_text5 = __toESM(require_rich_text(), 1);

  // packages/editor/build-module/components/collab-sidebar/format.mjs
  var import_i18n300 = __toESM(require_i18n(), 1);
  var import_element375 = __toESM(require_element(), 1);
  var import_data199 = __toESM(require_data(), 1);

  // packages/editor/build-module/components/collab-sidebar/constants.mjs
  var ALL_NOTES_SIDEBAR = "edit-post/collab-history-sidebar";
  var FLOATING_NOTES_SIDEBAR = "edit-post/collab-sidebar";
  var SIDEBARS = [ALL_NOTES_SIDEBAR, FLOATING_NOTES_SIDEBAR];

  // packages/editor/build-module/components/collab-sidebar/format.mjs
  var NOTE_FORMAT_NAME = "core/note";
  var noteFormat = {
    title: (0, import_i18n300.__)("Note"),
    tagName: "mark",
    className: "wp-note",
    attributes: {
      "data-id": "data-id"
    },
    edit: NoteFormat
  };
  function NoteFormat({ isActive, activeAttributes }) {
    const { getActiveComplementaryArea: getActiveComplementaryArea2 } = (0, import_data199.useSelect)(store3);
    const { getSelectedNote: getSelectedNote2 } = unlock((0, import_data199.useSelect)(store));
    const { selectNote: selectNote2 } = unlock((0, import_data199.useDispatch)(store));
    const noteId = activeAttributes?.["data-id"];
    (0, import_element375.useEffect)(() => {
      if (!isActive || !noteId) {
        return;
      }
      if (!SIDEBARS.includes(getActiveComplementaryArea2("core"))) {
        return;
      }
      if (String(getSelectedNote2()) === String(noteId)) {
        return;
      }
      selectNote2(Number(noteId));
    }, [
      isActive,
      noteId,
      getActiveComplementaryArea2,
      getSelectedNote2,
      selectNote2
    ]);
    return null;
  }

  // packages/editor/build-module/hooks/note-format.mjs
  (0, import_rich_text5.registerFormatType)(NOTE_FORMAT_NAME, noteFormat);

  // packages/editor/build-module/components/header/back-button.mjs
  var import_components224 = __toESM(require_components(), 1);
  var import_jsx_runtime596 = __toESM(require_jsx_runtime(), 1);
  var slotName = "__experimentalMainDashboardButton";
  var useHasBackButton = () => {
    const fills = (0, import_components224.__experimentalUseSlotFills)(slotName);
    return Boolean(fills && fills.length);
  };
  var { Fill: Fill10, Slot: Slot10 } = (0, import_components224.createSlotFill)(slotName);
  var BackButton = Fill10;
  var BackButtonSlot = () => {
    const fills = (0, import_components224.__experimentalUseSlotFills)(slotName);
    return /* @__PURE__ */ (0, import_jsx_runtime596.jsx)(
      Slot10,
      {
        bubblesVirtually: true,
        fillProps: { length: !fills ? 0 : fills.length }
      }
    );
  };
  BackButton.Slot = BackButtonSlot;
  var back_button_default = BackButton;

  // packages/editor/build-module/components/editor/index.mjs
  var import_data274 = __toESM(require_data(), 1);
  var import_core_data152 = __toESM(require_core_data(), 1);
  var import_components275 = __toESM(require_components(), 1);
  var import_i18n368 = __toESM(require_i18n(), 1);

  // packages/editor/build-module/components/editor-interface/index.mjs
  var import_data229 = __toESM(require_data(), 1);
  var import_i18n328 = __toESM(require_i18n(), 1);
  var import_preferences25 = __toESM(require_preferences(), 1);
  var import_block_editor88 = __toESM(require_block_editor(), 1);
  var import_compose94 = __toESM(require_compose(), 1);
  var import_element403 = __toESM(require_element(), 1);
  var import_html_entities30 = __toESM(require_html_entities(), 1);
  var import_notices32 = __toESM(require_notices(), 1);
  var import_theme = __toESM(require_theme(), 1);

  // packages/editor/build-module/components/header/index.mjs
  var import_block_editor77 = __toESM(require_block_editor(), 1);
  var import_data211 = __toESM(require_data(), 1);
  var import_compose83 = __toESM(require_compose(), 1);
  var import_preferences22 = __toESM(require_preferences(), 1);
  var import_element389 = __toESM(require_element(), 1);

  // packages/editor/build-module/components/collapsible-block-toolbar/index.mjs
  var import_block_editor70 = __toESM(require_block_editor(), 1);
  var import_element376 = __toESM(require_element(), 1);
  var import_components225 = __toESM(require_components(), 1);
  var import_i18n301 = __toESM(require_i18n(), 1);
  var import_data200 = __toESM(require_data(), 1);
  var import_jsx_runtime597 = __toESM(require_jsx_runtime(), 1);
  var { useHasBlockToolbar } = unlock(import_block_editor70.privateApis);
  function CollapsibleBlockToolbar({ isCollapsed, onToggle }) {
    const { blockSelectionStart } = (0, import_data200.useSelect)((select9) => {
      return {
        blockSelectionStart: select9(import_block_editor70.store).getBlockSelectionStart()
      };
    }, []);
    const hasBlockToolbar = useHasBlockToolbar();
    const hasBlockSelection = !!blockSelectionStart;
    (0, import_element376.useEffect)(() => {
      if (blockSelectionStart) {
        onToggle(false);
      }
    }, [blockSelectionStart, onToggle]);
    if (!hasBlockToolbar) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime597.jsxs)(import_jsx_runtime597.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime597.jsx)(
        "div",
        {
          className: clsx_default("editor-collapsible-block-toolbar", {
            "is-collapsed": isCollapsed || !hasBlockSelection
          }),
          children: /* @__PURE__ */ (0, import_jsx_runtime597.jsx)(import_block_editor70.BlockToolbar, { hideDragHandle: true })
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime597.jsx)(import_components225.Popover.Slot, { name: "block-toolbar" }),
      /* @__PURE__ */ (0, import_jsx_runtime597.jsx)(
        import_components225.Button,
        {
          className: "editor-collapsible-block-toolbar__toggle",
          icon: isCollapsed ? next_default : previous_default,
          onClick: () => {
            onToggle(!isCollapsed);
          },
          label: isCollapsed ? (0, import_i18n301.__)("Show block tools") : (0, import_i18n301.__)("Hide block tools"),
          size: "compact"
        }
      )
    ] });
  }

  // packages/editor/build-module/components/document-tools/index.mjs
  var import_compose78 = __toESM(require_compose(), 1);
  var import_data201 = __toESM(require_data(), 1);
  var import_i18n302 = __toESM(require_i18n(), 1);
  var import_block_editor71 = __toESM(require_block_editor(), 1);
  var import_components226 = __toESM(require_components(), 1);
  var import_element377 = __toESM(require_element(), 1);
  var import_keyboard_shortcuts6 = __toESM(require_keyboard_shortcuts(), 1);
  var import_preferences15 = __toESM(require_preferences(), 1);
  var import_jsx_runtime598 = __toESM(require_jsx_runtime(), 1);
  function DocumentTools({ className, disableBlockTools = false }) {
    const { setIsInserterOpened: setIsInserterOpened2, setIsListViewOpened: setIsListViewOpened2 } = (0, import_data201.useDispatch)(store);
    const {
      isDistractionFree,
      isInserterOpened: isInserterOpened2,
      isListViewOpen,
      listViewShortcut,
      inserterSidebarToggleRef: inserterSidebarToggleRef2,
      listViewToggleRef: listViewToggleRef2,
      showIconLabels
    } = (0, import_data201.useSelect)((select9) => {
      const { get } = select9(import_preferences15.store);
      const {
        isListViewOpened: isListViewOpened2,
        getEditorMode: getEditorMode2,
        getInserterSidebarToggleRef: getInserterSidebarToggleRef2,
        getListViewToggleRef: getListViewToggleRef2
      } = unlock(select9(store));
      const { getShortcutRepresentation } = select9(import_keyboard_shortcuts6.store);
      return {
        isInserterOpened: select9(store).isInserterOpened(),
        isListViewOpen: isListViewOpened2(),
        listViewShortcut: getShortcutRepresentation(
          "core/editor/toggle-list-view"
        ),
        inserterSidebarToggleRef: getInserterSidebarToggleRef2(),
        listViewToggleRef: getListViewToggleRef2(),
        showIconLabels: get("core", "showIconLabels"),
        isDistractionFree: get("core", "distractionFree"),
        isVisualMode: getEditorMode2() === "visual"
      };
    }, []);
    const preventDefault = (event) => {
      if (isInserterOpened2) {
        event.preventDefault();
      }
    };
    const isWideViewport = (0, import_compose78.useViewportMatch)("wide");
    const toolbarAriaLabel = (0, import_i18n302.__)("Document tools");
    const toggleListView = (0, import_element377.useCallback)(
      () => setIsListViewOpened2(!isListViewOpen),
      [setIsListViewOpened2, isListViewOpen]
    );
    const toggleInserter = (0, import_element377.useCallback)(
      () => setIsInserterOpened2(!isInserterOpened2),
      [isInserterOpened2, setIsInserterOpened2]
    );
    const longLabel = (0, import_i18n302._x)(
      "Block Inserter",
      "Generic label for block inserter button"
    );
    const shortLabel = !isInserterOpened2 ? (0, import_i18n302.__)("Add") : (0, import_i18n302.__)("Close");
    return (
      // Some plugins expect and use the `edit-post-header-toolbar` CSS class to
      // find the toolbar and inject UI elements into it. This is not officially
      // supported, but we're keeping it in the list of class names for backwards
      // compatibility.
      /* @__PURE__ */ (0, import_jsx_runtime598.jsx)(
        import_block_editor71.NavigableToolbar,
        {
          className: clsx_default(
            "editor-document-tools",
            "edit-post-header-toolbar",
            className
          ),
          "aria-label": toolbarAriaLabel,
          variant: "unstyled",
          children: /* @__PURE__ */ (0, import_jsx_runtime598.jsxs)("div", { className: "editor-document-tools__left", children: [
            !isDistractionFree && /* @__PURE__ */ (0, import_jsx_runtime598.jsx)(
              import_components226.ToolbarButton,
              {
                ref: inserterSidebarToggleRef2,
                className: "editor-document-tools__inserter-toggle",
                variant: "primary",
                isPressed: isInserterOpened2,
                onMouseDown: preventDefault,
                onClick: toggleInserter,
                disabled: disableBlockTools,
                icon: plus_default,
                label: showIconLabels ? shortLabel : longLabel,
                showTooltip: !showIconLabels,
                "aria-expanded": isInserterOpened2
              }
            ),
            (isWideViewport || !showIconLabels) && /* @__PURE__ */ (0, import_jsx_runtime598.jsxs)(import_jsx_runtime598.Fragment, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime598.jsx)(
                import_components226.ToolbarItem,
                {
                  as: undo_default2,
                  showTooltip: !showIconLabels,
                  variant: showIconLabels ? "tertiary" : void 0,
                  size: "compact"
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime598.jsx)(
                import_components226.ToolbarItem,
                {
                  as: redo_default2,
                  showTooltip: !showIconLabels,
                  variant: showIconLabels ? "tertiary" : void 0,
                  size: "compact"
                }
              ),
              !isDistractionFree && /* @__PURE__ */ (0, import_jsx_runtime598.jsx)(
                import_components226.ToolbarButton,
                {
                  className: "editor-document-tools__document-overview-toggle",
                  icon: list_view_default,
                  disabled: disableBlockTools,
                  isPressed: isListViewOpen,
                  label: (0, import_i18n302.__)("Document Overview"),
                  onClick: toggleListView,
                  shortcut: listViewShortcut,
                  showTooltip: !showIconLabels,
                  variant: showIconLabels ? "tertiary" : void 0,
                  "aria-expanded": isListViewOpen,
                  ref: listViewToggleRef2
                }
              )
            ] })
          ] })
        }
      )
    );
  }
  var document_tools_default = DocumentTools;

  // packages/editor/build-module/components/header/header-skeleton.mjs
  var import_components227 = __toESM(require_components(), 1);
  var import_jsx_runtime599 = __toESM(require_jsx_runtime(), 1);
  var toolbarVariations = {
    distractionFreeDisabled: { y: "-50px" },
    distractionFreeHover: { y: 0 },
    distractionFreeHidden: { y: "-50px" },
    visible: { y: 0 },
    hidden: { y: 0 }
  };
  var backButtonVariations = {
    distractionFreeDisabled: { x: "-100%" },
    distractionFreeHover: { x: 0 },
    distractionFreeHidden: { x: "-100%" },
    visible: { x: 0 },
    hidden: { x: 0 }
  };
  function HeaderSkeleton({
    className,
    toolbar,
    center,
    settings
  }) {
    const hasBackButton = useHasBackButton();
    return /* @__PURE__ */ (0, import_jsx_runtime599.jsxs)("div", { className: clsx_default("editor-header edit-post-header", className), children: [
      hasBackButton && /* @__PURE__ */ (0, import_jsx_runtime599.jsx)(
        import_components227.__unstableMotion.div,
        {
          className: "editor-header__back-button",
          variants: backButtonVariations,
          transition: { type: "tween" },
          children: /* @__PURE__ */ (0, import_jsx_runtime599.jsx)(back_button_default.Slot, {})
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime599.jsx)(
        import_components227.__unstableMotion.div,
        {
          variants: toolbarVariations,
          className: "editor-header__toolbar",
          transition: { type: "tween" },
          children: toolbar
        }
      ),
      center && /* @__PURE__ */ (0, import_jsx_runtime599.jsx)(
        import_components227.__unstableMotion.div,
        {
          variants: toolbarVariations,
          className: "editor-header__center",
          transition: { type: "tween" },
          children: center
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime599.jsx)(
        import_components227.__unstableMotion.div,
        {
          variants: toolbarVariations,
          transition: { type: "tween" },
          className: "editor-header__settings",
          children: settings
        }
      )
    ] });
  }

  // packages/editor/build-module/components/more-menu/index.mjs
  var import_i18n306 = __toESM(require_i18n(), 1);
  var import_data205 = __toESM(require_data(), 1);
  var import_components231 = __toESM(require_components(), 1);
  var import_preferences17 = __toESM(require_preferences(), 1);
  var import_keycodes14 = __toESM(require_keycodes(), 1);

  // packages/editor/build-module/components/more-menu/copy-content-menu-item.mjs
  var import_data202 = __toESM(require_data(), 1);
  var import_i18n303 = __toESM(require_i18n(), 1);
  var import_compose79 = __toESM(require_compose(), 1);
  var import_notices30 = __toESM(require_notices(), 1);
  var import_jsx_runtime600 = __toESM(require_jsx_runtime(), 1);
  function CopyContentMenuItem() {
    const { createNotice } = (0, import_data202.useDispatch)(import_notices30.store);
    const { getEditedPostContent: getEditedPostContent2 } = (0, import_data202.useSelect)(store);
    function getText() {
      return getEditedPostContent2();
    }
    function onSuccess() {
      createNotice("info", (0, import_i18n303.__)("All content copied."), {
        isDismissible: true,
        type: "snackbar"
      });
    }
    const ref = (0, import_compose79.useCopyToClipboard)(getText, onSuccess);
    return /* @__PURE__ */ (0, import_jsx_runtime600.jsx)(menu_exports.Item, { ref, children: /* @__PURE__ */ (0, import_jsx_runtime600.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n303.__)("Copy all blocks") }) });
  }

  // packages/editor/build-module/components/more-menu/more-menu-item.mjs
  var import_components228 = __toESM(require_components(), 1);
  var import_element378 = __toESM(require_element(), 1);
  var import_primitives99 = __toESM(require_primitives(), 1);
  var import_jsx_runtime601 = __toESM(require_jsx_runtime(), 1);
  function adaptShortcut(shortcut) {
    if (!shortcut) {
      return void 0;
    }
    if (typeof shortcut === "string") {
      return { displayShortcut: shortcut, label: shortcut };
    }
    if ("displayShortcut" in shortcut) {
      return shortcut;
    }
    return {
      displayShortcut: shortcut.display,
      label: shortcut.ariaLabel ?? shortcut.display
    };
  }
  function UnforwardedMoreMenuItem({
    "aria-checked": ariaChecked,
    "aria-label": ariaLabel,
    children,
    disabled: disabled2,
    href,
    icon,
    info,
    isSelected: isSelected2,
    label,
    onClick,
    role,
    shortcut,
    target,
    ...props
  }, ref) {
    const itemLabel = /* @__PURE__ */ (0, import_jsx_runtime601.jsx)(menu_exports.ItemLabel, { children: children ?? label });
    const itemAriaLabel = ariaLabel ?? label;
    const description = info ? /* @__PURE__ */ (0, import_jsx_runtime601.jsx)(menu_exports.ItemDescription, { children: info }) : null;
    let prefix2;
    if (icon) {
      prefix2 = (0, import_element378.isValidElement)(icon) && (icon.type === "svg" || icon.type === import_primitives99.SVG) ? /* @__PURE__ */ (0, import_jsx_runtime601.jsx)(
        menu_exports.PrefixIcon,
        {
          icon,
          className: icon.props.className
        }
      ) : /* @__PURE__ */ (0, import_jsx_runtime601.jsx)(import_components228.Icon, { icon });
    }
    const itemShortcut = adaptShortcut(shortcut);
    const checked2 = isSelected2 ?? (ariaChecked === true || ariaChecked === "true");
    const isMixed = isSelected2 === void 0 && ariaChecked === "mixed";
    if (role === "menuitemcheckbox" && !isMixed) {
      return /* @__PURE__ */ (0, import_jsx_runtime601.jsxs)(
        menu_exports.CheckboxItem,
        {
          ref,
          "aria-label": itemAriaLabel,
          checked: checked2,
          closeOnClick: true,
          disabled: disabled2,
          onClick,
          prefix: prefix2,
          shortcut: itemShortcut,
          ...props,
          children: [
            itemLabel,
            description
          ]
        }
      );
    }
    if (href !== void 0 && !disabled2) {
      return /* @__PURE__ */ (0, import_jsx_runtime601.jsxs)(
        menu_exports.LinkItem,
        {
          ref,
          "aria-label": itemAriaLabel,
          closeOnClick: true,
          href,
          prefix: prefix2,
          shortcut: itemShortcut,
          target,
          onClick,
          ...props,
          children: [
            itemLabel,
            description
          ]
        }
      );
    }
    const checkableProps = role === "menuitemradio" || role === "menuitemcheckbox" ? { role, "aria-checked": isMixed ? "mixed" : checked2 } : {};
    return /* @__PURE__ */ (0, import_jsx_runtime601.jsxs)(
      menu_exports.Item,
      {
        ref,
        "aria-label": itemAriaLabel,
        disabled: disabled2,
        prefix: prefix2,
        shortcut: itemShortcut,
        onClick,
        ...checkableProps,
        ...props,
        children: [
          itemLabel,
          description
        ]
      }
    );
  }
  var more_menu_item_default = (0, import_element378.forwardRef)(UnforwardedMoreMenuItem);

  // packages/editor/build-module/components/mode-switcher/index.mjs
  var import_i18n304 = __toESM(require_i18n(), 1);
  var import_data203 = __toESM(require_data(), 1);
  var import_keyboard_shortcuts7 = __toESM(require_keyboard_shortcuts(), 1);
  var import_jsx_runtime602 = __toESM(require_jsx_runtime(), 1);
  var MODES = [
    {
      value: "visual",
      label: (0, import_i18n304.__)("Visual editor")
    },
    {
      value: "text",
      label: (0, import_i18n304.__)("Code editor")
    }
  ];
  function ModeSwitcher() {
    const { shortcut, isRichEditingEnabled, isCodeEditingEnabled, mode } = (0, import_data203.useSelect)(
      (select9) => ({
        shortcut: select9(import_keyboard_shortcuts7.store).getKeyboardShortcut(
          "core/editor/toggle-mode"
        ),
        isRichEditingEnabled: select9(store).getEditorSettings().richEditingEnabled,
        isCodeEditingEnabled: select9(store).getEditorSettings().codeEditingEnabled,
        mode: select9(store).getEditorMode()
      }),
      []
    );
    const { switchEditorMode: switchEditorMode2 } = (0, import_data203.useDispatch)(store);
    let selectedMode = mode;
    if (!isRichEditingEnabled && mode === "visual") {
      selectedMode = "text";
    }
    if (!isCodeEditingEnabled && mode === "text") {
      selectedMode = "visual";
    }
    const choices = MODES.map((choice) => {
      if (!isCodeEditingEnabled && choice.value === "text") {
        choice = {
          ...choice,
          disabled: true
        };
      }
      if (!isRichEditingEnabled && choice.value === "visual") {
        choice = {
          ...choice,
          disabled: true,
          info: (0, import_i18n304.__)(
            "You can enable the visual editor in your profile settings."
          )
        };
      }
      if (choice.value !== selectedMode && !choice.disabled) {
        return { ...choice, shortcut };
      }
      return choice;
    });
    return /* @__PURE__ */ (0, import_jsx_runtime602.jsx)(
      menu_exports.RadioGroup,
      {
        value: selectedMode,
        onValueChange: (value) => switchEditorMode2(value),
        children: /* @__PURE__ */ (0, import_jsx_runtime602.jsxs)(menu_exports.Group, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime602.jsx)(menu_exports.GroupLabel, { children: (0, import_i18n304.__)("Editor") }),
          choices.map((choice) => /* @__PURE__ */ (0, import_jsx_runtime602.jsxs)(
            menu_exports.RadioItem,
            {
              value: choice.value,
              disabled: choice.disabled,
              shortcut: choice.shortcut,
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime602.jsx)(menu_exports.ItemLabel, { children: choice.label }),
                choice.info && /* @__PURE__ */ (0, import_jsx_runtime602.jsx)(menu_exports.ItemDescription, { children: choice.info })
              ]
            },
            choice.value
          ))
        ] })
      }
    );
  }
  var mode_switcher_default = ModeSwitcher;

  // packages/editor/build-module/components/more-menu/more-menu-group.mjs
  var import_element379 = __toESM(require_element(), 1);
  var import_jsx_runtime603 = __toESM(require_jsx_runtime(), 1);
  function MoreMenuGroup({
    label,
    children
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime603.jsxs)(import_jsx_runtime603.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime603.jsx)(menu_exports.Separator, {}),
      /* @__PURE__ */ (0, import_jsx_runtime603.jsxs)(menu_exports.Group, { children: [
        label && /* @__PURE__ */ (0, import_jsx_runtime603.jsx)(menu_exports.GroupLabel, { children: label }),
        toMenuItems(children)
      ] })
    ] });
  }
  function toMenuItems(fills) {
    return import_element379.Children.map(fills, (fill) => {
      if (!(0, import_element379.isValidElement)(fill) || fill.type === more_menu_item_default) {
        return fill;
      }
      const label = /* @__PURE__ */ (0, import_jsx_runtime603.jsx)(menu_exports.ItemLabel, { children: null });
      const render5 = fill;
      return fill.props.href !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime603.jsx)(menu_exports.LinkItem, { "aria-labelledby": "", render: render5, children: label }) : /* @__PURE__ */ (0, import_jsx_runtime603.jsx)(menu_exports.Item, { nativeButton: true, "aria-labelledby": "", render: render5, children: label });
    });
  }

  // packages/editor/build-module/components/more-menu/more-menu-preference-item.mjs
  var import_a11y14 = __toESM(require_a11y(), 1);
  var import_data204 = __toESM(require_data(), 1);
  var import_i18n305 = __toESM(require_i18n(), 1);
  var import_preferences16 = __toESM(require_preferences(), 1);
  var import_jsx_runtime604 = __toESM(require_jsx_runtime(), 1);
  function MoreMenuPreferenceItem({
    scope,
    name: name2,
    label,
    info,
    messageActivated,
    messageDeactivated,
    shortcut,
    handleToggling = true,
    onToggle = () => null
  }) {
    const isActive = (0, import_data204.useSelect)(
      (select9) => !!select9(import_preferences16.store).get(scope, name2),
      [scope, name2]
    );
    const { toggle } = (0, import_data204.useDispatch)(import_preferences16.store);
    function speakMessage() {
      if (isActive) {
        (0, import_a11y14.speak)(
          messageDeactivated || (0, import_i18n305.sprintf)(
            /* translators: %s: preference name, e.g. 'Fullscreen mode' */
            (0, import_i18n305.__)("Preference deactivated - %s"),
            label
          )
        );
      } else {
        (0, import_a11y14.speak)(
          messageActivated || (0, import_i18n305.sprintf)(
            /* translators: %s: preference name, e.g. 'Fullscreen mode' */
            (0, import_i18n305.__)("Preference activated - %s"),
            label
          )
        );
      }
    }
    return /* @__PURE__ */ (0, import_jsx_runtime604.jsxs)(
      menu_exports.CheckboxItem,
      {
        checked: isActive,
        onCheckedChange: () => {
          onToggle();
          if (handleToggling) {
            toggle(scope, name2);
          }
          speakMessage();
        },
        shortcut,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime604.jsx)(menu_exports.ItemLabel, { children: label }),
          info ? /* @__PURE__ */ (0, import_jsx_runtime604.jsx)(menu_exports.ItemDescription, { children: info }) : null
        ]
      }
    );
  }

  // packages/editor/build-module/components/more-menu/tools-more-menu-group.mjs
  var import_components229 = __toESM(require_components(), 1);
  var { Fill: ToolsMoreMenuGroup, Slot: Slot11 } = (0, import_components229.createSlotFill)(
    /* @__PURE__ */ Symbol("ToolsMoreMenuGroup")
  );
  ToolsMoreMenuGroup.Slot = Slot11;
  var tools_more_menu_group_default = ToolsMoreMenuGroup;

  // packages/editor/build-module/components/more-menu/view-more-menu-group.mjs
  var import_components230 = __toESM(require_components(), 1);
  var { Fill: ViewMoreMenuGroup, Slot: Slot12 } = (0, import_components230.createSlotFill)(
    /* @__PURE__ */ Symbol("ViewMoreMenuGroup")
  );
  ViewMoreMenuGroup.Slot = Slot12;
  var view_more_menu_group_default = ViewMoreMenuGroup;

  // packages/editor/build-module/components/more-menu/index.mjs
  var import_jsx_runtime605 = __toESM(require_jsx_runtime(), 1);
  function MoreMenu({ isRevisionMode = false }) {
    const { openModal: openModal2 } = (0, import_data205.useDispatch)(store3);
    const { set: setPreference } = (0, import_data205.useDispatch)(import_preferences17.store);
    const { toggleDistractionFree: toggleDistractionFree2 } = (0, import_data205.useDispatch)(store);
    const showIconLabels = (0, import_data205.useSelect)(
      (select9) => select9(import_preferences17.store).get("core", "showIconLabels"),
      []
    );
    const turnOffDistractionFree = () => {
      setPreference("core", "distractionFree", false);
    };
    const trigger = /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(
      menu_exports.Trigger,
      {
        render: /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(
          import_components231.Button,
          {
            size: "compact",
            icon: more_vertical_default,
            label: (0, import_i18n306.__)("Options"),
            showTooltip: !showIconLabels,
            tooltipPosition: "bottom",
            variant: showIconLabels ? "tertiary" : void 0
          }
        )
      }
    );
    const positioner = /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(menu_exports.Positioner, { align: "end" });
    if (isRevisionMode) {
      return /* @__PURE__ */ (0, import_jsx_runtime605.jsxs)(menu_exports.Root, { modal: false, children: [
        trigger,
        /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(
          menu_exports.Popup,
          {
            className: "editor-more-menu__popup",
            positioner,
            children: /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(mode_switcher_default, {})
          }
        )
      ] });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime605.jsxs)(menu_exports.Root, { modal: false, children: [
      trigger,
      /* @__PURE__ */ (0, import_jsx_runtime605.jsxs)(
        menu_exports.Popup,
        {
          className: "editor-more-menu__popup",
          positioner,
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime605.jsxs)(menu_exports.Group, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(menu_exports.GroupLabel, { children: (0, import_i18n306._x)("View", "noun") }),
              /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(
                MoreMenuPreferenceItem,
                {
                  scope: "core",
                  name: "fixedToolbar",
                  onToggle: turnOffDistractionFree,
                  label: (0, import_i18n306.__)("Top toolbar"),
                  info: (0, import_i18n306.__)(
                    "Access all block and document tools in a single place"
                  ),
                  messageActivated: (0, import_i18n306.__)("Top toolbar activated."),
                  messageDeactivated: (0, import_i18n306.__)("Top toolbar deactivated.")
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(
                MoreMenuPreferenceItem,
                {
                  scope: "core",
                  name: "distractionFree",
                  label: (0, import_i18n306.__)("Distraction free"),
                  info: (0, import_i18n306.__)("Write with calmness"),
                  handleToggling: false,
                  onToggle: () => toggleDistractionFree2({ createNotice: false }),
                  messageActivated: (0, import_i18n306.__)(
                    "Distraction free mode activated."
                  ),
                  messageDeactivated: (0, import_i18n306.__)(
                    "Distraction free mode deactivated."
                  ),
                  shortcut: import_keycodes14.keyboardShortcut.primaryShift("\\")
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(
                MoreMenuPreferenceItem,
                {
                  scope: "core",
                  name: "focusMode",
                  label: (0, import_i18n306.__)("Spotlight mode"),
                  info: (0, import_i18n306.__)("Focus on one block at a time"),
                  messageActivated: (0, import_i18n306.__)("Spotlight mode activated."),
                  messageDeactivated: (0, import_i18n306.__)(
                    "Spotlight mode deactivated."
                  )
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(view_more_menu_group_default.Slot, {})
            ] }),
            /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(menu_exports.Separator, {}),
            /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(mode_switcher_default, {}),
            /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(
              action_item_default.Slot,
              {
                name: "core/plugin-more-menu",
                fillProps: { as: more_menu_item_default },
                children: (items) => /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(MoreMenuGroup, { label: (0, import_i18n306.__)("Panels"), children: items })
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(menu_exports.Separator, {}),
            /* @__PURE__ */ (0, import_jsx_runtime605.jsxs)(menu_exports.Group, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(menu_exports.GroupLabel, { children: (0, import_i18n306.__)("Tools") }),
              /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(
                menu_exports.Item,
                {
                  onClick: () => openModal2("editor/keyboard-shortcut-help"),
                  shortcut: import_keycodes14.keyboardShortcut.access("h"),
                  children: /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n306.__)("Keyboard shortcuts") })
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(CopyContentMenuItem, {}),
              /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(
                menu_exports.LinkItem,
                {
                  href: (0, import_i18n306.__)(
                    "https://wordpress.org/documentation/article/wordpress-block-editor/"
                  ),
                  openInNewTab: true,
                  children: /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n306.__)("Help") })
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(tools_more_menu_group_default.Slot, {})
            ] }),
            /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(menu_exports.Separator, {}),
            /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(menu_exports.Item, { onClick: () => openModal2("editor/preferences"), children: /* @__PURE__ */ (0, import_jsx_runtime605.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n306.__)("Preferences") }) })
          ]
        }
      )
    ] });
  }

  // packages/editor/build-module/components/post-publish-button/post-publish-button-or-toggle.mjs
  var import_compose80 = __toESM(require_compose(), 1);
  var import_data206 = __toESM(require_data(), 1);
  var import_jsx_runtime606 = __toESM(require_jsx_runtime(), 1);
  var IS_TOGGLE = "toggle";
  var IS_BUTTON = "button";
  function PostPublishButtonOrToggle({
    forceIsDirty,
    setEntitiesSavedStatesCallback
  }) {
    let component;
    const isSmallerThanMediumViewport = (0, import_compose80.useViewportMatch)("medium", "<");
    const { togglePublishSidebar: togglePublishSidebar2 } = (0, import_data206.useDispatch)(store);
    const {
      hasPublishAction,
      isBeingScheduled,
      isPending,
      isPublished,
      isPublishSidebarEnabled: isPublishSidebarEnabled2,
      isPublishSidebarOpened: isPublishSidebarOpened2,
      isScheduled,
      postStatus,
      postStatusHasChanged,
      postType: postType2
    } = (0, import_data206.useSelect)((select9) => {
      return {
        hasPublishAction: !!select9(store).getCurrentPost()?._links?.["wp:action-publish"],
        isBeingScheduled: select9(store).isEditedPostBeingScheduled(),
        isPending: select9(store).isCurrentPostPending(),
        isPublished: select9(store).isCurrentPostPublished(),
        isPublishSidebarEnabled: select9(store).isPublishSidebarEnabled(),
        isPublishSidebarOpened: select9(store).isPublishSidebarOpened(),
        isScheduled: select9(store).isCurrentPostScheduled(),
        postStatus: select9(store).getEditedPostAttribute("status"),
        postStatusHasChanged: select9(store).getPostEdits()?.status,
        postType: select9(store).getCurrentPostType()
      };
    }, []);
    if (postType2 === ATTACHMENT_POST_TYPE) {
      component = IS_BUTTON;
    } else if (isPublished || postStatusHasChanged && !["future", "publish"].includes(postStatus) || isScheduled && isBeingScheduled || isPending && !hasPublishAction && !isSmallerThanMediumViewport) {
      component = IS_BUTTON;
    } else if (isSmallerThanMediumViewport || isPublishSidebarEnabled2) {
      component = IS_TOGGLE;
    } else {
      component = IS_BUTTON;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime606.jsx)(
      post_publish_button_default,
      {
        forceIsDirty,
        isOpen: isPublishSidebarOpened2,
        isToggle: component === IS_TOGGLE,
        onToggle: togglePublishSidebar2,
        setEntitiesSavedStatesCallback
      }
    );
  }

  // packages/editor/build-module/components/post-view-link/index.mjs
  var import_i18n307 = __toESM(require_i18n(), 1);
  var import_components232 = __toESM(require_components(), 1);
  var import_core_data116 = __toESM(require_core_data(), 1);
  var import_data207 = __toESM(require_data(), 1);
  var import_preferences18 = __toESM(require_preferences(), 1);
  var import_jsx_runtime607 = __toESM(require_jsx_runtime(), 1);
  function PostViewLink() {
    const { hasLoaded, permalink, isPublished, label, showIconLabels } = (0, import_data207.useSelect)((select9) => {
      const postTypeSlug = select9(store).getCurrentPostType();
      const postType2 = select9(import_core_data116.store).getPostType(postTypeSlug);
      const { get } = select9(import_preferences18.store);
      return {
        permalink: select9(store).getPermalink(),
        isPublished: select9(store).isCurrentPostPublished(),
        label: postType2?.labels?.view_item,
        hasLoaded: !!postType2,
        showIconLabels: get("core", "showIconLabels")
      };
    }, []);
    if (!isPublished || !permalink || !hasLoaded) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime607.jsx)(
      import_components232.Button,
      {
        icon: external_default,
        label: label || (0, import_i18n307.__)("View post"),
        href: permalink,
        target: "_blank",
        showTooltip: !showIconLabels,
        size: "compact"
      }
    );
  }

  // packages/editor/build-module/components/preview-dropdown/index.mjs
  var import_compose81 = __toESM(require_compose(), 1);
  var import_components233 = __toESM(require_components(), 1);
  var import_i18n308 = __toESM(require_i18n(), 1);
  var import_data208 = __toESM(require_data(), 1);
  var import_core_data117 = __toESM(require_core_data(), 1);
  var import_preferences19 = __toESM(require_preferences(), 1);
  var import_block_editor72 = __toESM(require_block_editor(), 1);

  // packages/editor/build-module/components/sidebar/constants.mjs
  var sidebars = {
    document: "edit-post/document",
    block: "edit-post/block"
  };

  // packages/editor/build-module/components/preview-dropdown/index.mjs
  var import_jsx_runtime608 = __toESM(require_jsx_runtime(), 1);
  var { getViewportBreakpoints: getViewportBreakpoints5 } = unlock(privateApis);
  function PreviewMenu({ forceIsAutosaveable, disabled: disabled2 }) {
    const {
      deviceType,
      homeUrl,
      hasMobileViewport,
      hasTabletViewport,
      isTemplate: isTemplate2,
      isViewable,
      showIconLabels,
      isTemplateHidden,
      hasRenderingMode,
      templateId: templateId2,
      isResponsiveEditing,
      isResponsiveEditingEnabled,
      hasBlockSelection,
      activeComplementaryArea
    } = (0, import_data208.useSelect)((select9) => {
      const {
        getCurrentPostType: getCurrentPostType2,
        getCurrentTemplateId: getCurrentTemplateId2,
        getRenderingMode: getRenderingMode2,
        getDeviceType: getDeviceType2,
        getEditorSettings: getEditorSettings2
      } = unlock(select9(store));
      const {
        isResponsiveEditing: _isResponsiveEditing,
        getBlockSelectionStart: getBlockSelectionStart2,
        getSettings: getSettings12
      } = unlock(select9(import_block_editor72.store));
      const { getEntityRecord, getPostType } = select9(import_core_data117.store);
      const { get } = select9(import_preferences19.store);
      const _currentPostType = getCurrentPostType2();
      const viewportBreakpoints = getViewportBreakpoints5(
        getSettings12().__experimentalFeatures?.viewport
      );
      return {
        deviceType: getDeviceType2(),
        homeUrl: getEntityRecord("root", "__unstableBase")?.home,
        hasMobileViewport: viewportBreakpoints.mobile !== void 0,
        hasTabletViewport: viewportBreakpoints.tablet !== void 0,
        isTemplate: _currentPostType === "wp_template",
        isViewable: getPostType(_currentPostType)?.viewable ?? false,
        showIconLabels: get("core", "showIconLabels"),
        isTemplateHidden: getRenderingMode2() === "post-only",
        hasRenderingMode: !!getEditorSettings2().renderingMode,
        templateId: getCurrentTemplateId2(),
        isResponsiveEditing: _isResponsiveEditing(),
        isResponsiveEditingEnabled: getEditorSettings2().responsiveEditingEnabled,
        hasBlockSelection: !!getBlockSelectionStart2(),
        activeComplementaryArea: select9(store3).getActiveComplementaryArea("core")
      };
    }, []);
    const { setDeviceType: setDeviceType2, setRenderingMode: setRenderingMode2, setDefaultRenderingMode: setDefaultRenderingMode2 } = unlock(
      (0, import_data208.useDispatch)(store)
    );
    const { resetZoomLevel, setStyleStateViewport, setResponsiveEditing } = unlock((0, import_data208.useDispatch)(import_block_editor72.store));
    const { enableComplementaryArea: enableComplementaryArea2 } = (0, import_data208.useDispatch)(store3);
    const handleDevicePreviewChange = (newDeviceType) => {
      setDeviceType2(newDeviceType);
      resetZoomLevel();
    };
    const handleResponsiveEditingChange = (newIsResponsiveEditing) => {
      setResponsiveEditing(newIsResponsiveEditing);
      setStyleStateViewport(
        newIsResponsiveEditing ? VIEWPORT_STATE_BY_DEVICE_TYPE[deviceType] ?? "default" : "default"
      );
      if (newIsResponsiveEditing && hasBlockSelection && !activeComplementaryArea) {
        enableComplementaryArea2("core", sidebars.block);
      }
    };
    const deviceIcons = {
      desktop: desktop_default,
      mobile: mobile_default,
      tablet: tablet_default
    };
    const choices = [
      {
        value: "Desktop",
        label: (0, import_i18n308.__)("Desktop"),
        info: isResponsiveEditing ? (0, import_i18n308.__)("Style all viewports.") : (0, import_i18n308.__)("Preview desktop viewport.")
      },
      ...hasTabletViewport ? [
        {
          value: "Tablet",
          label: (0, import_i18n308.__)("Tablet"),
          info: isResponsiveEditing ? (0, import_i18n308.__)("Style tablet only.") : (0, import_i18n308.__)("Preview tablet viewport.")
        }
      ] : [],
      ...hasMobileViewport ? [
        {
          value: "Mobile",
          label: (0, import_i18n308.__)("Mobile"),
          info: isResponsiveEditing ? (0, import_i18n308.__)("Style mobile only.") : (0, import_i18n308.__)("Preview mobile viewport.")
        }
      ] : []
    ];
    return /* @__PURE__ */ (0, import_jsx_runtime608.jsxs)(menu_exports.Root, { modal: false, disabled: disabled2, children: [
      /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(
        menu_exports.Trigger,
        {
          render: /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(
            import_components233.Button,
            {
              className: clsx_default("editor-preview-dropdown__toggle", {
                "is-responsive-editing": isResponsiveEditing
              }),
              size: "compact",
              icon: deviceIcons[deviceType.toLowerCase()],
              label: (0, import_i18n308.__)("View"),
              showTooltip: !showIconLabels,
              disabled: disabled2,
              accessibleWhenDisabled: disabled2
            }
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime608.jsxs)(
        menu_exports.Popup,
        {
          className: "editor-preview-dropdown__popup",
          positioner: /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.Positioner, { align: "end" }),
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(
              menu_exports.RadioGroup,
              {
                value: deviceType,
                onValueChange: (value) => handleDevicePreviewChange(value),
                children: /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.Group, { children: choices.map((choice) => /* @__PURE__ */ (0, import_jsx_runtime608.jsxs)(
                  menu_exports.RadioItem,
                  {
                    value: choice.value,
                    children: [
                      /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.ItemLabel, { children: choice.label }),
                      /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.ItemDescription, { children: choice.info })
                    ]
                  },
                  choice.value
                )) })
              }
            ),
            isResponsiveEditingEnabled && /* @__PURE__ */ (0, import_jsx_runtime608.jsxs)(import_jsx_runtime608.Fragment, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.Separator, {}),
              /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime608.jsxs)(
                menu_exports.CheckboxItem,
                {
                  checked: isResponsiveEditing,
                  onCheckedChange: handleResponsiveEditingChange,
                  children: [
                    /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n308.__)("Responsive styles") }),
                    /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.ItemDescription, { children: (0, import_i18n308.__)(
                      "Style changes apply only to the selected viewport."
                    ) })
                  ]
                }
              ) })
            ] }),
            isTemplate2 && /* @__PURE__ */ (0, import_jsx_runtime608.jsxs)(import_jsx_runtime608.Fragment, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.Separator, {}),
              /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(
                menu_exports.LinkItem,
                {
                  href: homeUrl,
                  openInNewTab: true,
                  closeOnClick: true,
                  children: /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n308.__)("View site") })
                }
              ) })
            ] }),
            !isTemplate2 && !!templateId2 && !hasRenderingMode && /* @__PURE__ */ (0, import_jsx_runtime608.jsxs)(import_jsx_runtime608.Fragment, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.Separator, {}),
              /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(
                menu_exports.CheckboxItem,
                {
                  checked: !isTemplateHidden,
                  onCheckedChange: (checked2) => {
                    const newRenderingMode = checked2 ? "template-locked" : "post-only";
                    setRenderingMode2(newRenderingMode);
                    setDefaultRenderingMode2(newRenderingMode);
                    resetZoomLevel();
                  },
                  children: /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n308.__)("Show template") })
                }
              ) })
            ] }),
            isViewable && /* @__PURE__ */ (0, import_jsx_runtime608.jsxs)(import_jsx_runtime608.Fragment, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.Separator, {}),
              /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(menu_exports.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(
                PostPreviewMenuItem,
                {
                  forceIsAutosaveable
                }
              ) })
            ] }),
            /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(
              action_item_default.Slot,
              {
                name: "core/plugin-preview-menu",
                fillProps: { as: more_menu_item_default },
                children: (items) => /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(MoreMenuGroup, { children: items })
              }
            )
          ]
        }
      )
    ] });
  }
  function PreviewDropdown(props) {
    const isMobile = (0, import_compose81.useViewportMatch)("medium", "<");
    if (isMobile) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime608.jsx)(PreviewMenu, { ...props });
  }

  // packages/editor/build-module/components/zoom-out-toggle/index.mjs
  var import_components234 = __toESM(require_components(), 1);
  var import_i18n309 = __toESM(require_i18n(), 1);
  var import_element380 = __toESM(require_element(), 1);
  var import_data209 = __toESM(require_data(), 1);
  var import_block_editor73 = __toESM(require_block_editor(), 1);
  var import_preferences20 = __toESM(require_preferences(), 1);
  var import_keyboard_shortcuts8 = __toESM(require_keyboard_shortcuts(), 1);
  var import_keycodes15 = __toESM(require_keycodes(), 1);
  var import_jsx_runtime609 = __toESM(require_jsx_runtime(), 1);
  var ZoomOutToggle = ({ disabled: disabled2 }) => {
    const { isZoomOut, showIconLabels, isDistractionFree } = (0, import_data209.useSelect)(
      (select9) => ({
        isZoomOut: unlock(select9(import_block_editor73.store)).isZoomOut(),
        showIconLabels: select9(import_preferences20.store).get(
          "core",
          "showIconLabels"
        ),
        isDistractionFree: select9(import_preferences20.store).get(
          "core",
          "distractionFree"
        )
      })
    );
    const { resetZoomLevel, setZoomLevel } = unlock(
      (0, import_data209.useDispatch)(import_block_editor73.store)
    );
    const { registerShortcut, unregisterShortcut } = (0, import_data209.useDispatch)(
      import_keyboard_shortcuts8.store
    );
    (0, import_element380.useEffect)(() => {
      registerShortcut({
        name: "core/editor/zoom",
        category: "global",
        description: (0, import_i18n309.__)("Enter or exit zoom out."),
        keyCombination: {
          // `primaryShift+0` (`ctrl+shift+0`) is the shortcut for switching
          // to input mode in Windows, so apply a different key combination.
          modifier: (0, import_keycodes15.isAppleOS)() ? "primaryShift" : "secondary",
          character: "0"
        }
      });
      return () => {
        unregisterShortcut("core/editor/zoom");
      };
    }, [registerShortcut, unregisterShortcut]);
    (0, import_keyboard_shortcuts8.useShortcut)(
      "core/editor/zoom",
      () => {
        if (isZoomOut) {
          resetZoomLevel();
        } else {
          setZoomLevel("auto-scaled");
        }
      },
      {
        isDisabled: isDistractionFree
      }
    );
    const handleZoomOut = () => {
      if (isZoomOut) {
        resetZoomLevel();
      } else {
        setZoomLevel("auto-scaled");
      }
    };
    return /* @__PURE__ */ (0, import_jsx_runtime609.jsx)(
      import_components234.Button,
      {
        accessibleWhenDisabled: true,
        disabled: disabled2,
        onClick: handleZoomOut,
        icon: square_default,
        label: (0, import_i18n309.__)("Zoom Out"),
        isPressed: isZoomOut,
        size: "compact",
        showTooltip: !showIconLabels,
        className: "editor-zoom-out-toggle"
      }
    );
  };
  var zoom_out_toggle_default = ZoomOutToggle;

  // packages/editor/build-module/components/collaborators-presence/index.mjs
  var import_components237 = __toESM(require_components(), 1);
  var import_element388 = __toESM(require_element(), 1);
  var import_core_data122 = __toESM(require_core_data(), 1);
  var import_i18n315 = __toESM(require_i18n(), 1);

  // node_modules/colord/plugins/a11y.mjs
  var o2 = function(o3) {
    var t3 = o3 / 255;
    return t3 < 0.04045 ? t3 / 12.92 : Math.pow((t3 + 0.055) / 1.055, 2.4);
  };
  var t2 = function(t3) {
    return 0.2126 * o2(t3.r) + 0.7152 * o2(t3.g) + 0.0722 * o2(t3.b);
  };
  var r3 = function(o3) {
    o3.prototype.luminance = function() {
      return o4 = t2(this.rgba), void 0 === (r4 = 2) && (r4 = 0), void 0 === n2 && (n2 = Math.pow(10, r4)), Math.round(n2 * o4) / n2 + 0;
      var o4, r4, n2;
    }, o3.prototype.contrast = function(r4) {
      void 0 === r4 && (r4 = "#FFF");
      var n2, a2, i2, e2, v3, u2, d2, c6 = r4 instanceof o3 ? r4 : new o3(r4);
      return e2 = this.rgba, v3 = c6.toRgb(), u2 = t2(e2), d2 = t2(v3), 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;
    }, o3.prototype.isReadable = function(o4, t3) {
      return void 0 === o4 && (o4 = "#FFF"), void 0 === t3 && (t3 = {}), this.contrast(o4) >= (e2 = void 0 === (i2 = (r4 = t3).size) ? "normal" : i2, "AAA" === (a2 = void 0 === (n2 = r4.level) ? "AA" : n2) && "normal" === e2 ? 7 : "AA" === a2 && "large" === e2 ? 3 : 4.5);
      var r4, n2, a2, i2, e2;
    };
  };

  // packages/editor/build-module/components/collaborators-presence/avatar/component.mjs
  var import_components235 = __toESM(require_components(), 1);
  var import_element382 = __toESM(require_element(), 1);

  // packages/editor/build-module/components/collaborators-presence/avatar/use-image-loading-status.mjs
  var import_element381 = __toESM(require_element(), 1);
  function useImageLoadingStatus(src) {
    const [prevSrc, setPrevSrc] = (0, import_element381.useState)(src);
    const [status, setStatus] = (0, import_element381.useState)(
      src ? "loading" : "idle"
    );
    if (prevSrc !== src) {
      setPrevSrc(src);
      setStatus(src ? "loading" : "idle");
    }
    const handleLoad = (0, import_element381.useCallback)(() => setStatus("loaded"), []);
    const handleError = (0, import_element381.useCallback)(() => setStatus("error"), []);
    return { status, handleLoad, handleError };
  }

  // packages/editor/build-module/components/collaborators-presence/avatar/component.mjs
  var import_jsx_runtime610 = __toESM(require_jsx_runtime(), 1);
  D([r3]);
  var GRAY_900 = "#1e1e1e";
  var WHITE = "#fff";
  function Avatar({
    className,
    src,
    name: name2,
    label,
    variant,
    size: size4 = "default",
    borderColor,
    dimmed = false,
    statusIndicator,
    style,
    ...props
  }) {
    const {
      status: imageStatus,
      handleLoad,
      handleError
    } = useImageLoadingStatus(src);
    const imageLoaded = imageStatus === "loaded";
    const showBadge = variant === "badge" && !!name2;
    const initials = name2 ? name2.split(/\s+/).slice(0, 2).map((word) => word[0]).join("").toUpperCase() : void 0;
    const nameColor = (0, import_element382.useMemo)(
      () => borderColor && A(borderColor).isReadable(GRAY_900, {
        level: "AA",
        size: "normal"
      }) ? GRAY_900 : WHITE,
      [borderColor]
    );
    const customProperties = {
      ...style,
      ...borderColor ? {
        "--editor-avatar-outline-color": borderColor,
        "--editor-avatar-name-color": nameColor
      } : {}
    };
    const avatar = /* @__PURE__ */ (0, import_jsx_runtime610.jsxs)(
      "div",
      {
        className: clsx_default("editor-avatar", className, {
          "has-avatar-border-color": !!borderColor,
          "has-src": imageLoaded,
          "is-badge": showBadge,
          "is-small": size4 === "small",
          "is-dimmed": dimmed
        }),
        style: customProperties,
        role: name2 ? "img" : void 0,
        "aria-label": name2 || void 0,
        ...props,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime610.jsxs)("span", { className: "editor-avatar__image", children: [
            src && /* @__PURE__ */ (0, import_jsx_runtime610.jsx)(
              "img",
              {
                src,
                alt: "",
                crossOrigin: "anonymous",
                className: "editor-avatar__img",
                onLoad: handleLoad,
                onError: handleError
              }
            ),
            !imageLoaded && initials
          ] }),
          dimmed && !!statusIndicator && /* @__PURE__ */ (0, import_jsx_runtime610.jsx)("span", { className: "editor-avatar__status-indicator", children: /* @__PURE__ */ (0, import_jsx_runtime610.jsx)(import_components235.Icon, { icon: statusIndicator }) }),
          showBadge && /* @__PURE__ */ (0, import_jsx_runtime610.jsx)("span", { className: "editor-avatar__name", children: label || name2 })
        ]
      }
    );
    if (name2 && (!showBadge || label)) {
      return /* @__PURE__ */ (0, import_jsx_runtime610.jsxs)(tooltip_exports.Root, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime610.jsx)(tooltip_exports.Trigger, { render: avatar }),
        /* @__PURE__ */ (0, import_jsx_runtime610.jsx)(tooltip_exports.Popup, { children: name2 })
      ] });
    }
    return avatar;
  }
  var component_default = Avatar;

  // packages/editor/build-module/components/collaborators-presence/avatar-group/component.mjs
  var import_element383 = __toESM(require_element(), 1);
  var import_i18n310 = __toESM(require_i18n(), 1);
  var import_jsx_runtime611 = __toESM(require_jsx_runtime(), 1);
  function AvatarGroup({
    className,
    max: max4 = 3,
    children,
    ...props
  }) {
    const childArray = import_element383.Children.toArray(children);
    const visible = childArray.slice(0, max4);
    const overflowCount = childArray.length - max4;
    return /* @__PURE__ */ (0, import_jsx_runtime611.jsxs)(
      "div",
      {
        role: "group",
        className: clsx_default("editor-avatar-group", className),
        ...props,
        children: [
          visible,
          overflowCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime611.jsx)(
            "span",
            {
              className: "editor-avatar-group__overflow",
              "aria-label": (0, import_i18n310.sprintf)(
                /* translators: %d: number of additional collaborators not shown */
                (0, import_i18n310._n)(
                  "%d more collaborator",
                  "%d more collaborators",
                  overflowCount
                ),
                overflowCount
              ),
              children: `+${overflowCount}`
            }
          )
        ]
      }
    );
  }
  var component_default2 = AvatarGroup;

  // packages/editor/build-module/components/collaborators-presence/list.mjs
  var import_i18n313 = __toESM(require_i18n(), 1);
  var import_components236 = __toESM(require_components(), 1);
  var import_a11y16 = __toESM(require_a11y(), 1);

  // packages/editor/build-module/components/collaborators-overlay/get-avatar-url.mjs
  function getAvatarUrl(avatarUrls) {
    return avatarUrls?.["48"] || avatarUrls?.["96"] || avatarUrls?.["24"];
  }

  // packages/editor/build-module/components/collab-sidebar/utils.mjs
  var import_i18n311 = __toESM(require_i18n(), 1);
  var import_rich_text6 = __toESM(require_rich_text(), 1);
  var import_dom36 = __toESM(require_dom(), 1);
  function sanitizeNoteContent(str3) {
    return str3.trim();
  }
  var THREAD_ALIGN_OFFSET = -16;
  var THREAD_GAP = 16;
  var OVERLAP_MARGIN = 20;
  var AVATAR_BORDER_COLORS = [
    "#6F42C1",
    // Purple
    "#D94145",
    // Red
    "#FBBF24",
    // Orange
    "#FF35EE",
    // Magenta
    "#879F11",
    // Olive
    "#0F766E",
    // Teal
    "#00CFFF"
    // Cyan
  ];
  function getAvatarBorderColor(userId) {
    return AVATAR_BORDER_COLORS[userId % AVATAR_BORDER_COLORS.length];
  }
  function getNoteExcerpt(text, excerptLength = 10) {
    if (!text) {
      return "";
    }
    const wordCountType = (0, import_i18n311._x)("words", "Word count type. Do not translate!");
    const rawText = text.trim();
    let trimmedExcerpt = "";
    if (wordCountType === "words") {
      trimmedExcerpt = rawText.split(" ", excerptLength).join(" ");
    } else if (wordCountType === "characters_excluding_spaces") {
      const textWithSpaces = rawText.split("", excerptLength).join("");
      const numberOfSpaces = textWithSpaces.length - textWithSpaces.replaceAll(" ", "").length;
      trimmedExcerpt = rawText.split("", excerptLength + numberOfSpaces).join("");
    } else if (wordCountType === "characters_including_spaces") {
      trimmedExcerpt = rawText.split("", excerptLength).join("");
    }
    const isTrimmed = trimmedExcerpt !== rawText;
    return isTrimmed ? trimmedExcerpt + "\u2026" : trimmedExcerpt;
  }
  function getNoteIdsFromMetadata(metadata) {
    const noteId = metadata?.noteId;
    const raw = Array.isArray(noteId) ? noteId : [noteId];
    const ids = /* @__PURE__ */ new Set();
    for (const value of raw) {
      const id = Number(value);
      if (Number.isFinite(id) && id > 0) {
        ids.add(id);
      }
    }
    return [...ids];
  }
  function addNoteIdToMetadata(metadata, noteId) {
    const ids = new Set(getNoteIdsFromMetadata(metadata));
    const id = Number(noteId);
    if (ids.has(id)) {
      return metadata;
    }
    ids.add(id);
    return { ...metadata, noteId: [...ids] };
  }
  var NOTE_FORMAT_TYPE = "core/note";
  function findNoteRange(value, noteId) {
    if (noteId === void 0 || noteId === null) {
      return null;
    }
    let html = null;
    if (value instanceof import_rich_text6.RichTextData) {
      html = value.toHTMLString();
    } else if (typeof value === "string") {
      html = value;
    }
    if (!html || html.indexOf("wp-note") === -1) {
      return null;
    }
    const target = String(noteId);
    const record = (0, import_rich_text6.create)({ html });
    const formats = record.formats;
    let start2 = -1;
    for (let i2 = 0; i2 < formats.length; i2++) {
      const stack = formats[i2];
      const hit = stack?.find(
        (f2) => f2.type === NOTE_FORMAT_TYPE && f2.attributes && f2.attributes["data-id"] === target
      );
      if (hit) {
        if (start2 === -1) {
          start2 = i2;
        }
      } else if (start2 !== -1) {
        return { start: start2, end: i2 };
      }
    }
    if (start2 !== -1) {
      return { start: start2, end: formats.length };
    }
    return null;
  }
  function findNoteInBlock(attributes, noteId) {
    if (!attributes) {
      return null;
    }
    for (const attributeKey of Object.keys(attributes)) {
      const range = findNoteRange(attributes[attributeKey], noteId);
      if (range) {
        return { attributeKey, start: range.start, end: range.end };
      }
    }
    return null;
  }
  function getNoteMarkerSelector(noteId) {
    const escapedId = String(noteId).replace(
      /["\\\n\r\f]/g,
      (char) => char === '"' || char === "\\" ? `\\${char}` : `\\${char.codePointAt(0).toString(16)} `
    );
    return `mark.wp-note[data-id="${escapedId}"]`;
  }
  function getSelectionRect(blockEl) {
    const selection = blockEl.ownerDocument.defaultView?.getSelection();
    if (!selection || selection.rangeCount === 0 || selection.isCollapsed) {
      return null;
    }
    const range = selection.getRangeAt(0);
    if (range.collapsed) {
      return null;
    }
    if (!blockEl.contains(range.commonAncestorContainer)) {
      return null;
    }
    const rect = (0, import_dom36.getRectangleFromRange)(range);
    if (!rect || rect.width === 0 && rect.height === 0) {
      return null;
    }
    return rect;
  }
  var BLOCK_LEVEL_NOTE_START = -1;
  function getInlineMarkerStart(thread, attributes) {
    const found = findNoteInBlock(attributes, thread?.id);
    return found ? found.start : BLOCK_LEVEL_NOTE_START;
  }
  function applyNoteFormat(record, format7, start2, end) {
    const formats = record.formats.slice();
    for (let i2 = start2; i2 < end; i2++) {
      const stack = formats[i2] ? formats[i2].slice() : [];
      stack.push(format7);
      formats[i2] = stack;
    }
    const spans = /* @__PURE__ */ new Map();
    for (let i2 = 0; i2 < formats.length; i2++) {
      const stack = formats[i2];
      if (!stack) {
        continue;
      }
      for (const fmt of stack) {
        if (fmt.type !== NOTE_FORMAT_TYPE) {
          continue;
        }
        const id = fmt.attributes?.["data-id"];
        const span = spans.get(id);
        if (span) {
          span.end = i2;
        } else {
          spans.set(id, { start: i2, end: i2 });
        }
      }
    }
    const sizeOf = (id) => {
      const span = spans.get(id);
      return span ? span.end - span.start : 0;
    };
    for (let i2 = 0; i2 < formats.length; i2++) {
      const stack = formats[i2];
      if (!stack || stack.length < 2) {
        continue;
      }
      const notes = stack.filter((fmt) => fmt.type === NOTE_FORMAT_TYPE);
      if (notes.length === 0) {
        continue;
      }
      if (notes.length > 1) {
        notes.sort(
          (a2, b2) => sizeOf(b2.attributes?.["data-id"]) - sizeOf(a2.attributes?.["data-id"])
        );
      }
      const others = stack.filter((fmt) => fmt.type !== NOTE_FORMAT_TYPE);
      formats[i2] = [...notes, ...others];
    }
    return { ...record, formats };
  }
  function removeNoteFormat(value, noteId) {
    if (!(value instanceof import_rich_text6.RichTextData)) {
      return null;
    }
    const target = String(noteId);
    const record = (0, import_rich_text6.create)({ html: value.toHTMLString() });
    let changed = false;
    const formats = record.formats.map((stack) => {
      if (!stack) {
        return stack;
      }
      const filtered = stack.filter(
        (format7) => !(format7.type === NOTE_FORMAT_TYPE && format7.attributes?.["data-id"] === target)
      );
      if (filtered.length === stack.length) {
        return stack;
      }
      changed = true;
      return filtered.length ? filtered : void 0;
    });
    return changed ? import_rich_text6.RichTextData.fromHTMLString(
      new import_rich_text6.RichTextData({ ...record, formats }).toHTMLString()
    ) : null;
  }
  function pickPrimaryNote(threads) {
    return threads.find((thread) => thread.status === "hold") ?? threads[0] ?? null;
  }
  function removeNoteIdFromMetadata(metadata, noteId) {
    const ids = new Set(getNoteIdsFromMetadata(metadata));
    ids.delete(Number(noteId));
    return {
      ...metadata,
      noteId: ids.size > 0 ? [...ids] : void 0
    };
  }
  function calculateNotePositions({
    threads,
    selectedNoteId,
    blockRects,
    heights,
    scrollTop = 0
  }) {
    const offsets = {};
    const orderedThreads = [...threads].sort(
      (a2, b2) => (blockRects[a2.id]?.top ?? Number.MAX_VALUE) - (blockRects[b2.id]?.top ?? Number.MAX_VALUE)
    );
    const anchorIndex = Math.max(
      0,
      orderedThreads.findIndex((thread) => thread.id === selectedNoteId)
    );
    const anchorThread = orderedThreads[anchorIndex];
    if (!anchorThread || !blockRects[anchorThread.id]) {
      return { positions: {} };
    }
    const anchorRect = blockRects[anchorThread.id];
    const anchorTop = anchorRect.top || 0;
    const anchorHeight2 = heights[anchorThread.id] || 0;
    offsets[anchorThread.id] = THREAD_ALIGN_OFFSET;
    let prevAdjustedTop = anchorTop + THREAD_ALIGN_OFFSET;
    let prevHeight = anchorHeight2;
    for (let i2 = anchorIndex + 1; i2 < orderedThreads.length; i2++) {
      const thread = orderedThreads[i2];
      const threadRect = blockRects[thread.id];
      if (!threadRect) {
        continue;
      }
      const threadTop = threadRect.top || 0;
      const threadHeight = heights[thread.id] || 0;
      let offset4 = THREAD_ALIGN_OFFSET;
      const prevBottom = prevAdjustedTop + prevHeight;
      if (threadTop < prevBottom + THREAD_GAP) {
        offset4 = prevBottom - threadTop + OVERLAP_MARGIN;
      }
      offsets[thread.id] = offset4;
      prevAdjustedTop = threadTop + offset4;
      prevHeight = threadHeight;
    }
    let belowAdjustedTop = anchorTop + THREAD_ALIGN_OFFSET;
    for (let i2 = anchorIndex - 1; i2 >= 0; i2--) {
      const thread = orderedThreads[i2];
      const threadRect = blockRects[thread.id];
      if (!threadRect) {
        continue;
      }
      const threadTop = threadRect.top || 0;
      const threadHeight = heights[thread.id] || 0;
      let offset4 = THREAD_ALIGN_OFFSET;
      const threadBottom = threadTop + threadHeight;
      if (threadBottom > belowAdjustedTop) {
        offset4 = belowAdjustedTop - threadTop - threadHeight - OVERLAP_MARGIN;
      }
      offsets[thread.id] = offset4;
      belowAdjustedTop = threadTop + offset4;
    }
    const positions = {};
    for (const thread of orderedThreads) {
      const blockRect = blockRects[thread.id];
      if (blockRect && offsets[thread.id] !== void 0) {
        positions[thread.id] = blockRect.top + scrollTop + offsets[thread.id];
      }
    }
    return { positions };
  }
  function findNoteThread(noteId, container, additionalSelector) {
    if (!container) {
      return Promise.resolve(null);
    }
    const threadSelector = noteId && noteId !== "new" ? `[role=treeitem][id="note-thread-${noteId}"]` : "[role=treeitem]:not([id])";
    const selector2 = additionalSelector ? `${threadSelector} ${additionalSelector}` : threadSelector;
    return new Promise((resolve) => {
      if (container.querySelector(selector2)) {
        return resolve(container.querySelector(selector2));
      }
      let timer = null;
      const observer = new window.MutationObserver(() => {
        if (container.querySelector(selector2)) {
          clearTimeout(timer);
          observer.disconnect();
          resolve(container.querySelector(selector2));
        }
      });
      observer.observe(container, { childList: true, subtree: true });
      timer = setTimeout(() => {
        observer.disconnect();
        resolve(null);
      }, 3e3);
    });
  }
  function focusNoteThread(noteId, container, additionalSelector) {
    return findNoteThread(noteId, container, additionalSelector).then(
      (element) => {
        if (!element) {
          return;
        }
        element.focus();
        element.scrollIntoView({ block: "nearest" });
      }
    );
  }
  function scrollNoteThreadIntoView(noteId, container) {
    return findNoteThread(noteId, container).then((element) => {
      element?.scrollIntoView({ block: "nearest" });
    });
  }

  // packages/editor/build-module/utils/get-collaborator-display-name.mjs
  var import_i18n312 = __toESM(require_i18n(), 1);
  function getCollaboratorDisplayName(collaboratorInfo) {
    return null === collaboratorInfo.id ? (0, import_i18n312.__)("Anonymous User") : collaboratorInfo.name;
  }

  // packages/editor/build-module/components/collaborators-presence/list.mjs
  var import_jsx_runtime612 = __toESM(require_jsx_runtime(), 1);
  function CollaboratorsList({
    activeCollaborators,
    popoverAnchor,
    setIsPopoverVisible,
    cursorRegistry
  }) {
    const handleCollaboratorClick = (clientId) => {
      const success = cursorRegistry.scrollToCursor(clientId, {
        behavior: "smooth",
        block: "center",
        highlightDuration: 2e3
      });
      if (success) {
        (0, import_a11y16.speak)((0, import_i18n313.__)("Scrolled to cursor"), "polite");
        setIsPopoverVisible(false);
      }
    };
    return /* @__PURE__ */ (0, import_jsx_runtime612.jsx)(
      import_components236.Popover,
      {
        anchor: popoverAnchor,
        placement: "bottom",
        offset: 8,
        className: "editor-collaborators-presence__list",
        onClose: () => setIsPopoverVisible(false),
        children: /* @__PURE__ */ (0, import_jsx_runtime612.jsxs)("div", { className: "editor-collaborators-presence__list-content", children: [
          /* @__PURE__ */ (0, import_jsx_runtime612.jsxs)("div", { className: "editor-collaborators-presence__list-header", children: [
            /* @__PURE__ */ (0, import_jsx_runtime612.jsxs)("div", { className: "editor-collaborators-presence__list-header-title", children: [
              (0, import_i18n313.__)("Collaborators"),
              /* @__PURE__ */ (0, import_jsx_runtime612.jsx)("span", { children: activeCollaborators.length })
            ] }),
            /* @__PURE__ */ (0, import_jsx_runtime612.jsx)("div", { className: "editor-collaborators-presence__list-header-action", children: /* @__PURE__ */ (0, import_jsx_runtime612.jsx)(
              import_components236.Button,
              {
                __next40pxDefaultSize: true,
                icon: close_small_default,
                iconSize: 24,
                label: (0, import_i18n313.__)("Close Collaborators List"),
                onClick: () => setIsPopoverVisible(false)
              }
            ) })
          ] }),
          /* @__PURE__ */ (0, import_jsx_runtime612.jsx)("div", { className: "editor-collaborators-presence__list-items", children: activeCollaborators.map((collaboratorState) => {
            const isCurrentUser = collaboratorState.isMe;
            const displayName = getCollaboratorDisplayName(
              collaboratorState.collaboratorInfo
            );
            return /* @__PURE__ */ (0, import_jsx_runtime612.jsxs)(
              "button",
              {
                className: "editor-collaborators-presence__list-item",
                disabled: isCurrentUser,
                onClick: () => handleCollaboratorClick(
                  collaboratorState.clientId
                ),
                children: [
                  /* @__PURE__ */ (0, import_jsx_runtime612.jsx)(
                    component_default,
                    {
                      src: getAvatarUrl(
                        collaboratorState.collaboratorInfo.avatar_urls
                      ),
                      name: displayName,
                      borderColor: isCurrentUser ? "var(--wp-admin-theme-color)" : getAvatarBorderColor(
                        collaboratorState.collaboratorInfo.id ?? collaboratorState.clientId
                      ),
                      dimmed: !collaboratorState.isConnected
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime612.jsx)("div", { className: "editor-collaborators-presence__list-item-info", children: /* @__PURE__ */ (0, import_jsx_runtime612.jsx)("div", { className: "editor-collaborators-presence__list-item-name", children: isCurrentUser ? (0, import_i18n313.__)("You") : displayName }) })
                ]
              },
              collaboratorState.clientId
            );
          }) })
        ] })
      }
    );
  }

  // packages/editor/build-module/components/collaborators-overlay/cursor-registry.mjs
  function highlightCursor(element, duration) {
    element.classList.add("collaborators-overlay-cursor-highlighted");
    setTimeout(() => {
      element.classList.remove("collaborators-overlay-cursor-highlighted");
    }, duration);
  }
  function createCursorRegistry() {
    const cursorMap = /* @__PURE__ */ new Map();
    return {
      /**
       * Register a cursor element when it's created.
       *
       * @param clientId - The clientId of the cursor to register.
       * @param element  - The cursor element to register.
       */
      registerCursor(clientId, element) {
        cursorMap.set(clientId, element);
      },
      /**
       * Unregister a cursor element when it's removed.
       *
       * @param clientId - The clientId of the cursor to unregister.
       */
      unregisterCursor(clientId) {
        cursorMap.delete(clientId);
      },
      /**
       * Scroll to a cursor by clientId.
       *
       * @param clientId - The clientId of the cursor to scroll to.
       * @param options  - The options for the scroll.
       * @return true if cursor was found and scrolled to, false otherwise.
       */
      scrollToCursor(clientId, options) {
        const cursorElement = cursorMap.get(clientId);
        if (!cursorElement) {
          return false;
        }
        cursorElement.scrollIntoView({
          behavior: options?.behavior ?? "smooth",
          block: options?.block ?? "center",
          inline: options?.inline ?? "nearest"
        });
        if (options?.highlightDuration) {
          highlightCursor(cursorElement, options.highlightDuration);
        }
        return true;
      },
      /**
       * Clear the registry.
       */
      removeAll() {
        cursorMap.clear();
      }
    };
  }

  // packages/editor/build-module/components/collaborators-overlay/index.mjs
  var import_block_editor76 = __toESM(require_block_editor(), 1);

  // packages/editor/build-module/components/collaborators-overlay/overlay.mjs
  var import_compose82 = __toESM(require_compose(), 1);
  var import_element387 = __toESM(require_element(), 1);
  var import_i18n314 = __toESM(require_i18n(), 1);

  // packages/editor/build-module/components/collaborators-overlay/collaborator-styles.mjs
  var ELEVATION_X_SMALL = "0 1px 1px rgba(0, 0, 0, 0.03), 0 1px 2px rgba(0, 0, 0, 0.02), 0 3px 3px rgba(0, 0, 0, 0.02), 0 4px 4px rgba(0, 0, 0, 0.01)";
  var RADIUS_FULL = "9999px";
  var BUTTON_SIZE_COMPACT = "32px";
  var BUTTON_SIZE_SMALL = "24px";
  var GRID_UNIT_05 = "4px";
  var GRID_UNIT_10 = "8px";
  var BORDER_WIDTH = "1px";
  var BORDER_WIDTH_FOCUS_FALLBACK = "2px";
  var WHITE2 = "#fff";
  var FONT_SIZE_X_SMALL = "11px";
  var FONT_SIZE_MEDIUM = "13px";
  var FONT_WEIGHT_EMPHASIS = "var(--wpds-typography-font-weight-emphasis, 600)";
  var FONT_LINE_HEIGHT_SMALL = "20px";

  // packages/editor/build-module/components/collaborators-overlay/avatar-iframe-styles.mjs
  var AVATAR_IFRAME_STYLES = `
.editor-avatar {
	position: relative;
	display: inline-flex;
	align-items: center;
	border-radius: ${RADIUS_FULL};
	flex-shrink: 0;
	box-shadow: 0 0 0 var(--wp-admin-border-width-focus, 2px) ${WHITE2}, ${ELEVATION_X_SMALL};
}
.editor-avatar__image {
	box-sizing: border-box;
	position: relative;
	width: ${BUTTON_SIZE_COMPACT};
	height: ${BUTTON_SIZE_COMPACT};
	border-radius: ${RADIUS_FULL};
	border: 0;
	background-color: var(--wp-admin-theme-color, #3858e9);
	overflow: hidden;
	overflow: clip;
	flex-shrink: 0;
	font-size: 0;
	color: ${WHITE2};
}
.is-small > .editor-avatar__image {
	width: ${BUTTON_SIZE_SMALL};
	height: ${BUTTON_SIZE_SMALL};
}
.has-avatar-border-color > .editor-avatar__image {
	border: var(--wp-admin-border-width-focus, 2px) solid var(--editor-avatar-outline-color);
	background-clip: padding-box;
}
.has-avatar-border-color > .editor-avatar__image::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus, 2px) ${WHITE2};
	pointer-events: none;
	z-index: 1;
}
.editor-avatar__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: inherit;
	opacity: 0;
}
.has-src > .editor-avatar__image > .editor-avatar__img {
	opacity: 1;
}
.editor-avatar:not(.has-src) > .editor-avatar__image {
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: ${FONT_SIZE_X_SMALL};
	font-weight: ${FONT_WEIGHT_EMPHASIS};
	border: 0;
	background-clip: border-box;
}
.editor-avatar:not(.has-src) > .editor-avatar__image::after {
	content: none;
}
.editor-avatar:not(.has-src).has-avatar-border-color > .editor-avatar__image {
	background-color: var(--editor-avatar-outline-color);
}
.editor-avatar__name {
	font-size: ${FONT_SIZE_MEDIUM};
	font-weight: ${FONT_WEIGHT_EMPHASIS};
	line-height: ${FONT_LINE_HEIGHT_SMALL};
	color: var(--editor-avatar-name-color, ${WHITE2});
	min-width: 0;
	padding-bottom: 2px; /* $grid-unit-05 / 2 */
	overflow: hidden;
	opacity: 0;
	white-space: nowrap;
	transition: opacity 0.15s cubic-bezier(0.15, 0, 0.15, 1);
}
.editor-avatar.is-badge {
	display: inline-grid;
	grid-template-columns: min-content 0fr;
	column-gap: 0;
	padding-inline-end: 0;
	background-color: var(--wp-admin-theme-color, #3858e9);
	transition:
		grid-template-columns 0.3s cubic-bezier(0.15, 0, 0.15, 1),
		column-gap 0.3s cubic-bezier(0.15, 0, 0.15, 1),
		padding-inline-end 0.3s cubic-bezier(0.15, 0, 0.15, 1);
}
.editor-avatar.is-badge:hover {
	grid-template-columns: min-content 1fr;
	column-gap: ${GRID_UNIT_05};
	padding-inline-end: ${GRID_UNIT_10};
	transition-timing-function: cubic-bezier(0.85, 0, 0.85, 1);
}
.editor-avatar.is-badge:hover .editor-avatar__name {
	opacity: 1;
	transition-timing-function: cubic-bezier(0.85, 0, 0.85, 1);
}
.editor-avatar.is-badge.has-avatar-border-color {
	background-color: var(--editor-avatar-outline-color);
}
@media (prefers-reduced-motion: reduce) {
	.editor-avatar.is-badge,
	.editor-avatar__name {
		transition: none;
	}
}
`;

  // packages/editor/build-module/components/collaborators-overlay/overlay-iframe-styles.mjs
  var OVERLAY_IFRAME_STYLES = `
.block-canvas-cover {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	pointer-events: none;
	z-index: 20000;
}
.block-canvas-cover .collaborators-overlay-full {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
}
.block-canvas-cover .collaborators-overlay-fixed {
	position: fixed;
	width: 100%;
	height: 100%;
}
.collaborators-overlay-user {
	position: absolute;
}
/* Cursor lines render below avatar labels across all users. The parent
   .collaborators-overlay-user has no z-index so it does not create a
   stacking context \u2014 children participate in the shared overlay context. */
.collaborators-overlay-user-cursor {
	position: absolute;
	z-index: 0;
	width: ${BORDER_WIDTH_FOCUS_FALLBACK};
	border-radius: ${BORDER_WIDTH};
	outline: ${BORDER_WIDTH} solid ${WHITE2};
	box-shadow: ${ELEVATION_X_SMALL};
	animation: collaborators-overlay-cursor-blink 1s infinite;
}
.collaborators-overlay-selection-rect {
	position: absolute;
	opacity: 0.15;
	pointer-events: none;
	border-radius: 2px;
}

/* Overlay-specific positioning applied to the Avatar cursor label. */
.collaborators-overlay-user-label.editor-avatar {
	position: absolute;
	z-index: 1;
	transform: translate(-11px, -100%);
	margin-top: -${GRID_UNIT_05};
	pointer-events: auto;
	overflow: visible;
	width: max-content;
	--label-base-transform: translate(-11px, -100%);
}
/* Avatar positioned above a highlighted block as a label. */
.collaborators-overlay-block-label.editor-avatar {
	position: absolute;
	z-index: 1;
	transform: translateY(calc(-100% - ${GRID_UNIT_10}));
	pointer-events: auto;
	overflow: visible;
	width: max-content;
	--label-base-transform: translateY(calc(-100% - ${GRID_UNIT_10}));
}

@keyframes collaborators-overlay-cursor-blink {
	0%, 45% { opacity: 1; }
	55%, 95% { opacity: 0; }
	100% { opacity: 1; }
}
.collaborators-overlay-cursor-highlighted .collaborators-overlay-user-cursor {
	animation: collaborators-overlay-cursor-highlight 0.6s ease-in-out 3;
}
.collaborators-overlay-cursor-highlighted .collaborators-overlay-user-label,
.collaborators-overlay-cursor-highlighted .collaborators-overlay-block-label {
	animation: collaborators-overlay-label-highlight 0.6s ease-in-out 3;
}
@keyframes collaborators-overlay-cursor-highlight {
	0%, 100% {
		transform: scale(1);
		filter: drop-shadow(0 0 0 transparent);
	}
	50% {
		transform: scale(1.2);
		filter: drop-shadow(0 0 8px currentColor);
	}
}
@keyframes collaborators-overlay-label-highlight {
	0%, 100% {
		transform: var(--label-base-transform) scale(1);
		filter: drop-shadow(0 0 0 transparent);
	}
	50% {
		transform: var(--label-base-transform) scale(1.1);
		filter: drop-shadow(0 0 6px currentColor);
	}
}
.block-editor-block-list__block.is-collaborator-selected:not(:focus)::after {
	content: "";
	position: absolute;
	pointer-events: none;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	outline-color: var(--collaborator-outline-color);
	outline-style: solid;
	outline-width: calc(var(--wp-admin-border-width-focus) / var(--wp-block-editor-iframe-zoom-out-scale, 1));
	outline-offset: calc(-1 * var(--wp-admin-border-width-focus) / var(--wp-block-editor-iframe-zoom-out-scale, 1));
	box-shadow: inset 0 0 0 calc((var(--wp-admin-border-width-focus) / var(--wp-block-editor-iframe-zoom-out-scale, 1)) + 0.5px) rgba(${WHITE2}, 0.7);
	z-index: 1;
}
@media (prefers-reduced-motion: reduce) {
	.collaborators-overlay-user-label,
	.collaborators-overlay-user-cursor,
	.collaborators-overlay-block-label {
		animation: none;
	}
}
`;

  // packages/editor/build-module/components/collaborators-overlay/timing-utils.mjs
  function setDelayedInterval(callback, delayMs) {
    let timerHandle = null;
    const runner = () => {
      try {
        callback();
      } catch {
      }
      timerHandle = setTimeout(runner, delayMs);
    };
    timerHandle = setTimeout(runner, delayMs);
    return () => {
      if (timerHandle) {
        clearTimeout(timerHandle);
      }
    };
  }

  // packages/editor/build-module/components/collaborators-overlay/use-block-highlighting.mjs
  var import_core_data120 = __toESM(require_core_data(), 1);
  var import_block_editor75 = __toESM(require_block_editor(), 1);
  var import_element385 = __toESM(require_element(), 1);

  // packages/editor/build-module/components/collaborators-overlay/use-debounced-recompute.mjs
  var import_element384 = __toESM(require_element(), 1);
  function useDebouncedRecompute(delayMs) {
    const [recomputeToken, setRecomputeToken] = (0, import_element384.useState)(0);
    const timeoutRef = (0, import_element384.useRef)(null);
    const rerenderAfterDelay = (0, import_element384.useCallback)(() => {
      if (timeoutRef.current) {
        clearTimeout(timeoutRef.current);
      }
      timeoutRef.current = setTimeout(() => {
        setRecomputeToken((t3) => t3 + 1);
      }, delayMs);
      return () => {
        if (timeoutRef.current) {
          clearTimeout(timeoutRef.current);
        }
      };
    }, [delayMs]);
    return [recomputeToken, rerenderAfterDelay];
  }
  function useRequestAnimationFrameRecompute() {
    const [recomputeToken, setRecomputeToken] = (0, import_element384.useState)(0);
    const requestAnimationFrameRef = (0, import_element384.useRef)(null);
    (0, import_element384.useEffect)(() => {
      return () => {
        if (requestAnimationFrameRef.current !== null) {
          cancelAnimationFrame(requestAnimationFrameRef.current);
        }
      };
    }, []);
    const rerenderOnNextFrame = (0, import_element384.useCallback)(() => {
      if (requestAnimationFrameRef.current !== null) {
        cancelAnimationFrame(requestAnimationFrameRef.current);
      }
      requestAnimationFrameRef.current = requestAnimationFrame(() => {
        requestAnimationFrameRef.current = null;
        setRecomputeToken((t3) => t3 + 1);
      });
    }, []);
    return [recomputeToken, rerenderOnNextFrame];
  }

  // packages/editor/build-module/components/collaborators-overlay/cursor-dom-utils.mjs
  var import_block_editor74 = __toESM(require_block_editor(), 1);
  var { isElementVisible: isElementVisible2 } = unlock(import_block_editor74.privateApis);
  var getNearestVisibleBlockAncestor = (element) => {
    let current = element.closest("[data-block]");
    while (current) {
      if (isElementVisible2(current)) {
        return current;
      }
      current = current.parentElement?.closest("[data-block]") ?? null;
    }
    return null;
  };
  var MAX_NODE_OFFSET_COUNT = 500;
  var getCursorPosition = (absolutePositionIndex, blockElement, editorDocument, overlayRect) => {
    if (absolutePositionIndex === null || !blockElement) {
      return null;
    }
    return getOffsetPositionInBlock(
      blockElement,
      absolutePositionIndex,
      editorDocument,
      overlayRect
    ) ?? null;
  };
  var getOffsetPositionInBlock = (blockElement, charOffset, editorDocument, overlayRect) => {
    if (!isElementVisible2(blockElement)) {
      return null;
    }
    const { node, offset: offset4 } = findInnerBlockOffset(
      blockElement,
      charOffset,
      editorDocument
    );
    const cursorRange = editorDocument.createRange();
    try {
      cursorRange.setStart(node, offset4);
    } catch {
      return null;
    }
    cursorRange.collapse(true);
    const cursorRect = cursorRange.getBoundingClientRect();
    const blockRect = blockElement.getBoundingClientRect();
    let cursorX = 0;
    let cursorY = 0;
    if (cursorRect.x === 0 && cursorRect.y === 0 && cursorRect.width === 0 && cursorRect.height === 0) {
      cursorX = blockRect.left - overlayRect.left;
      cursorY = blockRect.top - overlayRect.top;
    } else {
      cursorX = cursorRect.left - overlayRect.left;
      cursorY = cursorRect.top - overlayRect.top;
    }
    let cursorHeight = cursorRect.height;
    if (cursorHeight === 0) {
      const view = editorDocument.defaultView ?? window;
      cursorHeight = parseInt(view.getComputedStyle(blockElement).lineHeight, 10) || blockRect.height;
    }
    return {
      x: cursorX,
      y: cursorY,
      height: cursorHeight
    };
  };
  var getSelectionRects = (blockElement, startOffset, endOffset, editorDocument, overlayRect) => {
    if (!isElementVisible2(blockElement)) {
      return null;
    }
    let normalizedStart = startOffset;
    let normalizedEnd = endOffset;
    if (normalizedStart > normalizedEnd) {
      [normalizedStart, normalizedEnd] = [normalizedEnd, normalizedStart];
    }
    const startPos = findInnerBlockOffset(
      blockElement,
      normalizedStart,
      editorDocument
    );
    const endPos = findInnerBlockOffset(
      blockElement,
      normalizedEnd,
      editorDocument
    );
    const range = editorDocument.createRange();
    try {
      range.setStart(startPos.node, startPos.offset);
      range.setEnd(endPos.node, endPos.offset);
    } catch {
      return null;
    }
    const clientRects = range.getClientRects();
    const rects = [];
    for (const rect of clientRects) {
      if (rect.width === 0 && rect.height === 0) {
        continue;
      }
      const x2 = rect.left - overlayRect.left;
      const y3 = rect.top - overlayRect.top;
      const isDuplicate = rects.some(
        (r4) => r4.x === x2 && r4.y === y3 && r4.width === rect.width && r4.height === rect.height
      );
      if (isDuplicate) {
        continue;
      }
      rects.push({
        x: x2,
        y: y3,
        width: rect.width,
        height: rect.height
      });
    }
    return rects.length > 0 ? rects : null;
  };
  var blockContainerOf = (el) => {
    const parent = el.parentElement;
    return parent?.hasAttribute("data-block") ? parent : el;
  };
  var getBlocksBetween = (startBlockId, endBlockId, editorDocument) => {
    const allBlocks = editorDocument.querySelectorAll("[data-block]");
    let startIndex = -1;
    let endIndex = -1;
    for (let i2 = 0; i2 < allBlocks.length; i2++) {
      const blockId = allBlocks[i2].getAttribute("data-block");
      if (blockId === startBlockId) {
        startIndex = i2;
      }
      if (blockId === endBlockId) {
        endIndex = i2;
      }
    }
    if (startIndex === -1 || endIndex === -1) {
      return [];
    }
    if (startIndex > endIndex) {
      [startIndex, endIndex] = [endIndex, startIndex];
    }
    const result = [];
    for (let i2 = startIndex + 1; i2 < endIndex; i2++) {
      const block = allBlocks[i2];
      if (!result.some((r4) => r4.contains(block))) {
        result.push(block);
      }
    }
    return result;
  };
  var getOrderedBlockRange = (startId, endId, doc) => {
    const startEl = doc.querySelector(
      `[data-block="${startId}"]`
    );
    const endEl = doc.querySelector(
      `[data-block="${endId}"]`
    );
    if (!startEl || !endEl) {
      return null;
    }
    const rawFirstEl = isNodeBefore(endEl, startEl) ? endEl : startEl;
    const rawLastEl = isNodeBefore(endEl, startEl) ? startEl : endEl;
    const firstEl = blockContainerOf(rawFirstEl);
    const lastEl = blockContainerOf(rawLastEl);
    const firstId = firstEl.getAttribute("data-block");
    const lastId = lastEl.getAttribute("data-block");
    const sameContainer = firstId === lastId;
    const middleEls = sameContainer ? [] : getBlocksBetween(firstId, lastId, doc).filter(
      (el) => !firstEl.contains(el) && !lastEl.contains(el)
    );
    return { firstEl, firstId, lastEl, lastId, middleEls, sameContainer };
  };
  var findInnerBlockOffset = (blockElement, offset4, editorDocument) => {
    const treeWalker = editorDocument.createTreeWalker(
      blockElement,
      NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT
      // eslint-disable-line no-bitwise
    );
    let currentOffset = 0;
    let lastTextNode = null;
    let node = null;
    let nodeCount = 1;
    while (node = treeWalker.nextNode()) {
      nodeCount++;
      if (nodeCount > MAX_NODE_OFFSET_COUNT) {
        if (lastTextNode) {
          return { node: lastTextNode, offset: 0 };
        }
        return { node: blockElement, offset: 0 };
      }
      const nodeLength = node.nodeValue?.length ?? 0;
      if (node.nodeType === Node.ELEMENT_NODE) {
        if (node.nodeName === "BR") {
          if (currentOffset + 1 >= offset4) {
            const nodeAfterBr = treeWalker.nextNode();
            if (nodeAfterBr?.nodeType === Node.TEXT_NODE) {
              return { node: nodeAfterBr, offset: 0 };
            } else if (lastTextNode) {
              return {
                node: lastTextNode,
                offset: lastTextNode.nodeValue?.length ?? 0
              };
            }
            return { node: blockElement, offset: 0 };
          }
          currentOffset += 1;
          continue;
        } else {
          continue;
        }
      }
      if (nodeLength === 0) {
        continue;
      }
      if (currentOffset + nodeLength >= offset4) {
        return { node, offset: offset4 - currentOffset };
      }
      currentOffset += nodeLength;
      if (node.nodeType === Node.TEXT_NODE) {
        lastTextNode = node;
      }
    }
    if (lastTextNode && lastTextNode.nodeValue?.length) {
      return { node: lastTextNode, offset: lastTextNode.nodeValue.length };
    }
    return { node: blockElement, offset: 0 };
  };
  var isNodeBefore = (a2, b2) => (
    // eslint-disable-next-line no-bitwise
    !!(a2.compareDocumentPosition(b2) & Node.DOCUMENT_POSITION_FOLLOWING)
  );

  // packages/editor/build-module/components/collaborators-overlay/compute-selection.mjs
  var import_core_data118 = __toESM(require_core_data(), 1);
  var { SelectionDirection, SelectionType } = unlock(
    import_core_data118.privateApis
  );
  function resolveTargetElement(editorDocument, resolvedSelection) {
    if (!resolvedSelection.localClientId) {
      return null;
    }
    const blockElement = editorDocument.querySelector(
      `[data-block="${resolvedSelection.localClientId}"]`
    );
    if (!blockElement || !resolvedSelection.attributeKey) {
      return blockElement;
    }
    const attrKey = CSS.escape(resolvedSelection.attributeKey);
    const byKey = blockElement.querySelector(
      `[data-wp-block-attribute-key="${attrKey}"]`
    );
    if (byKey) {
      return byKey;
    }
    const editable = blockElement.querySelector(
      '[contenteditable="true"]'
    );
    if (editable) {
      return editable;
    }
    const textEl = blockElement.querySelector(
      "p, h1, h2, h3, h4, h5, h6, pre, blockquote, td, th, li, figcaption"
    );
    return textEl ?? blockElement;
  }
  function computeSelectionVisual(selection, start2, end, overlayContext) {
    if (selection.type === SelectionType.None || selection.type === SelectionType.WholeBlock) {
      return {};
    }
    if (selection.type === SelectionType.Cursor) {
      return computeCursorOnly(start2, overlayContext);
    }
    if (!end) {
      return {};
    }
    return computeTextSelection(selection, start2, end, overlayContext);
  }
  function computeCursorOnly(start2, overlayContext) {
    if (!start2.localClientId) {
      return {};
    }
    const targetElement = resolveTargetElement(
      overlayContext.editorDocument,
      start2
    );
    return {
      coords: getCursorPosition(
        start2.richTextOffset,
        targetElement,
        overlayContext.editorDocument,
        overlayContext.overlayRect
      )
    };
  }
  function computeTextSelection(selection, start2, end, overlayContext) {
    if (!start2.localClientId || !end.localClientId) {
      return {};
    }
    const isReverse = selection.selectionDirection === SelectionDirection.Backward;
    const activeEnd = isReverse ? start2 : end;
    if (selection.type === SelectionType.SelectionInOneBlock) {
      if (start2.richTextOffset === null || end.richTextOffset === null) {
        return {};
      }
      const result = computeSingleBlockRects(start2, end, overlayContext);
      if (result.rects.length > 0) {
        return {
          coords: getCursorPosition(
            activeEnd.richTextOffset,
            result.blockElement,
            overlayContext.editorDocument,
            overlayContext.overlayRect
          ),
          selectionRects: result.rects
        };
      }
      return {
        coords: getCursorPosition(
          start2.richTextOffset,
          resolveTargetElement(overlayContext.editorDocument, start2),
          overlayContext.editorDocument,
          overlayContext.overlayRect
        )
      };
    }
    return computeMultiBlockOverlayRects(start2, end, overlayContext);
  }
  function blockBoundingRect(blockEl, overlayRect) {
    const r4 = blockEl.getBoundingClientRect();
    return {
      x: r4.left - overlayRect.left,
      y: r4.top - overlayRect.top,
      width: r4.width,
      height: r4.height
    };
  }
  function computeMultiBlockOverlayRects(start2, end, overlayContext) {
    const { editorDocument, overlayRect } = overlayContext;
    const range = getOrderedBlockRange(
      start2.localClientId,
      end.localClientId,
      editorDocument
    );
    if (!range) {
      return {};
    }
    const docFirst = range.firstId === start2.localClientId ? start2 : end;
    const docLast = range.firstId === start2.localClientId ? end : start2;
    const {
      firstEl: docFirstEl,
      lastEl: docLastEl,
      middleEls,
      sameContainer
    } = range;
    if (sameContainer) {
      return docFirstEl.innerText?.trim() ? {
        selectionRects: [
          blockBoundingRect(docFirstEl, overlayRect)
        ]
      } : {};
    }
    const MAX = Number.MAX_SAFE_INTEGER;
    const rects = [];
    if (docFirstEl.innerText?.trim()) {
      const firstOffset = docFirst.richTextOffset;
      if (firstOffset === null || firstOffset === 0) {
        rects.push(blockBoundingRect(docFirstEl, overlayRect));
      } else {
        const el = resolveTargetElement(editorDocument, docFirst);
        const textRects = el ? getSelectionRects(
          el,
          firstOffset,
          MAX,
          editorDocument,
          overlayRect
        ) : null;
        rects.push(
          ...textRects ?? [
            blockBoundingRect(docFirstEl, overlayRect)
          ]
        );
      }
    }
    for (const blockEl of middleEls) {
      if (blockEl.innerText?.trim()) {
        rects.push(blockBoundingRect(blockEl, overlayRect));
      }
    }
    if (docLastEl.innerText?.trim()) {
      const lastOffset = docLast.richTextOffset;
      if (lastOffset === null) {
        rects.push(blockBoundingRect(docLastEl, overlayRect));
      } else if (lastOffset > 0) {
        const el = resolveTargetElement(editorDocument, docLast);
        const textRects = el ? getSelectionRects(
          el,
          0,
          lastOffset,
          editorDocument,
          overlayRect
        ) : null;
        rects.push(
          ...textRects ?? [
            blockBoundingRect(docLastEl, overlayRect)
          ]
        );
      }
    }
    return rects.length > 0 ? { selectionRects: rects } : {};
  }
  function computeSingleBlockRects(start2, end, overlayContext) {
    const blockElement = resolveTargetElement(
      overlayContext.editorDocument,
      start2
    );
    if (!blockElement || start2.richTextOffset === null || end.richTextOffset === null) {
      return { rects: [], blockElement: null };
    }
    return {
      rects: getSelectionRects(
        blockElement,
        start2.richTextOffset,
        end.richTextOffset,
        overlayContext.editorDocument,
        overlayContext.overlayRect
      ) ?? [],
      blockElement
    };
  }

  // packages/editor/build-module/components/collaborators-overlay/resolve-start-position.mjs
  var import_core_data119 = __toESM(require_core_data(), 1);
  var { SelectionType: SelectionType2 } = unlock(import_core_data119.privateApis);
  function resolveStartPosition(selection, resolveSelection) {
    if (!selection) {
      return null;
    }
    try {
      switch (selection.type) {
        case SelectionType2.Cursor:
        case SelectionType2.WholeBlock:
          return resolveSelection(selection);
        case SelectionType2.SelectionInOneBlock:
          return resolveSelection({
            type: SelectionType2.Cursor,
            cursorPosition: selection.cursorStartPosition
          });
        case SelectionType2.SelectionInMultipleBlocks:
          return resolveSelection(selection.startEndpoint);
        default:
          return null;
      }
    } catch {
      return null;
    }
  }

  // packages/editor/build-module/components/collaborators-overlay/use-block-highlighting.mjs
  var { useActiveCollaborators, useResolvedSelection } = unlock(import_core_data120.privateApis);
  var { isElementVisible: isElementVisible3 } = unlock(import_block_editor75.privateApis);
  var { SelectionType: SelectionType3 } = unlock(import_core_data120.privateApis);
  function useBlockHighlighting(overlayElement, blockEditorDocument, postId2, postType2, delayMs) {
    const highlightedBlockIds = (0, import_element385.useRef)(/* @__PURE__ */ new Set());
    const userStates = useActiveCollaborators(
      postId2 ?? null,
      postType2 ?? null
    );
    const resolveSelection = useResolvedSelection(
      postId2 ?? null,
      postType2 ?? null
    );
    const [highlights, setHighlights] = (0, import_element385.useState)(
      []
    );
    const [recomputeToken, rerenderHighlightsAfterDelay] = useDebouncedRecompute(delayMs);
    const [resizeToken, rerenderHighlightsOnResize] = useRequestAnimationFrameRecompute();
    (0, import_element385.useEffect)(() => {
      if (!blockEditorDocument) {
        setHighlights([]);
        return;
      }
      const currentHighlightedIds = highlightedBlockIds.current;
      const seen = /* @__PURE__ */ new Set();
      const blocksToHighlight = userStates.filter((userState) => {
        if (userState.isMe) {
          return false;
        }
        const selType = userState.editorState?.selection?.type;
        return selType === SelectionType3.WholeBlock || selType === SelectionType3.SelectionInMultipleBlocks || selType === SelectionType3.Cursor || selType === SelectionType3.SelectionInOneBlock;
      }).flatMap((userState) => {
        const selection = userState.editorState?.selection;
        if (selection.type === SelectionType3.WholeBlock) {
          let localClientId;
          try {
            ({ localClientId } = resolveSelection(selection));
          } catch {
            return [];
          }
          if (!localClientId) {
            return [];
          }
          let blockId = localClientId;
          const blockElement = getBlockElementById(
            blockEditorDocument,
            localClientId
          );
          if (blockElement && !isElementVisible3(blockElement)) {
            const container = getNearestVisibleBlockAncestor(blockElement);
            const containerId = container?.getAttribute("data-block");
            if (!containerId) {
              return [];
            }
            blockId = containerId;
          }
          return [
            {
              blockId,
              clientId: userState.clientId,
              userId: userState.collaboratorInfo.id ?? userState.clientId,
              color: getAvatarBorderColor(
                userState.collaboratorInfo.id ?? userState.clientId
              ),
              userName: getCollaboratorDisplayName(
                userState.collaboratorInfo
              ),
              avatarUrl: getAvatarUrl(
                userState.collaboratorInfo.avatar_urls
              ),
              alwaysOutline: true
            }
          ];
        }
        if (selection.type === SelectionType3.Cursor || selection.type === SelectionType3.SelectionInOneBlock) {
          const resolved = resolveStartPosition(
            selection,
            resolveSelection
          );
          if (!resolved?.localClientId) {
            return [];
          }
          const targetElement = resolveTargetElement(
            blockEditorDocument,
            resolved
          );
          if (!targetElement || isElementVisible3(targetElement)) {
            return [];
          }
          const container = getNearestVisibleBlockAncestor(targetElement);
          const containerId = container?.getAttribute("data-block");
          if (!containerId) {
            return [];
          }
          return [
            {
              blockId: containerId,
              clientId: userState.clientId,
              userId: userState.collaboratorInfo.id ?? userState.clientId,
              color: getAvatarBorderColor(
                userState.collaboratorInfo.id ?? userState.clientId
              ),
              userName: getCollaboratorDisplayName(
                userState.collaboratorInfo
              ),
              avatarUrl: getAvatarUrl(
                userState.collaboratorInfo.avatar_urls
              ),
              alwaysOutline: true
            }
          ];
        }
        const resolveEndpointId = (endpoint) => {
          try {
            return resolveSelection(endpoint).localClientId;
          } catch {
            return null;
          }
        };
        const startId = resolveEndpointId(selection.startEndpoint);
        const endId = resolveEndpointId(selection.endEndpoint);
        if (!startId || !endId) {
          return [];
        }
        const range = getOrderedBlockRange(
          startId,
          endId,
          blockEditorDocument
        );
        if (!range) {
          return [];
        }
        const { firstId, lastId, middleEls, sameContainer } = range;
        const color = getAvatarBorderColor(
          userState.collaboratorInfo.id ?? userState.clientId
        );
        const userName = getCollaboratorDisplayName(
          userState.collaboratorInfo
        );
        const avatarUrl = getAvatarUrl(
          userState.collaboratorInfo.avatar_urls
        );
        if (sameContainer) {
          return [
            {
              blockId: firstId,
              clientId: userState.clientId,
              userId: userState.collaboratorInfo.id ?? userState.clientId,
              color,
              userName,
              avatarUrl,
              alwaysOutline: false
            }
          ];
        }
        const intermediateIds = middleEls.map((el) => el.getAttribute("data-block")).filter((id) => Boolean(id));
        return [firstId, ...intermediateIds, lastId].map(
          (blockId) => ({
            blockId,
            clientId: userState.clientId,
            userId: userState.collaboratorInfo.id ?? userState.clientId,
            color,
            userName,
            avatarUrl,
            alwaysOutline: false
          })
        );
      }).filter((block) => {
        if (seen.has(block.blockId)) {
          return false;
        }
        seen.add(block.blockId);
        return true;
      });
      const selectedBlockIds = new Set(
        blocksToHighlight.map((block) => block.blockId)
      );
      for (const blockId of currentHighlightedIds) {
        if (!selectedBlockIds.has(blockId)) {
          const blockElement = getBlockElementById(
            blockEditorDocument,
            blockId
          );
          if (blockElement) {
            blockElement.classList.remove("is-collaborator-selected");
            blockElement.style.removeProperty(
              "--collaborator-outline-color"
            );
          }
          currentHighlightedIds.delete(blockId);
        }
      }
      const results = [];
      const overlayRect = overlayElement?.getBoundingClientRect() ?? null;
      const usersWithAvatar = /* @__PURE__ */ new Set();
      blocksToHighlight.forEach((block) => {
        const { color, blockId, userName, avatarUrl } = block;
        const blockElement = getBlockElementById(
          blockEditorDocument,
          blockId
        );
        if (!blockElement) {
          return;
        }
        blockElement.classList.remove("is-collaborator-selected");
        blockElement.style.removeProperty("--collaborator-outline-color");
        currentHighlightedIds.delete(blockId);
        if (!isElementVisible3(blockElement)) {
          return;
        }
        const isNonTextBlock = !blockElement.innerText?.trim();
        if (block.alwaysOutline || isNonTextBlock) {
          blockElement.classList.add("is-collaborator-selected");
          blockElement.style.setProperty(
            "--collaborator-outline-color",
            color
          );
          currentHighlightedIds.add(blockId);
        }
        if (overlayRect && !usersWithAvatar.has(block.userId)) {
          usersWithAvatar.add(block.userId);
          const blockRect = blockElement.getBoundingClientRect();
          results.push({
            blockId,
            clientId: block.clientId,
            userName,
            avatarUrl,
            color,
            x: blockRect.left - overlayRect.left,
            y: blockRect.top - overlayRect.top
          });
        }
      });
      setHighlights(results);
      return () => {
        for (const blockId of currentHighlightedIds) {
          const el = getBlockElementById(blockEditorDocument, blockId);
          if (el) {
            el.classList.remove("is-collaborator-selected");
            el.style.removeProperty("--collaborator-outline-color");
          }
        }
        currentHighlightedIds.clear();
      };
    }, [
      userStates,
      blockEditorDocument,
      overlayElement,
      recomputeToken,
      resizeToken,
      resolveSelection
    ]);
    return {
      highlights,
      rerenderHighlightsAfterDelay,
      rerenderHighlightsOnResize
    };
  }
  var getBlockElementById = (blockEditorDocument, blockId) => {
    return blockEditorDocument.querySelector(`[data-block="${blockId}"]`);
  };

  // packages/editor/build-module/components/collaborators-overlay/use-render-cursors.mjs
  var import_core_data121 = __toESM(require_core_data(), 1);
  var import_data210 = __toESM(require_data(), 1);
  var import_element386 = __toESM(require_element(), 1);
  var import_preferences21 = __toESM(require_preferences(), 1);
  var { useActiveCollaborators: useActiveCollaborators2, useResolvedSelection: useResolvedSelection2 } = unlock(import_core_data121.privateApis);
  var { SelectionType: SelectionType4 } = unlock(import_core_data121.privateApis);
  function useRenderCursors(overlayElement, blockEditorDocument, postId2, postType2, delayMs) {
    const sortedUsers = useActiveCollaborators2(
      postId2 ?? null,
      postType2 ?? null
    );
    const resolveSelection = useResolvedSelection2(
      postId2 ?? null,
      postType2 ?? null
    );
    const showOwnCursor = (0, import_data210.useSelect)(
      (select9) => select9(import_preferences21.store).get("core", "showCollaborationCursor"),
      []
    );
    const [cursorPositions, setCursorPositions] = (0, import_element386.useState)(
      []
    );
    const [recomputeToken, rerenderCursorsAfterDelay] = useDebouncedRecompute(delayMs);
    const [resizeToken, rerenderCursorsOnResize] = useRequestAnimationFrameRecompute();
    (0, import_element386.useEffect)(() => {
      if (!overlayElement || !blockEditorDocument) {
        setCursorPositions([]);
        return;
      }
      const overlayRect = overlayElement.getBoundingClientRect();
      const overlayContext = {
        editorDocument: blockEditorDocument,
        overlayRect
      };
      const results = [];
      const hasOtherCollaborators = sortedUsers.some(
        (u2) => !u2.isMe
      );
      sortedUsers.forEach((user) => {
        if (user.isMe && (!showOwnCursor || !hasOtherCollaborators)) {
          return;
        }
        const selection = user.editorState?.selection ?? {
          type: SelectionType4.None
        };
        let start2 = {
          richTextOffset: null,
          localClientId: null,
          attributeKey: null
        };
        let end;
        if (selection.type === SelectionType4.Cursor) {
          try {
            start2 = resolveSelection(selection);
          } catch {
            return;
          }
        } else if (selection.type === SelectionType4.SelectionInOneBlock) {
          try {
            start2 = resolveSelection({
              type: SelectionType4.Cursor,
              cursorPosition: selection.cursorStartPosition
            });
            end = resolveSelection({
              type: SelectionType4.Cursor,
              cursorPosition: selection.cursorEndPosition
            });
          } catch {
            return;
          }
        } else if (selection.type === SelectionType4.SelectionInMultipleBlocks) {
          const resolveEndpoint = (endpoint) => resolveSelection(endpoint);
          try {
            start2 = resolveEndpoint(selection.startEndpoint);
            end = resolveEndpoint(selection.endEndpoint);
          } catch {
            return;
          }
          const promote = (r4) => {
            if (!r4.localClientId) {
              return r4;
            }
            const el = blockEditorDocument.querySelector(
              `[data-block="${r4.localClientId}"]`
            );
            if (!el) {
              return r4;
            }
            const container = blockContainerOf(el);
            const containerId = container.getAttribute("data-block");
            if (!containerId || containerId === r4.localClientId) {
              return r4;
            }
            return {
              ...r4,
              localClientId: containerId,
              richTextOffset: null,
              attributeKey: null
            };
          };
          start2 = promote(start2);
          if (end) {
            end = promote(end);
          }
        }
        const userName = getCollaboratorDisplayName(
          user.collaboratorInfo
        );
        const clientId = user.clientId;
        const color = user.isMe ? "var(--wp-admin-theme-color)" : getAvatarBorderColor(
          user.collaboratorInfo.id ?? user.clientId
        );
        const avatarUrl = getAvatarUrl(user.collaboratorInfo.avatar_urls);
        const selectionVisual = computeSelectionVisual(
          selection,
          start2,
          end,
          overlayContext
        );
        const hasCoords = Boolean(selectionVisual.coords);
        const hasRects = (selectionVisual.selectionRects?.length ?? 0) > 0;
        if (hasCoords || hasRects) {
          const cursorData = {
            userName,
            clientId,
            color,
            avatarUrl,
            isMe: user.isMe,
            ...selectionVisual.coords ?? {}
          };
          if (selectionVisual.selectionRects) {
            cursorData.selectionRects = selectionVisual.selectionRects;
          }
          results.push(cursorData);
        }
      });
      setCursorPositions(results);
    }, [
      blockEditorDocument,
      resolveSelection,
      overlayElement,
      sortedUsers,
      showOwnCursor,
      recomputeToken,
      resizeToken
    ]);
    return {
      cursors: cursorPositions,
      rerenderCursorsAfterDelay,
      rerenderCursorsOnResize
    };
  }

  // packages/editor/build-module/components/collaborators-overlay/overlay.mjs
  var import_jsx_runtime613 = __toESM(require_jsx_runtime(), 1);
  var RERENDER_DELAY_MS = 500;
  var CURSOR_REDRAW_INTERVAL_MS = 1e4;
  function Overlay({
    blockEditorDocument,
    postId: postId2,
    postType: postType2,
    cursorRegistry
  }) {
    const [overlayElement, setOverlayElement] = (0, import_element387.useState)(null);
    const { cursors, rerenderCursorsAfterDelay, rerenderCursorsOnResize } = useRenderCursors(
      overlayElement,
      blockEditorDocument ?? null,
      postId2 ?? null,
      postType2 ?? null,
      RERENDER_DELAY_MS
    );
    const {
      highlights,
      rerenderHighlightsAfterDelay,
      rerenderHighlightsOnResize
    } = useBlockHighlighting(
      overlayElement,
      blockEditorDocument ?? null,
      postId2 ?? null,
      postType2 ?? null,
      RERENDER_DELAY_MS
    );
    const onResize = (0, import_element387.useCallback)(() => {
      rerenderCursorsOnResize();
      rerenderHighlightsOnResize();
    }, [rerenderCursorsOnResize, rerenderHighlightsOnResize]);
    const resizeObserverRef = (0, import_compose82.useResizeObserver)(onResize);
    (0, import_element387.useEffect)(() => {
      const cleanupCursors = rerenderCursorsAfterDelay();
      const cleanupHighlights = rerenderHighlightsAfterDelay();
      return () => {
        cleanupCursors();
        cleanupHighlights();
      };
    }, [rerenderCursorsAfterDelay, rerenderHighlightsAfterDelay]);
    (0, import_element387.useEffect)(() => {
      if (cursors.length === 0) {
        return;
      }
      return setDelayedInterval(
        rerenderCursorsAfterDelay,
        CURSOR_REDRAW_INTERVAL_MS
      );
    }, [cursors.length, rerenderCursorsAfterDelay]);
    const mergedRef = (0, import_compose82.useMergeRefs)([
      setOverlayElement,
      resizeObserverRef
    ]);
    const cursorRefsMap = (0, import_element387.useRef)(/* @__PURE__ */ new Map());
    (0, import_element387.useEffect)(() => {
      if (!cursorRegistry) {
        return;
      }
      const refs = cursorRefsMap.current;
      const currentIds = /* @__PURE__ */ new Set([
        ...cursors.map((c6) => c6.clientId),
        ...highlights.map((h2) => h2.clientId)
      ]);
      for (const id of refs.keys()) {
        if (!currentIds.has(id)) {
          cursorRegistry.unregisterCursor(id);
          refs.delete(id);
        }
      }
      for (const [id, el] of refs.entries()) {
        cursorRegistry.registerCursor(id, el);
      }
      return () => cursorRegistry.removeAll();
    }, [cursors, highlights, cursorRegistry]);
    const setCursorRef = (0, import_element387.useCallback)(
      (clientId) => (el) => {
        if (el) {
          cursorRefsMap.current.set(clientId, el);
        } else {
          cursorRefsMap.current.delete(clientId);
        }
      },
      []
    );
    return /* @__PURE__ */ (0, import_jsx_runtime613.jsxs)("div", { className: "collaborators-overlay-full", ref: mergedRef, children: [
      /* @__PURE__ */ (0, import_jsx_runtime613.jsx)("style", { children: AVATAR_IFRAME_STYLES + OVERLAY_IFRAME_STYLES }),
      cursors.map((cursor) => /* @__PURE__ */ (0, import_jsx_runtime613.jsxs)("div", { children: [
        !cursor.isMe && cursor.selectionRects?.map((rect, index3) => /* @__PURE__ */ (0, import_jsx_runtime613.jsx)(
          "div",
          {
            className: "collaborators-overlay-selection-rect",
            style: {
              left: `${rect.x}px`,
              top: `${rect.y}px`,
              width: `${rect.width}px`,
              height: `${rect.height}px`,
              backgroundColor: cursor.color
            }
          },
          `${cursor.clientId}-sel-${index3}`
        )),
        cursor.x !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime613.jsxs)(
          "div",
          {
            ref: setCursorRef(cursor.clientId),
            className: "collaborators-overlay-user",
            style: {
              left: `${cursor.x}px`,
              top: `${cursor.y}px`
            },
            children: [
              !cursor.isMe && /* @__PURE__ */ (0, import_jsx_runtime613.jsx)(
                "div",
                {
                  className: "collaborators-overlay-user-cursor",
                  style: {
                    backgroundColor: cursor.color,
                    height: `${cursor.height}px`
                  }
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime613.jsx)(
                component_default,
                {
                  className: "collaborators-overlay-user-label",
                  variant: "badge",
                  size: "small",
                  src: cursor.avatarUrl,
                  name: cursor.userName,
                  label: cursor.isMe ? (0, import_i18n314.__)("You") : void 0,
                  borderColor: cursor.color
                }
              )
            ]
          }
        )
      ] }, cursor.clientId)),
      highlights.map((highlight) => /* @__PURE__ */ (0, import_jsx_runtime613.jsx)(
        "div",
        {
          ref: setCursorRef(highlight.clientId),
          style: {
            position: "absolute",
            left: `${highlight.x}px`,
            top: `${highlight.y}px`
          },
          children: /* @__PURE__ */ (0, import_jsx_runtime613.jsx)(
            component_default,
            {
              className: "collaborators-overlay-block-label",
              variant: "badge",
              size: "small",
              src: highlight.avatarUrl,
              name: highlight.userName,
              borderColor: highlight.color
            }
          )
        },
        highlight.blockId
      ))
    ] });
  }

  // packages/editor/build-module/components/collaborators-overlay/index.mjs
  var import_jsx_runtime614 = __toESM(require_jsx_runtime(), 1);
  var { BlockCanvasCover } = unlock(import_block_editor76.privateApis);
  function CollaboratorsOverlay({
    postId: postId2,
    postType: postType2,
    cursorRegistry
  }) {
    return /* @__PURE__ */ (0, import_jsx_runtime614.jsx)(BlockCanvasCover.Fill, { children: ({
      containerRef
    }) => /* @__PURE__ */ (0, import_jsx_runtime614.jsx)(
      Overlay,
      {
        blockEditorDocument: containerRef.current?.ownerDocument,
        postId: postId2,
        postType: postType2,
        cursorRegistry
      }
    ) });
  }

  // packages/editor/build-module/components/collaborators-presence/index.mjs
  var import_jsx_runtime615 = __toESM(require_jsx_runtime(), 1);
  var { useActiveCollaborators: useActiveCollaborators3 } = unlock(import_core_data122.privateApis);
  function CollaboratorsPresence({
    postId: postId2,
    postType: postType2
  }) {
    const activeCollaborators = useActiveCollaborators3(
      postId2,
      postType2
    );
    const otherActiveCollaborators = activeCollaborators.filter(
      (c6) => !c6.isMe
    );
    const collaboratorsForList = (0, import_element388.useMemo)(() => {
      return [...activeCollaborators].sort((a2, b2) => {
        if (a2.isMe && !b2.isMe) {
          return -1;
        }
        if (!a2.isMe && b2.isMe) {
          return 1;
        }
        return 0;
      });
    }, [activeCollaborators]);
    const [cursorRegistry] = (0, import_element388.useState)(createCursorRegistry);
    const [isPopoverVisible, setIsPopoverVisible] = (0, import_element388.useState)(false);
    const [popoverAnchor, setPopoverAnchor] = (0, import_element388.useState)(
      null
    );
    if (otherActiveCollaborators.length === 0) {
      return null;
    }
    const me = activeCollaborators.find((c6) => c6.isMe);
    return /* @__PURE__ */ (0, import_jsx_runtime615.jsxs)(import_jsx_runtime615.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime615.jsxs)("div", { className: "editor-collaborators-presence", children: [
        /* @__PURE__ */ (0, import_jsx_runtime615.jsx)(
          import_components237.Button,
          {
            size: "compact",
            className: "editor-collaborators-presence__button",
            onClick: () => setIsPopoverVisible(!isPopoverVisible),
            isPressed: isPopoverVisible,
            ref: setPopoverAnchor,
            "aria-label": (0, import_i18n315.sprintf)(
              // translators: %d: number of online collaborators.
              (0, import_i18n315.__)("Collaborators list, %d online"),
              collaboratorsForList.length
            ),
            children: /* @__PURE__ */ (0, import_jsx_runtime615.jsxs)(component_default2, { max: 4, children: [
              me && /* @__PURE__ */ (0, import_jsx_runtime615.jsx)(
                component_default,
                {
                  src: getAvatarUrl(
                    me.collaboratorInfo.avatar_urls
                  ),
                  name: getCollaboratorDisplayName(
                    me.collaboratorInfo
                  ),
                  borderColor: "var(--wp-admin-theme-color)",
                  size: "small"
                },
                me.clientId
              ),
              otherActiveCollaborators.map(
                (collaboratorState) => /* @__PURE__ */ (0, import_jsx_runtime615.jsx)(
                  component_default,
                  {
                    src: getAvatarUrl(
                      collaboratorState.collaboratorInfo.avatar_urls
                    ),
                    name: getCollaboratorDisplayName(
                      collaboratorState.collaboratorInfo
                    ),
                    borderColor: getAvatarBorderColor(
                      collaboratorState.collaboratorInfo.id ?? collaboratorState.clientId
                    ),
                    size: "small"
                  },
                  collaboratorState.clientId
                )
              )
            ] })
          }
        ),
        isPopoverVisible && /* @__PURE__ */ (0, import_jsx_runtime615.jsx)(
          CollaboratorsList,
          {
            activeCollaborators: collaboratorsForList,
            popoverAnchor,
            setIsPopoverVisible,
            cursorRegistry
          }
        )
      ] }),
      /* @__PURE__ */ (0, import_jsx_runtime615.jsx)(
        CollaboratorsOverlay,
        {
          postId: postId2,
          postType: postType2,
          cursorRegistry
        }
      )
    ] });
  }

  // packages/editor/build-module/components/header/index.mjs
  var import_jsx_runtime616 = __toESM(require_jsx_runtime(), 1);
  function Header5({
    customSaveButton,
    forceIsDirty,
    setEntitiesSavedStatesCallback
  }) {
    const isWideViewport = (0, import_compose83.useViewportMatch)("large");
    const isLargeViewport = (0, import_compose83.useViewportMatch)("medium");
    const isTooNarrowForDocumentBar = (0, import_compose83.useMediaQuery)("(max-width: 403px)");
    const {
      postId: postId2,
      postType: postType2,
      isTextEditor,
      isPublishSidebarOpened: isPublishSidebarOpened2,
      showIconLabels,
      hasFixedToolbar,
      hasBlockSelection,
      hasSectionRootClientId,
      isStylesCanvasActive
    } = (0, import_data211.useSelect)((select9) => {
      const { get: getPreference } = select9(import_preferences22.store);
      const {
        getEditorMode: getEditorMode2,
        getCurrentPostType: getCurrentPostType2,
        getCurrentPostId: getCurrentPostId2,
        isPublishSidebarOpened: _isPublishSidebarOpened
      } = select9(store);
      const { getStylesPath: getStylesPath2, getShowStylebook: getShowStylebook2 } = unlock(
        select9(store)
      );
      const { getBlockSelectionStart: getBlockSelectionStart2, getSectionRootClientId } = unlock(
        select9(import_block_editor77.store)
      );
      return {
        postId: getCurrentPostId2(),
        postType: getCurrentPostType2(),
        isTextEditor: getEditorMode2() === "text",
        isPublishSidebarOpened: _isPublishSidebarOpened(),
        showIconLabels: getPreference("core", "showIconLabels"),
        hasFixedToolbar: getPreference("core", "fixedToolbar"),
        hasBlockSelection: !!getBlockSelectionStart2(),
        hasSectionRootClientId: !!getSectionRootClientId(),
        isStylesCanvasActive: !!getStylesPath2()?.startsWith("/revisions") || getShowStylebook2()
      };
    }, []);
    const canBeZoomedOut = ["post", "page", "wp_template"].includes(postType2) && hasSectionRootClientId;
    const [isBlockToolsCollapsed, setIsBlockToolsCollapsed] = (0, import_element389.useState)(true);
    const hasCenter = !isTooNarrowForDocumentBar && (!hasFixedToolbar || hasFixedToolbar && (!hasBlockSelection || isBlockToolsCollapsed));
    return /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(
      HeaderSkeleton,
      {
        toolbar: /* @__PURE__ */ (0, import_jsx_runtime616.jsxs)(import_jsx_runtime616.Fragment, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(
            document_tools_default,
            {
              disableBlockTools: isStylesCanvasActive || isTextEditor
            }
          ),
          hasFixedToolbar && isLargeViewport && /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(
            CollapsibleBlockToolbar,
            {
              isCollapsed: isBlockToolsCollapsed,
              onToggle: setIsBlockToolsCollapsed
            }
          )
        ] }),
        center: hasCenter ? /* @__PURE__ */ (0, import_jsx_runtime616.jsxs)(import_jsx_runtime616.Fragment, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(
            CollaboratorsPresence,
            {
              postType: postType2,
              postId: postId2
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(DocumentBar, {})
        ] }) : void 0,
        settings: /* @__PURE__ */ (0, import_jsx_runtime616.jsxs)(import_jsx_runtime616.Fragment, { children: [
          !hasCenter && !isTooNarrowForDocumentBar && /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(
            CollaboratorsPresence,
            {
              postType: postType2,
              postId: postId2
            }
          ),
          !customSaveButton && !isPublishSidebarOpened2 && /*
          * This button isn't completely hidden by the publish sidebar.
          * We can't hide the whole toolbar when the publish sidebar is open because
          * we want to prevent mounting/unmounting the PostPublishButtonOrToggle DOM node.
          * We track that DOM node to return focus to the PostPublishButtonOrToggle
          * when the publish sidebar has been closed.
          */
          /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(PostSavedState, { forceIsDirty }),
          /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(PostViewLink, {}),
          /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(
            PreviewDropdown,
            {
              forceIsAutosaveable: forceIsDirty,
              disabled: isStylesCanvasActive
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(
            PostPreviewButton,
            {
              className: "editor-header__post-preview-button",
              forceIsAutosaveable: forceIsDirty
            }
          ),
          isWideViewport && canBeZoomedOut && /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(zoom_out_toggle_default, { disabled: isStylesCanvasActive }),
          (isWideViewport || !showIconLabels) && /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(pinned_items_default.Slot, { scope: "core" }),
          !customSaveButton && /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(
            PostPublishButtonOrToggle,
            {
              forceIsDirty,
              setEntitiesSavedStatesCallback
            }
          ),
          customSaveButton,
          /* @__PURE__ */ (0, import_jsx_runtime616.jsx)(MoreMenu, {})
        ] })
      }
    );
  }
  var header_default2 = Header5;

  // packages/editor/build-module/components/inserter-sidebar/index.mjs
  var import_data212 = __toESM(require_data(), 1);
  var import_block_editor78 = __toESM(require_block_editor(), 1);
  var import_compose84 = __toESM(require_compose(), 1);
  var import_element390 = __toESM(require_element(), 1);
  var import_preferences23 = __toESM(require_preferences(), 1);
  var import_keycodes16 = __toESM(require_keycodes(), 1);
  var import_jsx_runtime617 = __toESM(require_jsx_runtime(), 1);
  var { PrivateInserterLibrary } = unlock(import_block_editor78.privateApis);
  function InserterSidebar() {
    const {
      blockSectionRootClientId,
      inserterSidebarToggleRef: inserterSidebarToggleRef2,
      inserter,
      showMostUsedBlocks,
      sidebarIsOpened
    } = (0, import_data212.useSelect)((select9) => {
      const {
        getInserterSidebarToggleRef: getInserterSidebarToggleRef2,
        getInserter: getInserter2,
        isPublishSidebarOpened: isPublishSidebarOpened2
      } = unlock(select9(store));
      const { getBlockRootClientId: getBlockRootClientId2, isZoomOut, getSectionRootClientId } = unlock(select9(import_block_editor78.store));
      const { get } = select9(import_preferences23.store);
      const { getActiveComplementaryArea: getActiveComplementaryArea2 } = select9(store3);
      const getBlockSectionRootClientId = () => {
        if (isZoomOut()) {
          const sectionRootClientId = getSectionRootClientId();
          if (sectionRootClientId) {
            return sectionRootClientId;
          }
        }
        return getBlockRootClientId2();
      };
      return {
        inserterSidebarToggleRef: getInserterSidebarToggleRef2(),
        inserter: getInserter2(),
        showMostUsedBlocks: get("core", "mostUsedBlocks"),
        blockSectionRootClientId: getBlockSectionRootClientId(),
        sidebarIsOpened: !!(getActiveComplementaryArea2("core") || isPublishSidebarOpened2())
      };
    }, []);
    const { setIsInserterOpened: setIsInserterOpened2 } = (0, import_data212.useDispatch)(store);
    const { disableComplementaryArea: disableComplementaryArea2 } = (0, import_data212.useDispatch)(store3);
    const isMobileViewport = (0, import_compose84.useViewportMatch)("medium", "<");
    const libraryRef = (0, import_element390.useRef)();
    const closeInserterSidebar = (0, import_element390.useCallback)(() => {
      setIsInserterOpened2(false);
      inserterSidebarToggleRef2.current?.focus();
    }, [inserterSidebarToggleRef2, setIsInserterOpened2]);
    const closeOnEscape = (0, import_element390.useCallback)(
      (event) => {
        if (event.keyCode === import_keycodes16.ESCAPE && !event.defaultPrevented) {
          event.preventDefault();
          closeInserterSidebar();
        }
      },
      [closeInserterSidebar]
    );
    const inserterContents = /* @__PURE__ */ (0, import_jsx_runtime617.jsx)("div", { className: "editor-inserter-sidebar__content", children: /* @__PURE__ */ (0, import_jsx_runtime617.jsx)(
      PrivateInserterLibrary,
      {
        showMostUsedBlocks,
        showInserterHelpPanel: true,
        shouldFocusBlock: isMobileViewport,
        rootClientId: blockSectionRootClientId ?? inserter.rootClientId,
        __experimentalInsertionIndex: inserter.insertionIndex,
        onSelect: inserter.onSelect,
        __experimentalInitialTab: inserter.tab,
        __experimentalInitialCategory: inserter.category,
        __experimentalFilterValue: inserter.filterValue,
        onPatternCategorySelection: sidebarIsOpened ? () => disableComplementaryArea2("core") : void 0,
        ref: libraryRef,
        onClose: closeInserterSidebar
      }
    ) });
    return (
      // eslint-disable-next-line jsx-a11y/no-static-element-interactions
      /* @__PURE__ */ (0, import_jsx_runtime617.jsx)("div", { onKeyDown: closeOnEscape, className: "editor-inserter-sidebar", children: inserterContents })
    );
  }

  // packages/editor/build-module/components/list-view-sidebar/index.mjs
  var import_block_editor79 = __toESM(require_block_editor(), 1);
  var import_compose85 = __toESM(require_compose(), 1);
  var import_data213 = __toESM(require_data(), 1);
  var import_dom37 = __toESM(require_dom(), 1);
  var import_element391 = __toESM(require_element(), 1);
  var import_i18n317 = __toESM(require_i18n(), 1);
  var import_keyboard_shortcuts9 = __toESM(require_keyboard_shortcuts(), 1);
  var import_keycodes17 = __toESM(require_keycodes(), 1);

  // packages/editor/build-module/components/list-view-sidebar/list-view-outline.mjs
  var import_components238 = __toESM(require_components(), 1);
  var import_i18n316 = __toESM(require_i18n(), 1);
  var import_jsx_runtime618 = __toESM(require_jsx_runtime(), 1);
  function ListViewOutline() {
    return /* @__PURE__ */ (0, import_jsx_runtime618.jsxs)(import_jsx_runtime618.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime618.jsxs)("div", { className: "editor-list-view-sidebar__outline", children: [
        /* @__PURE__ */ (0, import_jsx_runtime618.jsxs)("div", { children: [
          /* @__PURE__ */ (0, import_jsx_runtime618.jsx)(import_components238.__experimentalText, { children: (0, import_i18n316.__)("Characters:") }),
          /* @__PURE__ */ (0, import_jsx_runtime618.jsx)(import_components238.__experimentalText, { children: /* @__PURE__ */ (0, import_jsx_runtime618.jsx)(CharacterCount, {}) })
        ] }),
        /* @__PURE__ */ (0, import_jsx_runtime618.jsxs)("div", { children: [
          /* @__PURE__ */ (0, import_jsx_runtime618.jsx)(import_components238.__experimentalText, { children: (0, import_i18n316.__)("Words:") }),
          /* @__PURE__ */ (0, import_jsx_runtime618.jsx)(WordCount, {})
        ] }),
        /* @__PURE__ */ (0, import_jsx_runtime618.jsxs)("div", { children: [
          /* @__PURE__ */ (0, import_jsx_runtime618.jsx)(import_components238.__experimentalText, { children: (0, import_i18n316.__)("Time to read:") }),
          /* @__PURE__ */ (0, import_jsx_runtime618.jsx)(TimeToRead, {})
        ] })
      ] }),
      /* @__PURE__ */ (0, import_jsx_runtime618.jsx)(DocumentOutline, {})
    ] });
  }

  // packages/editor/build-module/components/list-view-sidebar/index.mjs
  var import_jsx_runtime619 = __toESM(require_jsx_runtime(), 1);
  var { TabbedSidebar } = unlock(import_block_editor79.privateApis);
  function ListViewSidebar() {
    const { setIsListViewOpened: setIsListViewOpened2 } = (0, import_data213.useDispatch)(store);
    const { getListViewToggleRef: getListViewToggleRef2 } = unlock((0, import_data213.useSelect)(store));
    const closeListView = (0, import_element391.useCallback)(() => {
      setIsListViewOpened2(false);
      getListViewToggleRef2().current?.focus();
    }, [getListViewToggleRef2, setIsListViewOpened2]);
    const closeOnEscape = (0, import_element391.useCallback)(
      (event) => {
        if (event.keyCode === import_keycodes17.ESCAPE && !event.defaultPrevented) {
          event.preventDefault();
          closeListView();
        }
      },
      [closeListView]
    );
    const [dropZoneElement, setDropZoneElement] = (0, import_element391.useState)(null);
    const [tab, setTab] = (0, import_element391.useState)("list-view");
    const sidebarRef = (0, import_element391.useRef)();
    const tabsRef = (0, import_element391.useRef)();
    const listViewRef = (0, import_element391.useRef)();
    const listViewContainerRef = (0, import_compose85.useMergeRefs)([
      listViewRef,
      setDropZoneElement
    ]);
    (0, import_keyboard_shortcuts9.useShortcut)("core/editor/toggle-list-view", () => {
      const sidebar = sidebarRef.current;
      if (sidebar.contains(sidebar.ownerDocument.activeElement)) {
        closeListView();
        return;
      }
      const target = tab === "list-view" && import_dom37.focus.tabbable.find(listViewRef.current)[0] || import_dom37.focus.tabbable.find(tabsRef.current)[0];
      target?.focus();
    });
    return (
      // eslint-disable-next-line jsx-a11y/no-static-element-interactions
      /* @__PURE__ */ (0, import_jsx_runtime619.jsx)(
        "div",
        {
          className: "editor-list-view-sidebar",
          onKeyDown: closeOnEscape,
          ref: sidebarRef,
          children: /* @__PURE__ */ (0, import_jsx_runtime619.jsx)(
            TabbedSidebar,
            {
              tabs: [
                {
                  name: "list-view",
                  title: (0, import_i18n317._x)("List View", "Post overview"),
                  panel: /* @__PURE__ */ (0, import_jsx_runtime619.jsx)("div", { className: "editor-list-view-sidebar__list-view-container", children: /* @__PURE__ */ (0, import_jsx_runtime619.jsx)("div", { className: "editor-list-view-sidebar__list-view-panel-content", children: /* @__PURE__ */ (0, import_jsx_runtime619.jsx)(
                    import_block_editor79.__experimentalListView,
                    {
                      dropZoneElement,
                      focusOnMount: true
                    }
                  ) }) }),
                  panelRef: listViewContainerRef
                },
                {
                  name: "outline",
                  title: (0, import_i18n317._x)("Outline", "Post overview"),
                  panel: /* @__PURE__ */ (0, import_jsx_runtime619.jsx)("div", { className: "editor-list-view-sidebar__list-view-container", children: /* @__PURE__ */ (0, import_jsx_runtime619.jsx)(ListViewOutline, {}) })
                }
              ],
              onClose: closeListView,
              onSelect: (tabName) => setTab(tabName),
              defaultTabId: "list-view",
              ref: tabsRef,
              closeButtonLabel: (0, import_i18n317.__)("Close")
            }
          )
        }
      )
    );
  }

  // packages/editor/build-module/components/post-revisions-preview/revisions-header.mjs
  var import_data215 = __toESM(require_data(), 1);
  var import_components240 = __toESM(require_components(), 1);
  var import_i18n319 = __toESM(require_i18n(), 1);

  // packages/editor/build-module/components/post-revisions-preview/revisions-slider.mjs
  var import_data214 = __toESM(require_data(), 1);
  var import_components239 = __toESM(require_components(), 1);
  var import_core_data123 = __toESM(require_core_data(), 1);
  var import_i18n318 = __toESM(require_i18n(), 1);
  var import_date22 = __toESM(require_date(), 1);
  var import_element392 = __toESM(require_element(), 1);
  var import_compose86 = __toESM(require_compose(), 1);
  var import_jsx_runtime620 = __toESM(require_jsx_runtime(), 1);
  function ConnectedRevisionsSlider() {
    const revisionData = (0, import_data214.useSelect)((select9) => {
      const {
        getCurrentRevisionId: getCurrentRevisionId2,
        getRevisionPage: getRevisionPage2,
        getPageRevisions: getPageRevisions2,
        getRevisionsPerPage: getRevisionsPerPage2
      } = unlock(select9(store));
      const postType2 = select9(store).getCurrentPostType();
      if (!postType2) {
        return {};
      }
      const entityConfig = select9(import_core_data123.store).getEntityConfig(
        "postType",
        postType2
      );
      const revisionKey = entityConfig?.revisionKey || "id";
      const revisionPage2 = getRevisionPage2();
      return {
        revisions: getPageRevisions2(revisionPage2),
        perPage: getRevisionsPerPage2(),
        currentRevisionId: getCurrentRevisionId2(),
        revisionKey,
        revisionPage: revisionPage2,
        totalRevisions: select9(store).getCurrentPostRevisionsCount()
      };
    }, []);
    const revisionActions = unlock((0, import_data214.useDispatch)(store));
    return /* @__PURE__ */ (0, import_jsx_runtime620.jsx)(
      RevisionsSlider,
      {
        ...revisionData,
        setCurrentRevisionId: revisionActions.setCurrentRevisionId,
        setRevisionPage: revisionActions.setRevisionPage
      }
    );
  }
  function RevisionsSlider({
    revisions: rawRevisions,
    perPage,
    currentRevisionId,
    revisionKey,
    revisionPage: revisionPage2,
    totalRevisions,
    setCurrentRevisionId: setCurrentRevisionId2,
    setRevisionPage: setRevisionPage2
  }) {
    const setFocusOnMountRef = (0, import_compose86.useFocusOnMount)(true);
    const initialActiveElementRef = (0, import_element392.useRef)();
    const loadingRef = (0, import_element392.useCallback)((node) => {
      if (node && initialActiveElementRef.current === void 0) {
        initialActiveElementRef.current = node.ownerDocument.activeElement;
      }
    }, []);
    const focusOnMountRef = (0, import_element392.useCallback)(
      (node) => {
        if (!node) {
          setFocusOnMountRef(null);
          return;
        }
        const { activeElement: activeElement2, body, documentElement } = node.ownerDocument;
        const initialActiveElement = initialActiveElementRef.current ?? activeElement2;
        const focusHasNotMoved = activeElement2 === initialActiveElement || activeElement2 === body || activeElement2 === documentElement;
        if (focusHasNotMoved) {
          setFocusOnMountRef(node);
        }
      },
      [setFocusOnMountRef]
    );
    const isLoading = !rawRevisions;
    const totalPages = Math.ceil(totalRevisions / perPage) || 1;
    const revisions = (0, import_element392.useMemo)(
      () => rawRevisions && [...rawRevisions].reverse(),
      [rawRevisions]
    );
    const selectedIndex = revisions?.findIndex(
      (r4) => r4[revisionKey] === currentRevisionId
    );
    const handleSliderChange = (index3) => {
      const revision = revisions?.[index3];
      if (revision) {
        setCurrentRevisionId2(revision[revisionKey]);
      }
    };
    const dateSettings = (0, import_date22.getSettings)();
    const renderTooltipContent = (index3) => {
      const revision = revisions?.[index3];
      if (!revision) {
        return index3;
      }
      return (0, import_date22.dateI18n)(dateSettings.formats.datetime, revision.date);
    };
    const showPagination = totalPages > 1;
    if (isLoading && !showPagination) {
      return /* @__PURE__ */ (0, import_jsx_runtime620.jsx)(import_components239.Spinner, { ref: loadingRef });
    }
    if (!isLoading && !revisions?.length) {
      return /* @__PURE__ */ (0, import_jsx_runtime620.jsx)("span", { className: "editor-revisions-header__no-revisions", children: (0, import_i18n318.__)("No revisions found.") });
    }
    if (totalRevisions <= 1) {
      return /* @__PURE__ */ (0, import_jsx_runtime620.jsx)("span", { className: "editor-revisions-header__no-revisions", children: (0, import_i18n318.__)("Only one revision found.") });
    }
    const getPageRangeLabel = (page) => {
      const end = totalRevisions - (page - 1) * perPage;
      const start2 = Math.max(1, end - perPage + 1);
      return (0, import_i18n318.sprintf)(
        /* translators: 1: first revision number, 2: last revision number */
        (0, import_i18n318.__)("Revisions %1$s\u2013%2$s"),
        start2,
        end
      );
    };
    const sliderOrSpinner = isLoading || selectedIndex === -1 ? /* @__PURE__ */ (0, import_jsx_runtime620.jsx)(import_components239.Spinner, { ref: loadingRef }) : /* @__PURE__ */ (0, import_jsx_runtime620.jsx)(
      import_components239.RangeControl,
      {
        ref: focusOnMountRef,
        "aria-valuetext": renderTooltipContent(selectedIndex),
        className: "editor-revisions-header__slider",
        hideLabelFromVision: true,
        label: (0, import_i18n318.__)("Revision"),
        max: revisions?.length - 1,
        min: 0,
        marks: true,
        onChange: handleSliderChange,
        renderTooltipContent,
        value: selectedIndex,
        withInputField: false
      }
    );
    if (!showPagination) {
      return sliderOrSpinner;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime620.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", style: { flex: 1 }, children: [
      /* @__PURE__ */ (0, import_jsx_runtime620.jsx)(
        import_components239.Button,
        {
          icon: chevron_left_default,
          label: revisionPage2 < totalPages ? getPageRangeLabel(revisionPage2 + 1) : (0, import_i18n318.__)("No older revisions"),
          onClick: () => setRevisionPage2(revisionPage2 + 1),
          disabled: isLoading || revisionPage2 >= totalPages,
          size: "compact",
          accessibleWhenDisabled: true
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime620.jsx)(
        "div",
        {
          style: {
            flex: 1,
            minWidth: 0,
            display: "flex",
            justifyContent: "center"
          },
          children: sliderOrSpinner
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime620.jsx)(
        import_components239.Button,
        {
          icon: chevron_right_default,
          label: revisionPage2 > 1 ? getPageRangeLabel(revisionPage2 - 1) : (0, import_i18n318.__)("No newer revisions"),
          onClick: () => setRevisionPage2(revisionPage2 - 1),
          disabled: isLoading || revisionPage2 <= 1,
          size: "compact",
          accessibleWhenDisabled: true
        }
      )
    ] });
  }

  // packages/editor/build-module/components/post-revisions-preview/revisions-header.mjs
  var import_jsx_runtime621 = __toESM(require_jsx_runtime(), 1);
  function RevisionsHeader({ showDiff, onToggleDiff }) {
    const { currentRevisionId, sidebarIsOpened } = (0, import_data215.useSelect)((select9) => {
      return {
        currentRevisionId: unlock(
          select9(store)
        ).getCurrentRevisionId(),
        sidebarIsOpened: !!select9(store3).getActiveComplementaryArea(
          "core"
        )
      };
    }, []);
    const { setCurrentRevisionId: setCurrentRevisionId2, restoreRevision: restoreRevision2 } = unlock(
      (0, import_data215.useDispatch)(store)
    );
    const { enableComplementaryArea: enableComplementaryArea2, disableComplementaryArea: disableComplementaryArea2 } = (0, import_data215.useDispatch)(store3);
    const canRestore = !!currentRevisionId;
    const handleRestore = () => {
      if (currentRevisionId) {
        restoreRevision2(currentRevisionId);
      }
    };
    return /* @__PURE__ */ (0, import_jsx_runtime621.jsx)(
      HeaderSkeleton,
      {
        className: "editor-revisions-header",
        toolbar: /* @__PURE__ */ (0, import_jsx_runtime621.jsx)(
          import_components240.Button,
          {
            __next40pxDefaultSize: true,
            size: "compact",
            icon: seen_default,
            label: (0, import_i18n319._x)("Show changes", "revisions"),
            isPressed: showDiff,
            onClick: onToggleDiff
          }
        ),
        center: /* @__PURE__ */ (0, import_jsx_runtime621.jsx)(ConnectedRevisionsSlider, {}),
        settings: /* @__PURE__ */ (0, import_jsx_runtime621.jsxs)(import_jsx_runtime621.Fragment, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime621.jsx)(PostPreviewButton, { className: "editor-header__post-preview-button" }),
          /* @__PURE__ */ (0, import_jsx_runtime621.jsx)(
            import_components240.Button,
            {
              __next40pxDefaultSize: true,
              icon: (0, import_i18n319.isRTL)() ? drawer_left_default : drawer_right_default,
              label: (0, import_i18n319._x)("Settings", "panel button label"),
              isPressed: sidebarIsOpened,
              "aria-expanded": sidebarIsOpened,
              onClick: () => {
                if (sidebarIsOpened) {
                  disableComplementaryArea2("core");
                } else {
                  enableComplementaryArea2(
                    "core",
                    sidebars.document
                  );
                }
              },
              size: "compact"
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime621.jsx)(
            import_components240.Button,
            {
              __next40pxDefaultSize: true,
              variant: "secondary",
              size: "compact",
              onClick: () => setCurrentRevisionId2(null),
              children: (0, import_i18n319.__)("Exit")
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime621.jsx)(
            import_components240.Button,
            {
              __next40pxDefaultSize: true,
              accessibleWhenDisabled: true,
              variant: "primary",
              size: "compact",
              className: "editor-revisions-header__restore-button",
              disabled: !canRestore,
              onClick: handleRestore,
              children: (0, import_i18n319.__)("Restore")
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime621.jsx)(MoreMenu, { isRevisionMode: true })
        ] })
      }
    );
  }
  var revisions_header_default = RevisionsHeader;

  // packages/editor/build-module/components/post-revisions-preview/revisions-canvas.mjs
  var import_components243 = __toESM(require_components(), 1);
  var import_block_editor87 = __toESM(require_block_editor(), 1);
  var import_data224 = __toESM(require_data(), 1);
  var import_element398 = __toESM(require_element(), 1);
  var import_hooks64 = __toESM(require_hooks(), 1);
  var import_blocks34 = __toESM(require_blocks(), 1);
  var import_i18n323 = __toESM(require_i18n(), 1);

  // packages/editor/build-module/components/visual-editor/index.mjs
  var import_block_editor85 = __toESM(require_block_editor(), 1);
  var import_element396 = __toESM(require_element(), 1);
  var import_data222 = __toESM(require_data(), 1);
  var import_blocks33 = __toESM(require_blocks(), 1);
  var import_core_data126 = __toESM(require_core_data(), 1);
  var import_compose92 = __toESM(require_compose(), 1);

  // packages/editor/build-module/components/visual-editor/edit-template-blocks-notification.mjs
  var import_data216 = __toESM(require_data(), 1);
  var import_core_data124 = __toESM(require_core_data(), 1);
  var import_element393 = __toESM(require_element(), 1);
  var import_i18n320 = __toESM(require_i18n(), 1);
  var import_components241 = __toESM(require_components(), 1);
  var import_jsx_runtime622 = __toESM(require_jsx_runtime(), 1);
  function EditTemplateBlocksNotification({ contentRef }) {
    const { onNavigateToEntityRecord, templateId: templateId2 } = (0, import_data216.useSelect)((select9) => {
      const { getEditorSettings: getEditorSettings2, getCurrentTemplateId: getCurrentTemplateId2 } = select9(store);
      return {
        onNavigateToEntityRecord: getEditorSettings2().onNavigateToEntityRecord,
        templateId: getCurrentTemplateId2()
      };
    }, []);
    const canEditTemplate = (0, import_data216.useSelect)(
      (select9) => !!select9(import_core_data124.store).canUser("create", {
        kind: "postType",
        name: "wp_template"
      }),
      []
    );
    const [isDialogOpen, setIsDialogOpen] = (0, import_element393.useState)(false);
    (0, import_element393.useEffect)(() => {
      const handleDblClick = (event) => {
        if (!canEditTemplate) {
          return;
        }
        if (!event.target.classList.contains("is-root-container") || event.target.dataset?.type === "core/template-part") {
          return;
        }
        if (!event.defaultPrevented) {
          event.preventDefault();
          setIsDialogOpen(true);
        }
      };
      const canvas = contentRef.current;
      canvas?.addEventListener("dblclick", handleDblClick);
      return () => {
        canvas?.removeEventListener("dblclick", handleDblClick);
      };
    }, [contentRef, canEditTemplate]);
    if (!canEditTemplate) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime622.jsx)(
      import_components241.__experimentalConfirmDialog,
      {
        isOpen: isDialogOpen,
        confirmButtonText: (0, import_i18n320.__)("Edit template"),
        onConfirm: () => {
          setIsDialogOpen(false);
          onNavigateToEntityRecord({
            postId: templateId2,
            postType: "wp_template"
          });
        },
        onCancel: () => setIsDialogOpen(false),
        size: "medium",
        children: (0, import_i18n320.__)(
          "You\u2019ve tried to select a block that is part of a template that may be used elsewhere on your site. Would you like to edit the template?"
        )
      }
    );
  }

  // packages/editor/build-module/components/visual-editor/use-select-nearest-editable-block.mjs
  var import_compose87 = __toESM(require_compose(), 1);
  var import_data217 = __toESM(require_data(), 1);
  var import_block_editor80 = __toESM(require_block_editor(), 1);
  var DISTANCE_THRESHOLD = 500;
  function clamp2(value, min4, max4) {
    return Math.min(Math.max(value, min4), max4);
  }
  function distanceFromRect(x2, y3, rect) {
    const dx = x2 - clamp2(x2, rect.left, rect.right);
    const dy = y3 - clamp2(y3, rect.top, rect.bottom);
    return Math.sqrt(dx * dx + dy * dy);
  }
  function useSelectNearestEditableBlock({
    isEnabled = true
  } = {}) {
    const { getEnabledClientIdsTree, getBlockName: getBlockName2, getBlockOrder: getBlockOrder2 } = unlock(
      (0, import_data217.useSelect)(import_block_editor80.store)
    );
    const { selectBlock: selectBlock2 } = (0, import_data217.useDispatch)(import_block_editor80.store);
    return (0, import_compose87.useRefEffect)(
      (element) => {
        if (!isEnabled) {
          return;
        }
        const selectNearestEditableBlock = (x2, y3) => {
          const editableBlockClientIds = getEnabledClientIdsTree().flatMap(({ clientId }) => {
            const blockName = getBlockName2(clientId);
            if (blockName === "core/template-part") {
              return [];
            }
            if (blockName === "core/post-content") {
              const innerBlocks = getBlockOrder2(clientId);
              if (innerBlocks.length) {
                return innerBlocks;
              }
            }
            return [clientId];
          });
          let nearestDistance = Infinity, nearestClientId = null;
          for (const clientId of editableBlockClientIds) {
            const block = element.querySelector(
              `[data-block="${clientId}"]`
            );
            if (!block) {
              continue;
            }
            const rect = block.getBoundingClientRect();
            const distance2 = distanceFromRect(x2, y3, rect);
            if (distance2 < nearestDistance && distance2 < DISTANCE_THRESHOLD) {
              nearestDistance = distance2;
              nearestClientId = clientId;
            }
          }
          if (nearestClientId) {
            selectBlock2(nearestClientId);
          }
        };
        const handleClick = (event) => {
          const shouldSelect = event.target === element || event.target.classList.contains("is-root-container");
          if (shouldSelect) {
            selectNearestEditableBlock(event.clientX, event.clientY);
          }
        };
        element.addEventListener("click", handleClick);
        return () => element.removeEventListener("click", handleClick);
      },
      [isEnabled]
    );
  }

  // packages/editor/build-module/components/visual-editor/use-zoom-out-mode-exit.mjs
  var import_data218 = __toESM(require_data(), 1);
  var import_compose88 = __toESM(require_compose(), 1);
  var import_block_editor81 = __toESM(require_block_editor(), 1);
  function useZoomOutModeExit() {
    const { getSettings: getSettings12, isZoomOut } = unlock((0, import_data218.useSelect)(import_block_editor81.store));
    const { resetZoomLevel } = unlock((0, import_data218.useDispatch)(import_block_editor81.store));
    return (0, import_compose88.useRefEffect)(
      (node) => {
        function onDoubleClick(event) {
          if (!isZoomOut()) {
            return;
          }
          if (!event.defaultPrevented) {
            event.preventDefault();
            const { __experimentalSetIsInserterOpened } = getSettings12();
            if (typeof __experimentalSetIsInserterOpened === "function") {
              __experimentalSetIsInserterOpened(false);
            }
            resetZoomLevel();
          }
        }
        node.addEventListener("dblclick", onDoubleClick);
        return () => {
          node.removeEventListener("dblclick", onDoubleClick);
        };
      },
      [getSettings12, isZoomOut, resetZoomLevel]
    );
  }

  // packages/editor/build-module/components/visual-editor/use-padding-appender.mjs
  var import_data219 = __toESM(require_data(), 1);
  var import_compose89 = __toESM(require_compose(), 1);
  var import_block_editor82 = __toESM(require_block_editor(), 1);
  var import_blocks31 = __toESM(require_blocks(), 1);
  var CSS2 = ':root :where(.editor-styles-wrapper)::after {content: ""; display: block; height: 40vh;}';
  function usePaddingAppender(enabled) {
    const registry = (0, import_data219.useRegistry)();
    const effect = (0, import_compose89.useRefEffect)(
      (node) => {
        function onMouseDown(event) {
          if (event.target !== node && // Tests for the parent element because in the iframed editor if the click is
          // below the padding the target will be the parent element (html) and should
          // still be treated as intent to append.
          event.target !== node.parentElement) {
            return;
          }
          const lastChild = node.lastElementChild;
          if (!lastChild) {
            return;
          }
          const lastChildRect = lastChild.getBoundingClientRect();
          if (event.clientY < lastChildRect.bottom) {
            return;
          }
          event.preventDefault();
          const blockOrder = registry.select(import_block_editor82.store).getBlockOrder("");
          const lastBlockClientId = blockOrder[blockOrder.length - 1];
          const lastBlock = registry.select(import_block_editor82.store).getBlock(lastBlockClientId);
          const { selectBlock: selectBlock2, insertDefaultBlock: insertDefaultBlock2 } = registry.dispatch(import_block_editor82.store);
          if (lastBlock && (0, import_blocks31.isUnmodifiedDefaultBlock)(lastBlock)) {
            selectBlock2(lastBlockClientId);
          } else {
            insertDefaultBlock2();
          }
        }
        const { ownerDocument: ownerDocument2 } = node;
        ownerDocument2.addEventListener("pointerdown", onMouseDown);
        return () => {
          ownerDocument2.removeEventListener("pointerdown", onMouseDown);
        };
      },
      [registry]
    );
    return enabled ? [effect, CSS2] : [];
  }

  // packages/editor/build-module/components/visual-editor/use-edit-content-only-section-exit.mjs
  var import_data220 = __toESM(require_data(), 1);
  var import_compose90 = __toESM(require_compose(), 1);
  var import_block_editor83 = __toESM(require_block_editor(), 1);
  function useEditContentOnlySectionExit() {
    const { getEditedContentOnlySection } = unlock(
      (0, import_data220.useSelect)(import_block_editor83.store)
    );
    const { stopEditingContentOnlySection } = unlock(
      (0, import_data220.useDispatch)(import_block_editor83.store)
    );
    return (0, import_compose90.useRefEffect)(
      (node) => {
        function onClick(event) {
          const editedContentOnlySection = getEditedContentOnlySection();
          if (!editedContentOnlySection) {
            return;
          }
          const isClickOutside = !event.target.closest(
            `[data-block="${editedContentOnlySection}"]`
          );
          if (isClickOutside && !event.defaultPrevented) {
            event.preventDefault();
            stopEditingContentOnlySection();
          }
        }
        node.addEventListener("click", onClick);
        return () => {
          node.removeEventListener("click", onClick);
        };
      },
      [getEditedContentOnlySection, stopEditingContentOnlySection]
    );
  }

  // packages/editor/build-module/components/sync-connection-error-modal/index.mjs
  var import_data221 = __toESM(require_data(), 1);
  var import_compose91 = __toESM(require_compose(), 1);
  var import_blocks32 = __toESM(require_blocks(), 1);
  var import_core_data125 = __toESM(require_core_data(), 1);
  var import_block_editor84 = __toESM(require_block_editor(), 1);
  var import_components242 = __toESM(require_components(), 1);
  var import_hooks63 = __toESM(require_hooks(), 1);
  var import_element395 = __toESM(require_element(), 1);
  var import_i18n321 = __toESM(require_i18n(), 1);

  // packages/editor/build-module/components/sync-connection-error-modal/use-retry-countdown.mjs
  var import_element394 = __toESM(require_element(), 1);
  function useRetryCountdown(connectionStatus) {
    const [secondsRemaining, setSecondsRemaining] = (0, import_element394.useState)();
    const hasRetriedRef = (0, import_element394.useRef)(false);
    (0, import_element394.useEffect)(() => {
      if (!connectionStatus) {
        return;
      }
      if ("connected" === connectionStatus.status) {
        setSecondsRemaining(void 0);
        hasRetriedRef.current = false;
        return;
      }
      if ("disconnected" !== connectionStatus.status || !connectionStatus.willAutoRetryInMs) {
        return;
      }
      const { willAutoRetryInMs: retryInMs } = connectionStatus;
      const retryAt = Date.now() + retryInMs;
      const hasRetried = hasRetriedRef.current;
      hasRetriedRef.current = true;
      if (hasRetried) {
        setSecondsRemaining(0);
      }
      let countdownIntervalId = null;
      const startCountdown = () => {
        setSecondsRemaining(Math.ceil((retryAt - Date.now()) / 1e3));
        countdownIntervalId = setInterval(() => {
          const remaining = Math.ceil((retryAt - Date.now()) / 1e3);
          setSecondsRemaining(Math.max(0, remaining));
          if (remaining <= 0 && countdownIntervalId) {
            clearInterval(countdownIntervalId);
          }
        }, 1e3);
      };
      const retryingDelayId = hasRetried ? setTimeout(startCountdown, 500) : null;
      if (!retryingDelayId) {
        startCountdown();
      }
      return () => {
        if (retryingDelayId) {
          clearTimeout(retryingDelayId);
        }
        if (countdownIntervalId) {
          clearInterval(countdownIntervalId);
        }
      };
    }, [connectionStatus]);
    return {
      onManualRetry: () => {
        setSecondsRemaining(0);
      },
      secondsRemaining
    };
  }

  // packages/editor/build-module/components/sync-connection-error-modal/index.mjs
  var import_jsx_runtime623 = __toESM(require_jsx_runtime(), 1);
  var { BlockCanvasCover: BlockCanvasCover2 } = unlock(import_block_editor84.privateApis);
  var { retrySyncConnection } = unlock(import_core_data125.privateApis);
  var INITIAL_DISCONNECTED_DEBOUNCE_MS = 2e4;
  function SyncConnectionErrorModal() {
    const [hasInitialized, setHasInitialized] = (0, import_element395.useState)(false);
    const [showModal, setShowModal] = (0, import_element395.useState)(false);
    const [isManualRetryAvailable, setIsManualRetryAvailable] = (0, import_element395.useState)(false);
    const { connectionStatus, isCollaborationEnabled, postType: postType2 } = (0, import_data221.useSelect)(
      (selectFn) => {
        const { getSyncConnectionStatus, getPostType } = unlock(
          selectFn(import_core_data125.store)
        );
        const { getCurrentPostType: getCurrentPostType2, isCollaborationEnabledForCurrentPost: isCollaborationEnabledForCurrentPost2 } = unlock(selectFn(store));
        const currentPostType = getCurrentPostType2();
        return {
          connectionStatus: getSyncConnectionStatus() || null,
          isCollaborationEnabled: isCollaborationEnabledForCurrentPost2(),
          postType: currentPostType ? getPostType(currentPostType) : null
        };
      },
      []
    );
    const { onManualRetry, secondsRemaining } = useRetryCountdown(connectionStatus);
    const copyButtonRef = (0, import_compose91.useCopyToClipboard)(() => {
      const blocks = (0, import_data221.select)(import_block_editor84.store).getBlocks();
      return (0, import_blocks32.serialize)(blocks);
    });
    (0, import_element395.useEffect)(() => {
      const timeout = setTimeout(() => {
        setHasInitialized(true);
      }, INITIAL_DISCONNECTED_DEBOUNCE_MS);
      return () => clearTimeout(timeout);
    }, []);
    (0, import_element395.useEffect)(() => {
      if ("connecting" === connectionStatus?.status) {
        return;
      }
      setIsManualRetryAvailable(
        connectionStatus !== null && "canManuallyRetry" in connectionStatus && connectionStatus.canManuallyRetry === true
      );
    }, [connectionStatus]);
    const canRetry = connectionStatus && "disconnected" === connectionStatus.status && (connectionStatus.canManuallyRetry || connectionStatus.willAutoRetryInMs);
    (0, import_element395.useEffect)(() => {
      if ("connected" === connectionStatus?.status) {
        setShowModal(false);
        return;
      }
      if (connectionStatus?.status && "connecting" !== connectionStatus.status && (!canRetry || connectionStatus.backgroundRetriesFailed)) {
        setShowModal(true);
      }
    }, [connectionStatus, canRetry]);
    const isProtocolMismatch = connectionStatus?.status === "disconnected" && "error" in connectionStatus && connectionStatus.error?.code === PROTOCOL_MISMATCH;
    if (!isCollaborationEnabled || !hasInitialized && !isProtocolMismatch || !showModal) {
      return null;
    }
    const error2 = connectionStatus && "error" in connectionStatus ? connectionStatus?.error : void 0;
    if (!canRetry && (0, import_hooks63.applyFilters)(
      "editor.isSyncConnectionErrorHandled",
      false,
      error2?.code
    ) !== false) {
      return null;
    }
    const manualRetry = isManualRetryAvailable ? () => {
      onManualRetry();
      retrySyncConnection();
    } : void 0;
    const messages = getSyncErrorMessages(error2);
    let retryCountdownText = "";
    let isRetrying = false;
    if (secondsRemaining && secondsRemaining > 0) {
      retryCountdownText = (0, import_i18n321.sprintf)(
        /* translators: %d: number of seconds until retry */
        (0, import_i18n321._n)(
          "Retrying connection in %d second\u2026",
          "Retrying connection in %d seconds\u2026",
          secondsRemaining
        ),
        secondsRemaining
      );
    } else if (0 === secondsRemaining) {
      isRetrying = true;
      retryCountdownText = (0, import_i18n321.__)("Retrying\u2026");
    }
    let editPostHref = "edit.php";
    if (postType2?.slug) {
      editPostHref = `edit.php?post_type=${postType2.slug}`;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime623.jsx)(BlockCanvasCover2.Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime623.jsx)(
      import_components242.Modal,
      {
        overlayClassName: "editor-sync-connection-error-modal",
        isDismissible: false,
        onRequestClose: () => {
        },
        shouldCloseOnClickOutside: false,
        shouldCloseOnEsc: false,
        size: "medium",
        title: messages.title,
        children: /* @__PURE__ */ (0, import_jsx_runtime623.jsxs)(import_components242.__experimentalVStack, { spacing: 6, children: [
          /* @__PURE__ */ (0, import_jsx_runtime623.jsx)("p", { children: messages.description }),
          retryCountdownText && /* @__PURE__ */ (0, import_jsx_runtime623.jsx)("p", { className: "editor-sync-connection-error-modal__retry-countdown", children: retryCountdownText }),
          /* @__PURE__ */ (0, import_jsx_runtime623.jsxs)(import_components242.__experimentalHStack, { justify: "right", children: [
            /* @__PURE__ */ (0, import_jsx_runtime623.jsx)(
              import_components242.Button,
              {
                __next40pxDefaultSize: true,
                href: editPostHref,
                isDestructive: true,
                variant: "tertiary",
                children: (0, import_i18n321.sprintf)(
                  /* translators: %s: Post type name (e.g., "Posts", "Pages"). */
                  (0, import_i18n321.__)("Back to %s"),
                  postType2?.labels?.name ?? (0, import_i18n321.__)("Posts")
                )
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime623.jsx)(
              import_components242.Button,
              {
                __next40pxDefaultSize: true,
                ref: copyButtonRef,
                variant: manualRetry ? "secondary" : "primary",
                children: (0, import_i18n321.__)("Copy Post Content")
              }
            ),
            manualRetry && /* @__PURE__ */ (0, import_jsx_runtime623.jsx)(
              import_components242.Button,
              {
                __next40pxDefaultSize: true,
                accessibleWhenDisabled: true,
                "aria-disabled": isRetrying,
                disabled: isRetrying,
                isBusy: isRetrying,
                variant: "primary",
                onClick: manualRetry,
                children: (0, import_i18n321.__)("Retry")
              }
            )
          ] })
        ] })
      }
    ) });
  }

  // packages/editor/build-module/components/visual-editor/index.mjs
  var import_jsx_runtime624 = __toESM(require_jsx_runtime(), 1);
  var {
    LayoutStyle,
    useLayoutClasses,
    useLayoutStyles,
    ExperimentalBlockCanvas: BlockCanvas,
    useFlashEditableBlocks
  } = unlock(import_block_editor85.privateApis);
  function getPostContentAttributes(blocks) {
    for (let i2 = 0; i2 < blocks.length; i2++) {
      if (blocks[i2].name === "core/post-content") {
        return blocks[i2].attributes;
      }
      if (blocks[i2].innerBlocks.length) {
        const nestedPostContent = getPostContentAttributes(
          blocks[i2].innerBlocks
        );
        if (nestedPostContent) {
          return nestedPostContent;
        }
      }
    }
  }
  function checkForPostContentAtRootLevel(blocks) {
    for (let i2 = 0; i2 < blocks.length; i2++) {
      if (blocks[i2].name === "core/post-content") {
        return true;
      }
    }
    return false;
  }
  var CANVAS_MIN_WIDTH = 300;
  var CANVAS_TARGET_ASPECT_RATIO = 9 / 16;
  function getCanvasHeight(width, containerSize) {
    const lerp2 = (a2, b2, amount) => a2 + (b2 - a2) * amount;
    const lerpFactor = 1 - Math.max(
      0,
      Math.min(
        1,
        (width - CANVAS_MIN_WIDTH) / (containerSize.width - CANVAS_MIN_WIDTH)
      )
    );
    const aspectRatio = lerp2(
      containerSize.width / containerSize.height,
      CANVAS_TARGET_ASPECT_RATIO,
      lerpFactor
    );
    return Math.min(Math.round(width / aspectRatio), containerSize.height);
  }
  function VisualEditor({
    // Ideally as we unify post and site editors, we won't need these props.
    autoFocus,
    iframeProps,
    contentRef,
    className
  }) {
    const isMobileViewport = (0, import_compose92.useViewportMatch)("small", "<");
    const {
      renderingMode: renderingMode2,
      postContentAttributes,
      editedPostTemplate = {},
      wrapperBlockName,
      wrapperUniqueId,
      deviceType,
      isFocusedEntity,
      isDesignPostType,
      postType: postType2,
      isPreview,
      styles,
      hasCanvasWidth,
      canvasWidth: canvasWidth2
    } = (0, import_data222.useSelect)((select9) => {
      const {
        getCurrentPostId: getCurrentPostId2,
        getCurrentPostType: getCurrentPostType2,
        getCurrentTemplateId: getCurrentTemplateId2,
        getEditorSettings: getEditorSettings2,
        getRenderingMode: getRenderingMode2,
        getDeviceType: getDeviceType2,
        getCanvasWidth: getCanvasWidth2
      } = unlock(select9(store));
      const { getPostType, getEditedEntityRecord } = select9(import_core_data126.store);
      const postTypeSlug = getCurrentPostType2();
      const _renderingMode = getRenderingMode2();
      let _wrapperBlockName;
      if (postTypeSlug === PATTERN_POST_TYPE) {
        _wrapperBlockName = "core/block";
      } else if (_renderingMode === "post-only") {
        _wrapperBlockName = "core/post-content";
      }
      const editorSettings2 = getEditorSettings2();
      const supportsTemplateMode = editorSettings2.supportsTemplateMode;
      const postTypeObject = getPostType(postTypeSlug);
      const currentTemplateId = getCurrentTemplateId2();
      const _canvasWidth = getCanvasWidth2();
      const template2 = currentTemplateId ? getEditedEntityRecord(
        "postType",
        TEMPLATE_POST_TYPE,
        currentTemplateId
      ) : void 0;
      return {
        renderingMode: _renderingMode,
        postContentAttributes: editorSettings2.postContentAttributes,
        isDesignPostType: DESIGN_POST_TYPES.includes(postTypeSlug),
        // Post template fetch returns a 404 on classic themes, which
        // messes with e2e tests, so check it's a block theme first.
        editedPostTemplate: postTypeObject?.viewable && supportsTemplateMode ? template2 : void 0,
        wrapperBlockName: _wrapperBlockName,
        wrapperUniqueId: getCurrentPostId2(),
        deviceType: getDeviceType2(),
        isFocusedEntity: !!editorSettings2.onNavigateToPreviousEntityRecord,
        postType: postTypeSlug,
        isPreview: editorSettings2.isPreviewMode,
        styles: editorSettings2.styles,
        hasCanvasWidth: _canvasWidth !== void 0,
        canvasWidth: _canvasWidth
      };
    }, []);
    const { isCleanNewPost: isCleanNewPost2 } = (0, import_data222.useSelect)(store);
    const {
      hasRootPaddingAwareAlignments,
      themeHasDisabledLayoutStyles,
      themeSupportsLayout,
      isZoomedOut
    } = (0, import_data222.useSelect)((select9) => {
      const { getSettings: getSettings12, isZoomOut: _isZoomOut } = unlock(
        select9(import_block_editor85.store)
      );
      const _settings = getSettings12();
      return {
        themeHasDisabledLayoutStyles: _settings.disableLayoutStyles,
        themeSupportsLayout: _settings.supportsLayout,
        hasRootPaddingAwareAlignments: _settings.__experimentalFeatures?.useRootPaddingAwareAlignments,
        isZoomedOut: _isZoomOut()
      };
    }, []);
    const localRef = (0, import_element396.useRef)();
    const [globalLayoutSettings] = (0, import_block_editor85.useSettings)("layout");
    const [containerSize, setContainerSize] = (0, import_element396.useState)();
    const containerRef = (0, import_compose92.useResizeObserver)((entries) => {
      const { width, height } = entries[0].contentRect;
      setContainerSize(
        (size4) => size4?.width === width && size4?.height === height ? size4 : { width, height }
      );
    });
    const fallbackLayout = (0, import_element396.useMemo)(() => {
      if (renderingMode2 !== "post-only" || isDesignPostType) {
        return { type: "default" };
      }
      if (themeSupportsLayout) {
        return { ...globalLayoutSettings, type: "constrained" };
      }
      return { type: "default" };
    }, [
      renderingMode2,
      themeSupportsLayout,
      globalLayoutSettings,
      isDesignPostType
    ]);
    const newestPostContentAttributes = (0, import_element396.useMemo)(() => {
      if (!editedPostTemplate?.content && !editedPostTemplate?.blocks && postContentAttributes) {
        return postContentAttributes;
      }
      if (editedPostTemplate?.blocks) {
        return getPostContentAttributes(editedPostTemplate?.blocks);
      }
      const parseableContent = typeof editedPostTemplate?.content === "string" ? editedPostTemplate?.content : "";
      return getPostContentAttributes((0, import_blocks33.parse)(parseableContent));
    }, [
      editedPostTemplate?.content,
      editedPostTemplate?.blocks,
      postContentAttributes
    ]);
    const hasPostContentAtRootLevel = (0, import_element396.useMemo)(() => {
      if (!editedPostTemplate?.content && !editedPostTemplate?.blocks) {
        return false;
      }
      if (editedPostTemplate?.blocks) {
        return checkForPostContentAtRootLevel(editedPostTemplate?.blocks);
      }
      const parseableContent = typeof editedPostTemplate?.content === "string" ? editedPostTemplate?.content : "";
      return checkForPostContentAtRootLevel((0, import_blocks33.parse)(parseableContent)) || false;
    }, [editedPostTemplate?.content, editedPostTemplate?.blocks]);
    const { layout = {}, align = "" } = newestPostContentAttributes || {};
    const postContentLayoutClasses = useLayoutClasses(
      newestPostContentAttributes,
      "core/post-content"
    );
    const blockListLayoutClass = clsx_default(
      {
        "is-layout-flow": !themeSupportsLayout
      },
      themeSupportsLayout && postContentLayoutClasses,
      align && `align${align}`
    );
    const postContentLayoutStyles = useLayoutStyles(
      newestPostContentAttributes,
      "core/post-content",
      ".block-editor-block-list__layout.is-root-container"
    );
    const postContentLayout = (0, import_element396.useMemo)(() => {
      return layout && (layout?.type === "constrained" || layout?.inherit || layout?.contentSize || layout?.wideSize) ? { ...globalLayoutSettings, ...layout, type: "constrained" } : { ...globalLayoutSettings, ...layout, type: "default" };
    }, [
      layout?.type,
      layout?.inherit,
      layout?.contentSize,
      layout?.wideSize,
      globalLayoutSettings
    ]);
    const blockListLayout = newestPostContentAttributes ? postContentLayout : fallbackLayout;
    const postEditorLayout = blockListLayout?.type === "default" && !hasPostContentAtRootLevel ? fallbackLayout : blockListLayout;
    const titleRef = (0, import_element396.useRef)();
    (0, import_element396.useEffect)(() => {
      if (!autoFocus || !isCleanNewPost2()) {
        return;
      }
      titleRef?.current?.focus();
    }, [autoFocus, isCleanNewPost2]);
    const alignCSS = `.is-root-container.alignwide { max-width: var(--wp--style--global--wide-size); margin-left: auto; margin-right: auto;}
		.is-root-container.alignwide:where(.is-layout-flow) > :not(.alignleft):not(.alignright) { max-width: var(--wp--style--global--wide-size);}
		.is-root-container.alignfull { max-width: none; margin-left: auto; margin-right: auto;}
		.is-root-container.alignfull:where(.is-layout-flow) > :not(.alignleft):not(.alignright) { max-width: none;}`;
    const isResizablePostType = [
      NAVIGATION_POST_TYPE,
      TEMPLATE_PART_POST_TYPE,
      PATTERN_POST_TYPE
    ].includes(postType2);
    const enableResizing = isResizablePostType && // Disable in previews / view mode.
    !isPreview && // Disable resizing in mobile viewport.
    !isMobileViewport && // Disable resizing in zoomed-out mode.
    !isZoomedOut || // When the canvas has an explicit width, always allow resizing.
    hasCanvasWidth;
    const isNavigationPreview = postType2 === NAVIGATION_POST_TYPE && isPreview;
    const [paddingAppenderRef, paddingStyle] = usePaddingAppender(
      !isPreview && renderingMode2 === "post-only" && !isDesignPostType
    );
    const shouldConstrainCanvasHeight = enableResizing && canvasWidth2 && containerSize?.height > 0 && containerSize?.width > CANVAS_MIN_WIDTH;
    const canvasHeight = shouldConstrainCanvasHeight ? getCanvasHeight(canvasWidth2, containerSize) : "100%";
    const centerContentCSS = `display:flex;align-items:center;justify-content:center;`;
    const iframeBodyMinHeightCSS = hasCanvasWidth && !isResizablePostType ? "min-height:100vh;" : "";
    const iframeStyles = (0, import_element396.useMemo)(() => {
      return [
        ...styles ?? [],
        {
          // Ensures margins of children are contained so that the body background paints behind them.
          // Otherwise, the background of html (when zoomed out) would show there and appear broken. It's
          // important mostly for post-only views yet conceivably an issue in templated views too.
          css: `:where(.block-editor-iframe__body){display:flow-root;}.is-root-container{display:flow-root;${// Some themes will have `min-height: 100vh` for the root container,
          // which isn't a requirement in auto resize mode.
          enableResizing || isNavigationPreview ? "min-height:0!important;" : ""}}
				${paddingStyle ? paddingStyle : ""}
				${enableResizing ? `.block-editor-iframe__html{background:var(--wp-editor-canvas-background);min-height:100vh;${centerContentCSS}}.block-editor-iframe__body{width:100%;${iframeBodyMinHeightCSS}}` : ""}${isNavigationPreview ? `.block-editor-iframe__body{${centerContentCSS}padding:var(--wp--style--block-gap,2em);}` : ""}`
          // The CSS for enableResizing centers the body content vertically when resizing is enabled and applies a background
          // color to the iframe HTML element to match the background color of the editor canvas.
          // The CSS for isNavigationPreview centers the body content vertically and horizontally when the navigation is in preview mode.
        }
      ];
    }, [
      styles,
      enableResizing,
      centerContentCSS,
      iframeBodyMinHeightCSS,
      isNavigationPreview,
      paddingStyle
    ]);
    const typewriterRef = (0, import_block_editor85.__unstableUseTypewriter)();
    contentRef = (0, import_compose92.useMergeRefs)([
      localRef,
      contentRef,
      renderingMode2 === "post-only" ? typewriterRef : null,
      useFlashEditableBlocks({
        isEnabled: renderingMode2 === "template-locked"
      }),
      useSelectNearestEditableBlock({
        isEnabled: renderingMode2 === "template-locked"
      }),
      useZoomOutModeExit(),
      paddingAppenderRef,
      useEditContentOnlySectionExit()
    ]);
    return /* @__PURE__ */ (0, import_jsx_runtime624.jsxs)(
      "div",
      {
        ref: containerRef,
        className: clsx_default(
          "editor-visual-editor",
          // this class is here for backward compatibility reasons.
          "edit-post-visual-editor",
          className,
          {
            // Vertical padding frames a width-constrained canvas
            // (device preview or after a resize) as a centered preview.
            "has-vertical-padding": isFocusedEntity || hasCanvasWidth,
            // Horizontal padding leaves room for the resize handles
            // that appear on the left/right of a resizable canvas.
            "has-horizontal-padding": isFocusedEntity || enableResizing
          }
        ),
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime624.jsx)(SyncConnectionErrorModal, {}),
          /* @__PURE__ */ (0, import_jsx_runtime624.jsx)(
            resizable_editor_default,
            {
              enableResizing,
              width: enableResizing && canvasWidth2 ? canvasWidth2 + "px" : "100%",
              height: canvasHeight,
              children: /* @__PURE__ */ (0, import_jsx_runtime624.jsxs)(
                BlockCanvas,
                {
                  shouldIframe: true,
                  contentRef,
                  styles: iframeStyles,
                  height: "100%",
                  iframeProps: {
                    ...iframeProps,
                    style: iframeProps?.style
                  },
                  children: [
                    themeSupportsLayout && !themeHasDisabledLayoutStyles && renderingMode2 === "post-only" && !isDesignPostType && /* @__PURE__ */ (0, import_jsx_runtime624.jsxs)(import_jsx_runtime624.Fragment, { children: [
                      /* @__PURE__ */ (0, import_jsx_runtime624.jsx)(
                        LayoutStyle,
                        {
                          selector: ".editor-visual-editor__post-title-wrapper",
                          layout: fallbackLayout
                        }
                      ),
                      /* @__PURE__ */ (0, import_jsx_runtime624.jsx)(
                        LayoutStyle,
                        {
                          selector: ".block-editor-block-list__layout.is-root-container",
                          layout: postEditorLayout
                        }
                      ),
                      align && /* @__PURE__ */ (0, import_jsx_runtime624.jsx)(LayoutStyle, { css: alignCSS }),
                      postContentLayoutStyles && /* @__PURE__ */ (0, import_jsx_runtime624.jsx)(
                        LayoutStyle,
                        {
                          layout: postContentLayout,
                          css: postContentLayoutStyles
                        }
                      )
                    ] }),
                    renderingMode2 === "post-only" && !isDesignPostType && /* @__PURE__ */ (0, import_jsx_runtime624.jsx)(
                      "div",
                      {
                        className: clsx_default(
                          "editor-visual-editor__post-title-wrapper",
                          // The following class is only here for backward compatibility
                          // some themes might be using it to style the post title.
                          "edit-post-visual-editor__post-title-wrapper",
                          {
                            "has-global-padding": hasRootPaddingAwareAlignments
                          }
                        ),
                        contentEditable: false,
                        style: {
                          // This is using inline styles so it's applied
                          // within the editor iframe.
                          marginTop: "4rem"
                        },
                        children: /* @__PURE__ */ (0, import_jsx_runtime624.jsx)(post_title_default, { ref: titleRef })
                      }
                    ),
                    /* @__PURE__ */ (0, import_jsx_runtime624.jsxs)(
                      import_block_editor85.RecursionProvider,
                      {
                        blockName: wrapperBlockName,
                        uniqueId: wrapperUniqueId,
                        children: [
                          /* @__PURE__ */ (0, import_jsx_runtime624.jsx)(
                            import_block_editor85.BlockList,
                            {
                              className: clsx_default(
                                "is-" + deviceType.toLowerCase() + "-preview",
                                renderingMode2 !== "post-only" || isDesignPostType ? "wp-site-blocks" : `${blockListLayoutClass} wp-block-post-content`,
                                // Ensure root level blocks receive default/flow blockGap styling rules.
                                {
                                  "has-global-padding": renderingMode2 === "post-only" && !isDesignPostType && hasRootPaddingAwareAlignments
                                }
                              ),
                              layout: blockListLayout,
                              dropZoneElement: (
                                // Pass in the html element of the iframe to
                                // ensure the drop zone extends to the edges of
                                // the iframe.
                                localRef.current?.parentNode
                              ),
                              __unstableDisableDropZone: (
                                // In template preview mode, disable drop zones at the root of the template.
                                renderingMode2 === "template-locked" ? true : false
                              )
                            }
                          ),
                          renderingMode2 === "template-locked" && /* @__PURE__ */ (0, import_jsx_runtime624.jsx)(
                            EditTemplateBlocksNotification,
                            {
                              contentRef: localRef
                            }
                          )
                        ]
                      }
                    )
                  ]
                }
              )
            }
          )
        ]
      }
    );
  }
  var visual_editor_default = VisualEditor;

  // packages/editor/build-module/components/post-revisions-preview/diff-markers.mjs
  var import_element397 = __toESM(require_element(), 1);
  var import_compose93 = __toESM(require_compose(), 1);
  var import_data223 = __toESM(require_data(), 1);
  var import_block_editor86 = __toESM(require_block_editor(), 1);
  var import_i18n322 = __toESM(require_i18n(), 1);
  var import_jsx_runtime625 = __toESM(require_jsx_runtime(), 1);
  var { useBlockElementRef } = unlock(import_block_editor86.privateApis);
  function collectDiffBlocks(blocks) {
    const result = [];
    for (const block of blocks) {
      if (block.__revisionDiffStatus?.status) {
        result.push({
          clientId: block.clientId,
          status: block.__revisionDiffStatus.status
        });
      }
      if (block.innerBlocks?.length) {
        result.push(...collectDiffBlocks(block.innerBlocks));
      }
    }
    return result;
  }
  var STATUS_LABELS = {
    added: (0, import_i18n322.__)("Go to added block"),
    removed: (0, import_i18n322.__)("Go to removed block"),
    modified: (0, import_i18n322.__)("Go to modified block")
  };
  function calculatePosition(el) {
    if (!el) {
      return null;
    }
    const doc = el.ownerDocument;
    const scrollHeight = doc.documentElement.scrollHeight;
    const rect = el.getBoundingClientRect();
    const scrollTop = doc.documentElement.scrollTop;
    const top = rect.top + scrollTop;
    return {
      top: top / scrollHeight * 100,
      height: rect.height / scrollHeight * 100
    };
  }
  function DiffMarkerButton({ clientId, status, subscribe: subscribe5 }) {
    const blockRef = (0, import_element397.useRef)();
    useBlockElementRef(clientId, blockRef);
    const [position, setPosition] = (0, import_element397.useState)(
      () => calculatePosition(blockRef.current)
    );
    (0, import_element397.useEffect)(() => {
      return subscribe5(() => {
        setPosition(calculatePosition(blockRef.current));
      });
    }, [subscribe5]);
    (0, import_element397.useEffect)(() => {
      setPosition(calculatePosition(blockRef.current));
    }, [status]);
    if (!position) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime625.jsxs)(tooltip_exports.Root, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime625.jsx)(
        tooltip_exports.Trigger,
        {
          render: /* @__PURE__ */ (0, import_jsx_runtime625.jsx)(
            "button",
            {
              className: `revision-diff-marker is-${status}`,
              style: {
                top: `${position.top}%`,
                height: `${Math.max(position.height, 0.5)}%`
              },
              onClick: () => blockRef.current?.focus(),
              "aria-label": STATUS_LABELS[status]
            }
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime625.jsx)(tooltip_exports.Popup, { children: STATUS_LABELS[status] })
    ] });
  }
  function useDiffMarkers() {
    const [isMounted, setIsMounted] = (0, import_element397.useState)(false);
    const subscribersRef = (0, import_element397.useRef)(/* @__PURE__ */ new Set());
    const blocks = (0, import_data223.useSelect)(
      (select9) => select9(import_block_editor86.store).getBlocks(),
      []
    );
    const diffBlocks = (0, import_element397.useMemo)(() => collectDiffBlocks(blocks), [blocks]);
    const subscribe5 = (0, import_element397.useCallback)((callback) => {
      subscribersRef.current.add(callback);
      return () => subscribersRef.current.delete(callback);
    }, []);
    const contentRef = (0, import_compose93.useRefEffect)((element) => {
      const { ownerDocument: ownerDocument2 } = element;
      const { defaultView } = ownerDocument2;
      const resizeObserver = new defaultView.ResizeObserver(() => {
        subscribersRef.current.forEach((cb) => cb());
      });
      resizeObserver.observe(ownerDocument2.body);
      return () => {
        resizeObserver.disconnect();
      };
    }, []);
    return [
      (0, import_compose93.useMergeRefs)([contentRef, setIsMounted]),
      /* @__PURE__ */ (0, import_jsx_runtime625.jsx)(
        "div",
        {
          className: "revision-diff-markers",
          role: "navigation",
          "aria-label": (0, import_i18n322.__)("Document changes"),
          children: isMounted && diffBlocks.map(({ clientId, status }) => /* @__PURE__ */ (0, import_jsx_runtime625.jsx)(
            DiffMarkerButton,
            {
              clientId,
              status,
              subscribe: subscribe5
            },
            clientId
          ))
        },
        "diff-markers"
      )
    ];
  }

  // packages/editor/build-module/components/post-revisions-preview/revisions-canvas.mjs
  var import_jsx_runtime626 = __toESM(require_jsx_runtime(), 1);
  var { usePrivateStyleOverride, PrivateBlockContext } = unlock(
    import_block_editor87.privateApis
  );
  var REVISION_REMOVED_FILTER_SVG = `
<svg
	xmlns="http://www.w3.org/2000/svg"
	viewBox="0 0 0 0"
	width="0"
	height="0"
	focusable="false"
	role="none"
	aria-hidden="true"
	style="visibility: hidden; position: absolute; left: -9999px; overflow: hidden;"
>
	<defs>
		<filter id="revision-removed-filter" x="0" y="0" width="100%" height="100%">
			<!-- Desaturate and add red tint -->
			<feColorMatrix type="matrix"
				values="0.5 0.3 0.2 0 0.15
				        0.2 0.2 0.1 0 0
				        0.2 0.2 0.1 0 0
				        0   0   0   0.8 0"/>
		</filter>
	</defs>
</svg>
`;
  var REVISION_DIFF_STYLES = `
	.is-revision-added {
		box-shadow: inset 0 0 0 9999px color-mix(in srgb, currentColor 5%, #00a32a 15%), 0 0 0 4px color-mix(in srgb, currentColor 5%, #00a32a 15%);
		outline: 3px solid #00a32a;
		outline-offset: 2px;
	}
	.is-revision-removed,
	.revision-diff-removed {
		text-decoration: line-through;
		filter: url(#revision-removed-filter);
	}
	.is-revision-removed {
		outline: 3px dashed #d63638;
		outline-offset: 2px;
	}
	.is-revision-modified {
		outline: 3px dotted #9a7000 !important;
		outline-offset: 2px;
	}
	.revision-diff-added {
		background-color: color-mix(in srgb, currentColor 5%, #00a32a 15%);
		text-decoration: none;
	}
	/* Reset UA <mark> styles so format markers keep the same look as before. */
	mark.revision-diff-format-added,
	mark.revision-diff-format-removed,
	mark.revision-diff-format-changed {
		background: transparent;
		color: inherit;
		padding: 0;
	}
	.revision-diff-format-added {
		text-decoration: underline wavy color-mix(in srgb, currentColor 30%, #00a32a 70%);
		text-decoration-thickness: 2px;
	}
	.revision-diff-format-removed {
		text-decoration: underline wavy color-mix(in srgb, currentColor 20%, #d63638 80%);
		text-decoration-thickness: 2px;
	}
	.revision-diff-format-changed {
		text-decoration: underline wavy color-mix(in srgb, currentColor 30%, #dba617 70%);
		text-decoration-thickness: 2px;
	}
`;
  function getDiffStatusLabel(status, blockTitle) {
    switch (status) {
      case "added":
        return (0, import_i18n323.sprintf)((0, import_i18n323.__)("Added block: %s"), blockTitle);
      case "removed":
        return (0, import_i18n323.sprintf)((0, import_i18n323.__)("Removed block: %s"), blockTitle);
      case "modified":
        return (0, import_i18n323.sprintf)((0, import_i18n323.__)("Modified block: %s"), blockTitle);
    }
  }
  function BlockDiffLabelProvider({ status, name: name2, attributes, children }) {
    const context = (0, import_element398.useContext)(PrivateBlockContext);
    const blockTitle = (0, import_data224.useSelect)(
      (select9) => {
        const { getActiveBlockVariation, getBlockType: getBlockType7 } = select9(import_blocks34.store);
        return getActiveBlockVariation(name2, attributes)?.title ?? getBlockType7(name2)?.title;
      },
      [name2, attributes]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime626.jsx)(
      PrivateBlockContext.Provider,
      {
        value: {
          ...context,
          ariaLabel: blockTitle ? getDiffStatusLabel(status, blockTitle) : void 0
        },
        children
      }
    );
  }
  function withRevisionDiffClasses(BlockListBlock) {
    return function WithRevisionDiffClasses(props) {
      const { block, className, name: name2, attributes } = props;
      const diffStatus = block?.__revisionDiffStatus?.status;
      const enhancedClassName = clsx_default(className, {
        "is-revision-added": diffStatus === "added",
        "is-revision-removed": diffStatus === "removed",
        "is-revision-modified": diffStatus === "modified"
      });
      if (!diffStatus) {
        return /* @__PURE__ */ (0, import_jsx_runtime626.jsx)(BlockListBlock, { ...props, className: enhancedClassName });
      }
      return /* @__PURE__ */ (0, import_jsx_runtime626.jsx)(
        BlockDiffLabelProvider,
        {
          status: diffStatus,
          name: name2,
          attributes,
          children: /* @__PURE__ */ (0, import_jsx_runtime626.jsx)(BlockListBlock, { ...props, className: enhancedClassName })
        }
      );
    };
  }
  var FILTER_NAME = "editor/revisions-canvas/withRevisionDiffClasses";
  (0, import_hooks64.addFilter)("editor.BlockListBlock", FILTER_NAME, withRevisionDiffClasses);
  function DiffStyleOverrides({ showDiff }) {
    usePrivateStyleOverride({
      css: showDiff ? REVISION_DIFF_STYLES : ""
    });
    usePrivateStyleOverride({
      assets: showDiff ? REVISION_REMOVED_FILTER_SVG : "",
      __unstableType: "svgs"
    });
    return null;
  }
  function DiffDescriptions() {
    return /* @__PURE__ */ (0, import_jsx_runtime626.jsxs)(VisuallyHidden, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime626.jsx)("span", { id: DIFF_DESCRIPTION_IDS.removed, children: (0, import_i18n323.__)("Removed") }),
      /* @__PURE__ */ (0, import_jsx_runtime626.jsx)("span", { id: DIFF_DESCRIPTION_IDS.added, children: (0, import_i18n323.__)("Added") }),
      /* @__PURE__ */ (0, import_jsx_runtime626.jsx)("span", { id: DIFF_DESCRIPTION_IDS.formatAdded, children: (0, import_i18n323.__)("Format added") }),
      /* @__PURE__ */ (0, import_jsx_runtime626.jsx)("span", { id: DIFF_DESCRIPTION_IDS.formatRemoved, children: (0, import_i18n323.__)("Format removed") }),
      /* @__PURE__ */ (0, import_jsx_runtime626.jsx)("span", { id: DIFF_DESCRIPTION_IDS.formatChanged, children: (0, import_i18n323.__)("Format changed") })
    ] });
  }
  function CanvasContent({ showDiff }) {
    const [contentRef, diffMarkers] = useDiffMarkers();
    return /* @__PURE__ */ (0, import_jsx_runtime626.jsxs)(import_jsx_runtime626.Fragment, { children: [
      showDiff && /* @__PURE__ */ (0, import_jsx_runtime626.jsx)(DiffDescriptions, {}),
      /* @__PURE__ */ (0, import_jsx_runtime626.jsx)(visual_editor_default, { contentRef }),
      showDiff && diffMarkers
    ] });
  }
  function RevisionsCanvas() {
    (0, import_element398.useEffect)(() => {
      registerDiffFormatTypes();
      return () => {
        unregisterDiffFormatTypes();
      };
    }, []);
    const { revision, showDiff } = (0, import_data224.useSelect)((select9) => {
      const { getCurrentRevision: getCurrentRevision2, isShowingRevisionDiff: isShowingRevisionDiff2 } = unlock(
        select9(store)
      );
      return {
        revision: getCurrentRevision2(),
        showDiff: isShowingRevisionDiff2()
      };
    }, []);
    return revision ? /* @__PURE__ */ (0, import_jsx_runtime626.jsxs)(import_jsx_runtime626.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime626.jsx)(DiffStyleOverrides, { showDiff }),
      /* @__PURE__ */ (0, import_jsx_runtime626.jsx)("div", { className: "editor-revisions-canvas__content", children: /* @__PURE__ */ (0, import_jsx_runtime626.jsx)(CanvasContent, { showDiff }) })
    ] }) : /* @__PURE__ */ (0, import_jsx_runtime626.jsx)("div", { className: "editor-revisions-canvas__loading", children: /* @__PURE__ */ (0, import_jsx_runtime626.jsx)(import_components243.Spinner, {}) });
  }

  // packages/editor/build-module/components/post-revisions-preview/revisions-code-diff.mjs
  var import_components244 = __toESM(require_components(), 1);
  var import_core_data127 = __toESM(require_core_data(), 1);
  var import_data225 = __toESM(require_data(), 1);
  var import_element399 = __toESM(require_element(), 1);
  var import_i18n324 = __toESM(require_i18n(), 1);
  var import_jsx_runtime627 = __toESM(require_jsx_runtime(), 1);
  var MAX_DIFF_EDIT_LENGTH = 1e3;
  var DIFF_TIMEOUT = 100;
  function splitLines(value) {
    const lines = value.split("\n");
    if (lines[lines.length - 1] === "") {
      lines.pop();
    }
    return lines;
  }
  function getCodeDiffRows(previousContent, currentContent, showDiff) {
    let parts = [{ value: currentContent }];
    if (showDiff) {
      parts = diffLines(previousContent, currentContent, {
        maxEditLength: MAX_DIFF_EDIT_LENGTH,
        timeout: DIFF_TIMEOUT
      });
      if (!parts) {
        parts = [
          { value: previousContent, removed: true },
          { value: currentContent, added: true }
        ];
      }
    }
    let previousLineNumber = 1;
    let currentLineNumber = 1;
    return parts.flatMap((part) => {
      let status = "unchanged";
      if (part.added) {
        status = "added";
      } else if (part.removed) {
        status = "removed";
      }
      return splitLines(part.value).map((value) => {
        const row = {
          value,
          status,
          previousLineNumber: null,
          currentLineNumber: null
        };
        if (status !== "added" && showDiff) {
          row.previousLineNumber = previousLineNumber++;
        }
        if (status !== "removed") {
          row.currentLineNumber = currentLineNumber++;
        }
        return row;
      });
    });
  }
  function getCodeDiffDisplayState({
    previousRevision,
    showDiff,
    hasOlderRevisionPage,
    hasFinishedPreviousRevision
  }) {
    const needsPreviousRevision = showDiff && previousRevision === null && hasOlderRevisionPage;
    return {
      showDiff: showDiff && !(needsPreviousRevision && hasFinishedPreviousRevision),
      isPreviousRevisionLoading: needsPreviousRevision && !hasFinishedPreviousRevision
    };
  }
  function ConnectedRevisionsCodeDiff() {
    const revisionDiff = (0, import_data225.useSelect)((select9) => {
      const editorSelectors = select9(store);
      const coreSelectors = select9(import_core_data127.store);
      const {
        getCurrentRevision: getCurrentRevision2,
        getPreviousRevision: getPreviousRevision2,
        getRevisionPage: getRevisionPage2,
        getRevisionsPerPage: getRevisionsPerPage2,
        isShowingRevisionDiff: isShowingRevisionDiff2
      } = unlock(editorSelectors);
      const _previousRevision = getPreviousRevision2();
      const _showDiff = isShowingRevisionDiff2();
      const revisionPage2 = getRevisionPage2();
      const totalPages = Math.ceil(
        editorSelectors.getCurrentPostRevisionsCount() / getRevisionsPerPage2()
      ) || 1;
      const hasOlderRevisionPage = revisionPage2 < totalPages;
      let hasFinishedPreviousRevision = true;
      if (_showDiff && _previousRevision === null && hasOlderRevisionPage) {
        const postType2 = editorSelectors.getCurrentPostType();
        const postId2 = editorSelectors.getCurrentPostId();
        const entityConfig = coreSelectors.getEntityConfig(
          "postType",
          postType2
        );
        const revisionKey = entityConfig?.revisionKey || "id";
        hasFinishedPreviousRevision = coreSelectors.hasFinishedResolution(
          "getRevisions",
          [
            "postType",
            postType2,
            postId2,
            buildRevisionsPageQuery(revisionKey, revisionPage2 + 1)
          ]
        );
      }
      return {
        revision: getCurrentRevision2(),
        previousRevision: _previousRevision,
        ...getCodeDiffDisplayState({
          previousRevision: _previousRevision,
          showDiff: _showDiff,
          hasOlderRevisionPage,
          hasFinishedPreviousRevision
        })
      };
    }, []);
    return /* @__PURE__ */ (0, import_jsx_runtime627.jsx)(RevisionsCodeDiff, { ...revisionDiff });
  }
  function RevisionsCodeDiff({
    revision,
    previousRevision,
    showDiff,
    isPreviousRevisionLoading
  }) {
    const rows = (0, import_element399.useMemo)(() => {
      if (!revision || isPreviousRevisionLoading) {
        return [];
      }
      return getCodeDiffRows(
        previousRevision?.content?.raw ?? "",
        revision.content?.raw ?? "",
        showDiff
      );
    }, [revision, previousRevision, showDiff, isPreviousRevisionLoading]);
    if (!revision || isPreviousRevisionLoading) {
      return /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("div", { className: "editor-revisions-canvas__loading", children: /* @__PURE__ */ (0, import_jsx_runtime627.jsx)(import_components244.Spinner, {}) });
    }
    const label = showDiff ? (0, import_i18n324.__)("Code changes") : (0, import_i18n324.__)("Revision code");
    return /* @__PURE__ */ (0, import_jsx_runtime627.jsx)(
      "div",
      {
        className: "editor-revisions-code-diff",
        role: "region",
        "aria-label": label,
        tabIndex: 0,
        children: rows.length ? /* @__PURE__ */ (0, import_jsx_runtime627.jsxs)("table", { className: "editor-revisions-code-diff__table", children: [
          /* @__PURE__ */ (0, import_jsx_runtime627.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("caption", {}), children: label }),
          /* @__PURE__ */ (0, import_jsx_runtime627.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("thead", {}), children: /* @__PURE__ */ (0, import_jsx_runtime627.jsxs)("tr", { children: [
            showDiff && /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("th", { children: (0, import_i18n324.__)("Previous line") }),
            /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("th", { children: (0, import_i18n324.__)("Current line") }),
            showDiff && /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("th", { children: (0, import_i18n324._x)("Change", "noun") }),
            /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("th", { children: (0, import_i18n324.__)("Code") })
          ] }) }),
          /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("tbody", { children: rows.map((row, index3) => {
            let marker = "";
            let statusLabel = (0, import_i18n324.__)("Unchanged");
            if (row.status === "added") {
              marker = "+";
              statusLabel = (0, import_i18n324.__)("Added");
            } else if (row.status === "removed") {
              marker = "\u2212";
              statusLabel = (0, import_i18n324.__)("Removed");
            }
            return /* @__PURE__ */ (0, import_jsx_runtime627.jsxs)(
              "tr",
              {
                className: `editor-revisions-code-diff__line is-${row.status}`,
                children: [
                  showDiff && /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("td", { className: "editor-revisions-code-diff__line-number is-previous", children: row.previousLineNumber }),
                  /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("td", { className: "editor-revisions-code-diff__line-number is-current", children: row.currentLineNumber }),
                  showDiff && /* @__PURE__ */ (0, import_jsx_runtime627.jsxs)("td", { className: "editor-revisions-code-diff__marker", children: [
                    /* @__PURE__ */ (0, import_jsx_runtime627.jsx)(VisuallyHidden, { children: statusLabel }),
                    /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("span", { "aria-hidden": "true", children: marker })
                  ] }),
                  /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("td", { className: "editor-revisions-code-diff__code", children: /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("code", { children: row.value }) })
                ]
              },
              index3
            );
          }) })
        ] }) : /* @__PURE__ */ (0, import_jsx_runtime627.jsx)("p", { className: "editor-revisions-code-diff__empty", children: (0, import_i18n324.__)("This revision is empty.") })
      }
    );
  }

  // packages/editor/build-module/components/collaborators-presence/use-collaborator-notifications.mjs
  var import_data226 = __toESM(require_data(), 1);
  var import_element400 = __toESM(require_element(), 1);
  var import_i18n325 = __toESM(require_i18n(), 1);
  var import_notices31 = __toESM(require_notices(), 1);
  var import_core_data128 = __toESM(require_core_data(), 1);
  var import_preferences24 = __toESM(require_preferences(), 1);
  var { useOnCollaboratorJoin, useOnCollaboratorLeave, useOnPostSave } = unlock(import_core_data128.privateApis);
  var NOTIFICATION_TYPE = {
    COLLAB_POST_UPDATED: "collab-post-updated",
    COLLAB_USER_ENTERED: "collab-user-entered",
    COLLAB_USER_EXITED: "collab-user-exited"
  };
  var PUBLISHED_STATUSES = ["publish", "private", "future"];
  function getPostUpdatedMessage(name2, status, isFirstPublish) {
    if (isFirstPublish) {
      return (0, import_i18n325.sprintf)((0, import_i18n325.__)("Post published by %s."), name2);
    }
    if (PUBLISHED_STATUSES.includes(status)) {
      return (0, import_i18n325.sprintf)((0, import_i18n325.__)("Post updated by %s."), name2);
    }
    return (0, import_i18n325.sprintf)((0, import_i18n325.__)("Draft saved by %s."), name2);
  }
  function useCollaboratorNotifications(postId2, postType2) {
    const {
      postStatus,
      isCollaborationEnabled,
      showJoinNotifications,
      showLeaveNotifications,
      showPostSaveNotifications
    } = (0, import_data226.useSelect)((select9) => {
      const {
        getCurrentPostAttribute: getCurrentPostAttribute2,
        isCollaborationEnabledForCurrentPost: isCollaborationEnabledForCurrentPost2
      } = unlock(select9(store));
      const getNotificationPreference = (name2) => select9(import_preferences24.store).get("core", name2) ?? true;
      return {
        postStatus: getCurrentPostAttribute2("status"),
        isCollaborationEnabled: isCollaborationEnabledForCurrentPost2(),
        showJoinNotifications: getNotificationPreference(
          "showCollaborationJoinNotifications"
        ),
        showLeaveNotifications: getNotificationPreference(
          "showCollaborationLeaveNotifications"
        ),
        showPostSaveNotifications: getNotificationPreference(
          "showCollaborationPostSaveNotifications"
        )
      };
    }, []);
    const { createNotice } = (0, import_data226.useDispatch)(import_notices31.store);
    const shouldShowJoinNotifications = isCollaborationEnabled && showJoinNotifications;
    const shouldShowLeaveNotifications = isCollaborationEnabled && showLeaveNotifications;
    const shouldShowPostSaveNotifications = isCollaborationEnabled && showPostSaveNotifications;
    const effectiveTarget = (shouldShow) => shouldShow ? [postId2, postType2] : [null, null];
    const [joinPostId, joinPostType] = effectiveTarget(
      shouldShowJoinNotifications
    );
    const [leavePostId, leavePostType] = effectiveTarget(
      shouldShowLeaveNotifications
    );
    const [postSavePostId, postSavePostType] = effectiveTarget(
      shouldShowPostSaveNotifications
    );
    useOnCollaboratorJoin(
      joinPostId,
      joinPostType,
      (0, import_element400.useCallback)(
        (collaborator, me) => {
          if (!shouldShowJoinNotifications) {
            return;
          }
          if (me && collaborator.collaboratorInfo.enteredAt < me.collaboratorInfo.enteredAt) {
            return;
          }
          void createNotice(
            "info",
            (0, import_i18n325.sprintf)(
              /* translators: %s: collaborator display name */
              (0, import_i18n325.__)("%s has joined the post."),
              getCollaboratorDisplayName(
                collaborator.collaboratorInfo
              )
            ),
            {
              id: `${NOTIFICATION_TYPE.COLLAB_USER_ENTERED}-${collaborator.collaboratorInfo.id ?? collaborator.clientId}`,
              type: "snackbar",
              isDismissible: false
            }
          );
        },
        [createNotice, shouldShowJoinNotifications]
      )
    );
    useOnCollaboratorLeave(
      leavePostId,
      leavePostType,
      (0, import_element400.useCallback)(
        (collaborator) => {
          if (!shouldShowLeaveNotifications) {
            return;
          }
          void createNotice(
            "info",
            (0, import_i18n325.sprintf)(
              /* translators: %s: collaborator display name */
              (0, import_i18n325.__)("%s has left the post."),
              getCollaboratorDisplayName(
                collaborator.collaboratorInfo
              )
            ),
            {
              id: `${NOTIFICATION_TYPE.COLLAB_USER_EXITED}-${collaborator.collaboratorInfo.id ?? collaborator.clientId}`,
              type: "snackbar",
              isDismissible: false
            }
          );
        },
        [createNotice, shouldShowLeaveNotifications]
      )
    );
    useOnPostSave(
      postSavePostId,
      postSavePostType,
      (0, import_element400.useCallback)(
        (saveEvent, saver, prevEvent) => {
          if (!shouldShowPostSaveNotifications || !postStatus) {
            return;
          }
          const effectiveStatus = saveEvent.postStatus ?? postStatus ?? "draft";
          const prevStatus = prevEvent?.postStatus ?? postStatus;
          const isFirstPublish = !(prevStatus && PUBLISHED_STATUSES.includes(prevStatus)) && PUBLISHED_STATUSES.includes(effectiveStatus);
          const message2 = getPostUpdatedMessage(
            getCollaboratorDisplayName(saver.collaboratorInfo),
            effectiveStatus,
            isFirstPublish
          );
          void createNotice("info", message2, {
            id: `${NOTIFICATION_TYPE.COLLAB_POST_UPDATED}-${saver.collaboratorInfo.id ?? saver.clientId}`,
            type: "snackbar",
            isDismissible: false
          });
        },
        [createNotice, postStatus, shouldShowPostSaveNotifications]
      )
    );
  }

  // packages/editor/build-module/components/save-publish-panels/index.mjs
  var import_data227 = __toESM(require_data(), 1);
  var import_components245 = __toESM(require_components(), 1);
  var import_i18n326 = __toESM(require_i18n(), 1);
  var import_element401 = __toESM(require_element(), 1);
  var import_core_data129 = __toESM(require_core_data(), 1);
  var import_jsx_runtime628 = __toESM(require_jsx_runtime(), 1);
  var { Fill: Fill11, Slot: Slot13 } = (0, import_components245.createSlotFill)("ActionsPanel");
  var { EntitiesSavedStates: EntitiesSavedStates2 } = unlock(import_core_data129.privateApis);
  function SavePublishPanels({
    setEntitiesSavedStatesCallback,
    closeEntitiesSavedStates,
    isEntitiesSavedStatesOpen,
    forceIsDirtyPublishPanel
  }) {
    const { closePublishSidebar: closePublishSidebar2, togglePublishSidebar: togglePublishSidebar2 } = (0, import_data227.useDispatch)(store);
    const {
      publishSidebarOpened,
      isPublishable,
      isDirty,
      hasOtherEntitiesChanges
    } = (0, import_data227.useSelect)((select9) => {
      const {
        isPublishSidebarOpened: isPublishSidebarOpened2,
        isEditedPostPublishable: isEditedPostPublishable2,
        isCurrentPostPublished: isCurrentPostPublished2,
        isEditedPostDirty: isEditedPostDirty2,
        hasNonPostEntityChanges: hasNonPostEntityChanges2
      } = select9(store);
      const _hasOtherEntitiesChanges = hasNonPostEntityChanges2();
      return {
        publishSidebarOpened: isPublishSidebarOpened2(),
        isPublishable: !isCurrentPostPublished2() && isEditedPostPublishable2(),
        isDirty: _hasOtherEntitiesChanges || isEditedPostDirty2(),
        hasOtherEntitiesChanges: _hasOtherEntitiesChanges
      };
    }, []);
    const openEntitiesSavedStates = (0, import_element401.useCallback)(
      () => setEntitiesSavedStatesCallback(true),
      []
    );
    let unmountableContent;
    if (publishSidebarOpened) {
      unmountableContent = /* @__PURE__ */ (0, import_jsx_runtime628.jsx)(
        PostPublishPanel,
        {
          onClose: closePublishSidebar2,
          forceIsDirty: forceIsDirtyPublishPanel,
          PrePublishExtension: plugin_pre_publish_panel_default.Slot,
          PostPublishExtension: plugin_post_publish_panel_default.Slot
        }
      );
    } else if (isPublishable && !hasOtherEntitiesChanges) {
      unmountableContent = /* @__PURE__ */ (0, import_jsx_runtime628.jsx)("div", { className: "editor-layout__toggle-publish-panel", children: /* @__PURE__ */ (0, import_jsx_runtime628.jsx)(
        import_components245.Button,
        {
          __next40pxDefaultSize: true,
          variant: "secondary",
          onClick: togglePublishSidebar2,
          "aria-expanded": false,
          children: (0, import_i18n326.__)("Open publish panel")
        }
      ) });
    } else {
      unmountableContent = /* @__PURE__ */ (0, import_jsx_runtime628.jsx)("div", { className: "editor-layout__toggle-entities-saved-states-panel", children: /* @__PURE__ */ (0, import_jsx_runtime628.jsx)(
        import_components245.Button,
        {
          __next40pxDefaultSize: true,
          variant: "secondary",
          onClick: openEntitiesSavedStates,
          "aria-expanded": false,
          "aria-haspopup": "dialog",
          disabled: !isDirty,
          accessibleWhenDisabled: true,
          children: (0, import_i18n326.__)("Open save panel")
        }
      ) });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime628.jsxs)(import_jsx_runtime628.Fragment, { children: [
      isEntitiesSavedStatesOpen && /* @__PURE__ */ (0, import_jsx_runtime628.jsx)(
        EntitiesSavedStates2,
        {
          close: closeEntitiesSavedStates,
          renderDialog: true
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime628.jsx)(Slot13, { bubblesVirtually: true }),
      !isEntitiesSavedStatesOpen && unmountableContent
    ] });
  }

  // packages/editor/build-module/components/text-editor/index.mjs
  var import_components246 = __toESM(require_components(), 1);
  var import_data228 = __toESM(require_data(), 1);
  var import_i18n327 = __toESM(require_i18n(), 1);
  var import_keyboard_shortcuts10 = __toESM(require_keyboard_shortcuts(), 1);
  var import_element402 = __toESM(require_element(), 1);
  var import_jsx_runtime629 = __toESM(require_jsx_runtime(), 1);
  function TextEditor({ autoFocus = false }) {
    const { switchEditorMode: switchEditorMode2 } = (0, import_data228.useDispatch)(store);
    const { shortcut, isRichEditingEnabled } = (0, import_data228.useSelect)((select9) => {
      const { getEditorSettings: getEditorSettings2 } = select9(store);
      const { getShortcutRepresentation } = select9(import_keyboard_shortcuts10.store);
      return {
        shortcut: getShortcutRepresentation("core/editor/toggle-mode"),
        isRichEditingEnabled: getEditorSettings2().richEditingEnabled
      };
    }, []);
    const titleRef = (0, import_element402.useRef)();
    (0, import_element402.useEffect)(() => {
      if (autoFocus) {
        return;
      }
      titleRef?.current?.focus();
    }, [autoFocus]);
    return /* @__PURE__ */ (0, import_jsx_runtime629.jsxs)("div", { className: "editor-text-editor", children: [
      isRichEditingEnabled && /* @__PURE__ */ (0, import_jsx_runtime629.jsxs)("div", { className: "editor-text-editor__toolbar", children: [
        /* @__PURE__ */ (0, import_jsx_runtime629.jsx)("h2", { children: (0, import_i18n327.__)("Editing code") }),
        /* @__PURE__ */ (0, import_jsx_runtime629.jsx)(
          import_components246.Button,
          {
            __next40pxDefaultSize: true,
            variant: "tertiary",
            onClick: () => switchEditorMode2("visual"),
            shortcut,
            children: (0, import_i18n327.__)("Exit code editor")
          }
        )
      ] }),
      /* @__PURE__ */ (0, import_jsx_runtime629.jsxs)("div", { className: "editor-text-editor__body", children: [
        /* @__PURE__ */ (0, import_jsx_runtime629.jsx)(post_title_raw_default, { ref: titleRef }),
        /* @__PURE__ */ (0, import_jsx_runtime629.jsx)(PostTextEditor, {})
      ] })
    ] });
  }

  // packages/editor/build-module/components/editor-interface/index.mjs
  var import_jsx_runtime630 = __toESM(require_jsx_runtime(), 1);
  var interfaceLabels = {
    /* translators: accessibility text for the editor top bar landmark region. */
    header: (0, import_i18n328.__)("Editor top bar"),
    /* translators: accessibility text for the editor content landmark region. */
    body: (0, import_i18n328.__)("Editor content"),
    /* translators: accessibility text for the editor settings landmark region. */
    sidebar: (0, import_i18n328.__)("Editor settings"),
    /* translators: accessibility text for the editor publish landmark region. */
    actions: (0, import_i18n328.__)("Editor publish"),
    /* translators: accessibility text for the editor footer landmark region. */
    footer: (0, import_i18n328.__)("Editor footer")
  };
  function Notices() {
    const isValidTemplate2 = (0, import_data229.useSelect)((select9) => {
      return select9(import_block_editor88.store).isValidTemplate();
    }, []);
    return /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(import_theme.ThemeProvider, { cornerRadius: "none", children: /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(
      import_notices32.InlineNotices,
      {
        className: "editor-notices",
        pinnedNoticesClassName: "editor-notices__pinned",
        dismissibleNoticesClassName: "editor-notices__dismissible",
        children: !isValidTemplate2 && /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(TemplateValidationNotice, {})
      }
    ) });
  }
  function EditorInterface({
    className,
    children,
    forceIsDirty,
    contentRef,
    autoFocus,
    customSaveButton,
    customSavePanel,
    forceDisableBlockTools,
    iframeProps
  }) {
    const {
      mode,
      postId: postId2,
      postType: postType2,
      isInserterOpened: isInserterOpened2,
      isListViewOpened: isListViewOpened2,
      isDistractionFree,
      isPreviewMode,
      showBlockBreadcrumbs,
      postTypeLabel,
      stylesPath: stylesPath2,
      showStylebook: showStylebook2,
      isRevisionsMode: isRevisionsMode2,
      showDiff
    } = (0, import_data229.useSelect)((select9) => {
      const { get } = select9(import_preferences25.store);
      const {
        getEditorSettings: getEditorSettings2,
        getPostTypeLabel: getPostTypeLabel2,
        getCurrentPostType: getCurrentPostType2,
        getCurrentPostId: getCurrentPostId2
      } = select9(store);
      const {
        getStylesPath: getStylesPath2,
        getShowStylebook: getShowStylebook2,
        isRevisionsMode: _isRevisionsMode,
        isShowingRevisionDiff: isShowingRevisionDiff2
      } = unlock(select9(store));
      const editorSettings2 = getEditorSettings2();
      let _mode = select9(store).getEditorMode();
      if (!editorSettings2.richEditingEnabled && _mode === "visual") {
        _mode = "text";
      }
      if (!editorSettings2.codeEditingEnabled && _mode === "text") {
        _mode = "visual";
      }
      return {
        mode: _mode,
        postId: getCurrentPostId2(),
        postType: getCurrentPostType2(),
        isInserterOpened: select9(store).isInserterOpened(),
        isListViewOpened: select9(store).isListViewOpened(),
        isDistractionFree: get("core", "distractionFree"),
        isPreviewMode: editorSettings2.isPreviewMode,
        showBlockBreadcrumbs: get("core", "showBlockBreadcrumbs"),
        postTypeLabel: getPostTypeLabel2(),
        stylesPath: getStylesPath2(),
        showStylebook: getShowStylebook2(),
        isRevisionsMode: _isRevisionsMode(),
        showDiff: isShowingRevisionDiff2()
      };
    }, []);
    const { setShowRevisionDiff: setShowRevisionDiff2 } = unlock((0, import_data229.useDispatch)(store));
    const { setIsListViewOpened: setIsListViewOpened2 } = (0, import_data229.useDispatch)(store);
    const registry = (0, import_data229.useRegistry)();
    (0, import_element403.useLayoutEffect)(() => {
      const isMediumOrBigger = window.matchMedia("(min-width: 782px)").matches;
      const { get } = registry.select(import_preferences25.store);
      setIsListViewOpened2(
        !isPreviewMode && isMediumOrBigger && !!get("core", "showListViewByDefault") && !get("core", "distractionFree")
      );
    }, [isPreviewMode, registry, setIsListViewOpened2]);
    useCollaboratorNotifications(postId2, postType2);
    const isLargeViewport = (0, import_compose94.useViewportMatch)("medium");
    const secondarySidebarLabel = isListViewOpened2 ? (0, import_i18n328.__)("Document Overview") : (0, import_i18n328.__)("Block Library");
    const shouldShowStylesCanvas = showStylebook2 || stylesPath2?.startsWith("/revisions");
    const shouldShowBlockEditor = !shouldShowStylesCanvas;
    const [entitiesSavedStatesCallback, setEntitiesSavedStatesCallback] = (0, import_element403.useState)(false);
    const closeEntitiesSavedStates = (0, import_element403.useCallback)(
      (arg) => {
        if (typeof entitiesSavedStatesCallback === "function") {
          entitiesSavedStatesCallback(arg);
        }
        setEntitiesSavedStatesCallback(false);
      },
      [entitiesSavedStatesCallback]
    );
    if (isRevisionsMode2) {
      return /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(
        interface_skeleton_default,
        {
          className: clsx_default("editor-editor-interface", className),
          labels: interfaceLabels,
          header: /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(
            revisions_header_default,
            {
              showDiff,
              onToggleDiff: () => setShowRevisionDiff2(!showDiff)
            }
          ),
          content: mode === "text" ? /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(ConnectedRevisionsCodeDiff, {}) : /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(RevisionsCanvas, {}),
          sidebar: /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(complementary_area_default.Slot, { scope: "core" })
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(
      interface_skeleton_default,
      {
        isDistractionFree,
        className: clsx_default("editor-editor-interface", className, {
          "is-entity-save-view-open": !!entitiesSavedStatesCallback,
          "is-distraction-free": isDistractionFree && !isPreviewMode
        }),
        labels: {
          ...interfaceLabels,
          secondarySidebar: secondarySidebarLabel
        },
        header: !isPreviewMode && /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(
          header_default2,
          {
            forceIsDirty,
            setEntitiesSavedStatesCallback,
            customSaveButton,
            forceDisableBlockTools
          }
        ),
        editorNotices: /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(Notices, {}),
        secondarySidebar: !isPreviewMode && mode === "visual" && (isInserterOpened2 && /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(InserterSidebar, {}) || isListViewOpened2 && /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(ListViewSidebar, {})),
        sidebar: !isPreviewMode && !isDistractionFree && /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(complementary_area_default.Slot, { scope: "core" }),
        content: /* @__PURE__ */ (0, import_jsx_runtime630.jsxs)(import_jsx_runtime630.Fragment, { children: [
          !isDistractionFree && !isPreviewMode && /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(Notices, {}),
          shouldShowStylesCanvas && /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(StylesCanvas, {}),
          shouldShowBlockEditor && /* @__PURE__ */ (0, import_jsx_runtime630.jsxs)(import_jsx_runtime630.Fragment, { children: [
            !isPreviewMode && mode === "text" && /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(
              TextEditor,
              {
                autoFocus
              }
            ),
            !isPreviewMode && !isLargeViewport && mode === "visual" && /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(import_block_editor88.BlockToolbar, { hideDragHandle: true }),
            (isPreviewMode || mode === "visual") && /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(
              visual_editor_default,
              {
                contentRef,
                autoFocus,
                iframeProps
              }
            ),
            children,
            /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(
              CollaboratorsOverlay,
              {
                postId: postId2,
                postType: postType2
              }
            )
          ] })
        ] }),
        footer: !isPreviewMode && !isDistractionFree && isLargeViewport && showBlockBreadcrumbs && mode === "visual" && /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(
          import_block_editor88.BlockBreadcrumb,
          {
            rootLabelText: postTypeLabel ? (0, import_html_entities30.decodeEntities)(postTypeLabel) : void 0
          }
        ),
        actions: !isPreviewMode ? customSavePanel || /* @__PURE__ */ (0, import_jsx_runtime630.jsx)(
          SavePublishPanels,
          {
            closeEntitiesSavedStates,
            isEntitiesSavedStatesOpen: entitiesSavedStatesCallback,
            setEntitiesSavedStatesCallback,
            forceIsDirtyPublishPanel: forceIsDirty
          }
        ) : void 0
      }
    );
  }

  // packages/editor/build-module/components/sidebar/index.mjs
  var import_block_editor100 = __toESM(require_block_editor(), 1);
  var import_data261 = __toESM(require_data(), 1);
  var import_i18n354 = __toESM(require_i18n(), 1);
  var import_keyboard_shortcuts11 = __toESM(require_keyboard_shortcuts(), 1);

  // packages/editor/build-module/components/pattern-overrides-panel/index.mjs
  var import_data230 = __toESM(require_data(), 1);
  var import_patterns10 = __toESM(require_patterns(), 1);
  var import_jsx_runtime631 = __toESM(require_jsx_runtime(), 1);
  var { OverridesPanel } = unlock(import_patterns10.privateApis);
  function PatternOverridesPanel() {
    const supportsPatternOverridesPanel = (0, import_data230.useSelect)(
      (select9) => select9(store).getCurrentPostType() === "wp_block",
      []
    );
    if (!supportsPatternOverridesPanel) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime631.jsx)(OverridesPanel, {});
  }

  // packages/editor/build-module/components/sidebar/post-summary.mjs
  var import_data243 = __toESM(require_data(), 1);

  // packages/editor/build-module/components/post-card-panel/index.mjs
  var import_components250 = __toESM(require_components(), 1);
  var import_core_data134 = __toESM(require_core_data(), 1);
  var import_data235 = __toESM(require_data(), 1);
  var import_element408 = __toESM(require_element(), 1);
  var import_i18n332 = __toESM(require_i18n(), 1);
  var import_dom38 = __toESM(require_dom(), 1);

  // packages/editor/build-module/components/post-actions/index.mjs
  var import_data234 = __toESM(require_data(), 1);
  var import_element407 = __toESM(require_element(), 1);
  var import_i18n331 = __toESM(require_i18n(), 1);
  var import_components249 = __toESM(require_components(), 1);
  var import_core_data133 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/post-actions/actions.mjs
  var import_data233 = __toESM(require_data(), 1);
  var import_element406 = __toESM(require_element(), 1);
  var import_core_data132 = __toESM(require_core_data(), 1);

  // packages/editor/build-module/components/post-actions/set-as-homepage.mjs
  var import_i18n329 = __toESM(require_i18n(), 1);
  var import_element404 = __toESM(require_element(), 1);
  var import_components247 = __toESM(require_components(), 1);
  var import_data231 = __toESM(require_data(), 1);
  var import_core_data130 = __toESM(require_core_data(), 1);
  var import_notices33 = __toESM(require_notices(), 1);

  // packages/editor/build-module/utils/get-item-title.mjs
  var import_html_entities31 = __toESM(require_html_entities(), 1);
  function getItemTitle2(item) {
    if (typeof item.title === "string") {
      return (0, import_html_entities31.decodeEntities)(item.title);
    }
    if (item.title && "rendered" in item.title) {
      return (0, import_html_entities31.decodeEntities)(item.title.rendered);
    }
    if (item.title && "raw" in item.title) {
      return (0, import_html_entities31.decodeEntities)(item.title.raw);
    }
    return "";
  }

  // packages/editor/build-module/components/post-actions/set-as-homepage.mjs
  var import_jsx_runtime632 = __toESM(require_jsx_runtime(), 1);
  var SetAsHomepageModal = ({ items, closeModal: closeModal2 }) => {
    const [item] = items;
    const pageTitle = getItemTitle2(item);
    const { showOnFront, currentHomePage, isSaving } = (0, import_data231.useSelect)(
      (select9) => {
        const { getEntityRecord, isSavingEntityRecord } = select9(import_core_data130.store);
        const siteSettings = getEntityRecord("root", "site");
        const currentHomePageItem = getEntityRecord(
          "postType",
          "page",
          siteSettings?.page_on_front
        );
        return {
          showOnFront: siteSettings?.show_on_front,
          currentHomePage: currentHomePageItem,
          isSaving: isSavingEntityRecord("root", "site")
        };
      }
    );
    const { saveEntityRecord } = (0, import_data231.useDispatch)(import_core_data130.store);
    const { createSuccessNotice, createErrorNotice } = (0, import_data231.useDispatch)(import_notices33.store);
    async function onSetPageAsHomepage(event) {
      event.preventDefault();
      try {
        await saveEntityRecord("root", "site", {
          page_on_front: item.id,
          show_on_front: "page"
        });
        createSuccessNotice((0, import_i18n329.__)("Homepage updated."), {
          type: "snackbar"
        });
      } catch (error2) {
        const errorMessage = error2.message && error2.code !== "unknown_error" ? error2.message : (0, import_i18n329.__)("An error occurred while setting the homepage.");
        createErrorNotice(errorMessage, { type: "snackbar" });
      } finally {
        closeModal2?.();
      }
    }
    let modalWarning = "";
    if ("posts" === showOnFront) {
      modalWarning = (0, import_i18n329.__)(
        "This will replace the current homepage which is set to display latest posts."
      );
    } else if (currentHomePage) {
      modalWarning = (0, import_i18n329.sprintf)(
        // translators: %s: title of the current home page.
        (0, import_i18n329.__)('This will replace the current homepage: "%s"'),
        getItemTitle2(currentHomePage)
      );
    }
    const modalText = (0, import_i18n329.sprintf)(
      // translators: %1$s: title of the page to be set as the homepage, %2$s: homepage replacement warning message.
      (0, import_i18n329.__)('Set "%1$s" as the site homepage? %2$s'),
      pageTitle,
      modalWarning
    ).trim();
    const modalButtonLabel = (0, import_i18n329.__)("Set homepage");
    return /* @__PURE__ */ (0, import_jsx_runtime632.jsx)("form", { onSubmit: onSetPageAsHomepage, children: /* @__PURE__ */ (0, import_jsx_runtime632.jsxs)(import_components247.__experimentalVStack, { spacing: "5", children: [
      /* @__PURE__ */ (0, import_jsx_runtime632.jsx)(import_components247.__experimentalText, { children: modalText }),
      /* @__PURE__ */ (0, import_jsx_runtime632.jsxs)(import_components247.__experimentalHStack, { justify: "right", children: [
        /* @__PURE__ */ (0, import_jsx_runtime632.jsx)(
          import_components247.Button,
          {
            __next40pxDefaultSize: true,
            variant: "tertiary",
            onClick: () => {
              closeModal2?.();
            },
            disabled: isSaving,
            accessibleWhenDisabled: true,
            children: (0, import_i18n329.__)("Cancel")
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime632.jsx)(
          import_components247.Button,
          {
            __next40pxDefaultSize: true,
            variant: "primary",
            type: "submit",
            disabled: isSaving,
            accessibleWhenDisabled: true,
            children: modalButtonLabel
          }
        )
      ] })
    ] }) });
  };
  var useSetAsHomepageAction = () => {
    const { pageOnFront, pageForPosts } = (0, import_data231.useSelect)((select9) => {
      const { getEntityRecord, canUser } = select9(import_core_data130.store);
      const siteSettings = canUser("read", {
        kind: "root",
        name: "site"
      }) ? getEntityRecord("root", "site") : void 0;
      return {
        pageOnFront: siteSettings?.page_on_front,
        pageForPosts: siteSettings?.page_for_posts
      };
    });
    return (0, import_element404.useMemo)(
      () => ({
        id: "set-as-homepage",
        label: (0, import_i18n329.__)("Set as homepage\u2026"),
        modalHeader: (0, import_i18n329.__)("Set as homepage"),
        isEligible(post2) {
          if (post2.status !== "publish") {
            return false;
          }
          if (post2.type !== "page") {
            return false;
          }
          if (pageOnFront === post2.id) {
            return false;
          }
          if (pageForPosts === post2.id) {
            return false;
          }
          return true;
        },
        modalFocusOnMount: "firstContentElement",
        RenderModal: SetAsHomepageModal
      }),
      [pageForPosts, pageOnFront]
    );
  };

  // packages/editor/build-module/components/post-actions/set-as-posts-page.mjs
  var import_i18n330 = __toESM(require_i18n(), 1);
  var import_element405 = __toESM(require_element(), 1);
  var import_components248 = __toESM(require_components(), 1);
  var import_data232 = __toESM(require_data(), 1);
  var import_core_data131 = __toESM(require_core_data(), 1);
  var import_notices34 = __toESM(require_notices(), 1);
  var import_jsx_runtime633 = __toESM(require_jsx_runtime(), 1);
  var SetAsPostsPageModal = ({ items, closeModal: closeModal2 }) => {
    const [item] = items;
    const pageTitle = getItemTitle2(item);
    const { currentPostsPage, isPageForPostsSet, isSaving } = (0, import_data232.useSelect)(
      (select9) => {
        const { getEntityRecord, isSavingEntityRecord } = select9(import_core_data131.store);
        const siteSettings = getEntityRecord("root", "site");
        const currentPostsPageItem = getEntityRecord(
          "postType",
          "page",
          siteSettings?.page_for_posts
        );
        return {
          currentPostsPage: currentPostsPageItem,
          isPageForPostsSet: siteSettings?.page_for_posts !== 0,
          isSaving: isSavingEntityRecord("root", "site")
        };
      }
    );
    const { saveEntityRecord } = (0, import_data232.useDispatch)(import_core_data131.store);
    const { createSuccessNotice, createErrorNotice } = (0, import_data232.useDispatch)(import_notices34.store);
    async function onSetPageAsPostsPage(event) {
      event.preventDefault();
      try {
        await saveEntityRecord("root", "site", {
          page_for_posts: item.id,
          show_on_front: "page"
        });
        createSuccessNotice((0, import_i18n330.__)("Posts page updated."), {
          type: "snackbar"
        });
      } catch (error2) {
        const errorMessage = error2.message && error2.code !== "unknown_error" ? error2.message : (0, import_i18n330.__)("An error occurred while setting the posts page.");
        createErrorNotice(errorMessage, { type: "snackbar" });
      } finally {
        closeModal2?.();
      }
    }
    const modalWarning = isPageForPostsSet && currentPostsPage ? (0, import_i18n330.sprintf)(
      // translators: %s: title of the current posts page.
      (0, import_i18n330.__)('This will replace the current posts page: "%s"'),
      getItemTitle2(currentPostsPage)
    ) : (0, import_i18n330.__)("This page will show the latest posts.");
    const modalText = (0, import_i18n330.sprintf)(
      // translators: %1$s: title of the page to be set as the posts page, %2$s: posts page replacement warning message.
      (0, import_i18n330.__)('Set "%1$s" as the posts page? %2$s'),
      pageTitle,
      modalWarning
    );
    const modalButtonLabel = (0, import_i18n330.__)("Set posts page");
    return /* @__PURE__ */ (0, import_jsx_runtime633.jsx)("form", { onSubmit: onSetPageAsPostsPage, children: /* @__PURE__ */ (0, import_jsx_runtime633.jsxs)(import_components248.__experimentalVStack, { spacing: "5", children: [
      /* @__PURE__ */ (0, import_jsx_runtime633.jsx)(import_components248.__experimentalText, { children: modalText }),
      /* @__PURE__ */ (0, import_jsx_runtime633.jsxs)(import_components248.__experimentalHStack, { justify: "right", children: [
        /* @__PURE__ */ (0, import_jsx_runtime633.jsx)(
          import_components248.Button,
          {
            __next40pxDefaultSize: true,
            variant: "tertiary",
            onClick: () => {
              closeModal2?.();
            },
            disabled: isSaving,
            accessibleWhenDisabled: true,
            children: (0, import_i18n330.__)("Cancel")
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime633.jsx)(
          import_components248.Button,
          {
            __next40pxDefaultSize: true,
            variant: "primary",
            type: "submit",
            disabled: isSaving,
            accessibleWhenDisabled: true,
            children: modalButtonLabel
          }
        )
      ] })
    ] }) });
  };
  var useSetAsPostsPageAction = () => {
    const { pageOnFront, pageForPosts } = (0, import_data232.useSelect)((select9) => {
      const { getEntityRecord, canUser } = select9(import_core_data131.store);
      const siteSettings = canUser("read", {
        kind: "root",
        name: "site"
      }) ? getEntityRecord("root", "site") : void 0;
      return {
        pageOnFront: siteSettings?.page_on_front,
        pageForPosts: siteSettings?.page_for_posts
      };
    });
    return (0, import_element405.useMemo)(
      () => ({
        id: "set-as-posts-page",
        label: (0, import_i18n330.__)("Set as posts page\u2026"),
        modalHeader: (0, import_i18n330.__)("Set as posts page"),
        isEligible(post2) {
          if (post2.status !== "publish") {
            return false;
          }
          if (post2.type !== "page") {
            return false;
          }
          if (pageOnFront === post2.id) {
            return false;
          }
          if (pageForPosts === post2.id) {
            return false;
          }
          return true;
        },
        modalFocusOnMount: "firstContentElement",
        RenderModal: SetAsPostsPageModal
      }),
      [pageForPosts, pageOnFront]
    );
  };

  // packages/editor/build-module/components/post-actions/actions.mjs
  var import_jsx_runtime634 = __toESM(require_jsx_runtime(), 1);
  function usePostActions({ postType: postType2, onActionPerformed, context }) {
    const { defaultActions } = (0, import_data233.useSelect)(
      (select9) => {
        const { getEntityActions: getEntityActions3 } = unlock(select9(store));
        return {
          defaultActions: getEntityActions3("postType", postType2)
        };
      },
      [postType2]
    );
    const shouldShowHomepageActions = (0, import_data233.useSelect)(
      (select9) => {
        if (postType2 !== "page") {
          return false;
        }
        const { getDefaultTemplateId, getEntityRecord, canUser } = select9(import_core_data132.store);
        const canUpdateSettings = canUser("update", {
          kind: "root",
          name: "site"
        });
        if (!canUpdateSettings) {
          return false;
        }
        const frontPageTemplateId = getDefaultTemplateId({
          slug: "front-page"
        });
        if (!frontPageTemplateId) {
          return true;
        }
        const frontPageTemplate = getEntityRecord(
          "postType",
          "wp_template",
          frontPageTemplateId
        );
        if (!frontPageTemplate) {
          return true;
        }
        return frontPageTemplate.slug !== "front-page";
      },
      [postType2]
    );
    const setAsHomepageAction = useSetAsHomepageAction();
    const setAsPostsPageAction = useSetAsPostsPageAction();
    const { registerPostTypeSchema: registerPostTypeSchema2 } = unlock((0, import_data233.useDispatch)(store));
    (0, import_element406.useEffect)(() => {
      registerPostTypeSchema2(postType2);
    }, [registerPostTypeSchema2, postType2]);
    return (0, import_element406.useMemo)(() => {
      let actions2 = [...defaultActions];
      if (shouldShowHomepageActions) {
        actions2.push(setAsHomepageAction, setAsPostsPageAction);
      }
      actions2 = actions2.sort(
        (a2, b2) => b2.id === "move-to-trash" ? -1 : 0
      );
      actions2 = actions2.filter((action) => {
        if (!action.context) {
          return true;
        }
        return action.context === context;
      });
      if (onActionPerformed) {
        for (let i2 = 0; i2 < actions2.length; ++i2) {
          if (actions2[i2].callback) {
            const existingCallback = actions2[i2].callback;
            actions2[i2] = {
              ...actions2[i2],
              callback: (items, argsObject) => {
                existingCallback(items, {
                  ...argsObject,
                  onActionPerformed: (_items) => {
                    if (argsObject?.onActionPerformed) {
                      argsObject.onActionPerformed(_items);
                    }
                    onActionPerformed(
                      actions2[i2].id,
                      _items
                    );
                  }
                });
              }
            };
          }
          if (actions2[i2].RenderModal) {
            const ExistingRenderModal = actions2[i2].RenderModal;
            actions2[i2] = {
              ...actions2[i2],
              RenderModal: (props) => {
                return /* @__PURE__ */ (0, import_jsx_runtime634.jsx)(
                  ExistingRenderModal,
                  {
                    ...props,
                    onActionPerformed: (_items) => {
                      if (props.onActionPerformed) {
                        props.onActionPerformed(_items);
                      }
                      onActionPerformed(
                        actions2[i2].id,
                        _items
                      );
                    }
                  }
                );
              }
            };
          }
        }
      }
      return actions2;
    }, [
      context,
      defaultActions,
      onActionPerformed,
      setAsHomepageAction,
      setAsPostsPageAction,
      shouldShowHomepageActions
    ]);
  }

  // packages/editor/build-module/components/post-actions/index.mjs
  var import_jsx_runtime635 = __toESM(require_jsx_runtime(), 1);
  function PostActions({ postType: postType2, postId: postId2, onActionPerformed }) {
    const [activeModalAction, setActiveModalAction] = (0, import_element407.useState)(null);
    const { item, permissions } = (0, import_data234.useSelect)(
      (select9) => {
        const { getEditedEntityRecord, getEntityRecordPermissions } = unlock(select9(import_core_data133.store));
        return {
          item: getEditedEntityRecord("postType", postType2, postId2),
          permissions: getEntityRecordPermissions(
            "postType",
            postType2,
            postId2
          )
        };
      },
      [postId2, postType2]
    );
    const itemWithPermissions = (0, import_element407.useMemo)(() => {
      return {
        ...item,
        permissions
      };
    }, [item, permissions]);
    const allActions = usePostActions({ postType: postType2, onActionPerformed });
    const actions2 = (0, import_element407.useMemo)(() => {
      return allActions.filter((action) => {
        return !action.isEligible || action.isEligible(itemWithPermissions);
      });
    }, [allActions, itemWithPermissions]);
    return /* @__PURE__ */ (0, import_jsx_runtime635.jsxs)(import_jsx_runtime635.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime635.jsxs)(menu_exports.Root, { disabled: !actions2.length, children: [
        /* @__PURE__ */ (0, import_jsx_runtime635.jsx)(
          menu_exports.Trigger,
          {
            render: /* @__PURE__ */ (0, import_jsx_runtime635.jsx)(
              import_components249.Button,
              {
                size: "small",
                icon: more_vertical_default,
                label: (0, import_i18n331.__)("Actions"),
                disabled: !actions2.length,
                accessibleWhenDisabled: true,
                className: "editor-all-actions-button"
              }
            )
          }
        ),
        /* @__PURE__ */ (0, import_jsx_runtime635.jsx)(
          menu_exports.Popup,
          {
            positioner: /* @__PURE__ */ (0, import_jsx_runtime635.jsx)(menu_exports.Positioner, { side: "bottom", align: "end" }),
            children: /* @__PURE__ */ (0, import_jsx_runtime635.jsx)(
              ActionsDropdownMenuGroup,
              {
                actions: actions2,
                items: [itemWithPermissions],
                setActiveModalAction
              }
            )
          }
        )
      ] }),
      !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime635.jsx)(
        ActionModal2,
        {
          action: activeModalAction,
          items: [itemWithPermissions],
          closeModal: () => setActiveModalAction(null)
        }
      )
    ] });
  }
  function DropdownMenuItemTrigger({ action, onClick, items }) {
    const label = typeof action.label === "string" ? action.label : action.label(items);
    return /* @__PURE__ */ (0, import_jsx_runtime635.jsx)(menu_exports.Item, { onClick, children: /* @__PURE__ */ (0, import_jsx_runtime635.jsx)(menu_exports.ItemLabel, { children: label }) });
  }
  function ActionModal2({ action, items, closeModal: closeModal2 }) {
    const label = typeof action.label === "string" ? action.label : action.label(items);
    return /* @__PURE__ */ (0, import_jsx_runtime635.jsx)(
      import_components249.Modal,
      {
        title: action.modalHeader || label,
        __experimentalHideHeader: !!action.hideModalHeader,
        onRequestClose: closeModal2 ?? (() => {
        }),
        focusOnMount: "firstContentElement",
        size: "medium",
        overlayClassName: `editor-action-modal editor-action-modal__${kebabCase2(
          action.id
        )}`,
        children: /* @__PURE__ */ (0, import_jsx_runtime635.jsx)(action.RenderModal, { items, closeModal: closeModal2 })
      }
    );
  }
  function ActionsDropdownMenuGroup({ actions: actions2, items, setActiveModalAction }) {
    const registry = (0, import_data234.useRegistry)();
    return /* @__PURE__ */ (0, import_jsx_runtime635.jsx)(menu_exports.Group, { children: actions2.map((action) => {
      return /* @__PURE__ */ (0, import_jsx_runtime635.jsx)(
        DropdownMenuItemTrigger,
        {
          action,
          onClick: () => {
            if ("RenderModal" in action) {
              setActiveModalAction(action);
              return;
            }
            action.callback(items, { registry });
          },
          items
        },
        action.id
      );
    }) });
  }

  // packages/editor/build-module/components/post-card-panel/index.mjs
  var import_jsx_runtime636 = __toESM(require_jsx_runtime(), 1);
  var { getTemplateInfo: getTemplateInfo4 } = unlock(import_core_data134.privateApis);
  function PostCardPanel({
    postType: postType2,
    postId: postId2,
    hideActions = false,
    onActionPerformed,
    onClose
  }) {
    const postIds = (0, import_element408.useMemo)(
      () => Array.isArray(postId2) ? postId2 : [postId2],
      [postId2]
    );
    const { postTitle, icon, labels } = (0, import_data235.useSelect)(
      (select9) => {
        const { getEditedEntityRecord, getCurrentTheme, getPostType } = select9(import_core_data134.store);
        const {
          getPostIcon: getPostIcon2,
          getCurrentPostType: getCurrentPostType2,
          isRevisionsMode: isRevisionsMode2,
          getCurrentRevision: getCurrentRevision2
        } = unlock(select9(store));
        let _title = "";
        if (isRevisionsMode2()) {
          const parentPostType = getCurrentPostType2();
          const _record2 = getCurrentRevision2();
          _title = _record2?.title?.rendered || _record2?.title?.raw || "";
          return {
            postTitle: _title,
            icon: getPostIcon2(parentPostType, {
              area: _record2?.area
            }),
            labels: getPostType(parentPostType)?.labels
          };
        }
        const _record = getEditedEntityRecord(
          "postType",
          postType2,
          postIds[0]
        );
        if (postIds.length === 1) {
          const { default_template_types: templateTypes = [] } = getCurrentTheme() ?? {};
          const _templateInfo = [
            TEMPLATE_POST_TYPE,
            TEMPLATE_PART_POST_TYPE
          ].includes(postType2) ? getTemplateInfo4({
            template: _record,
            templateTypes
          }) : {};
          _title = _templateInfo?.title || _record?.title;
        }
        return {
          postTitle: _title,
          icon: getPostIcon2(postType2, {
            area: _record?.area
          }),
          labels: getPostType(postType2)?.labels
        };
      },
      [postIds, postType2]
    );
    const pageTypeBadge = usePageTypeBadge(postId2);
    let title = (0, import_i18n332.__)("No title");
    if (labels?.name && postIds.length > 1) {
      title = (0, import_i18n332.sprintf)(
        // translators: %1$d number of selected items %2$s: Name of the plural post type e.g: "Posts".
        (0, import_i18n332.__)("%1$d %2$s"),
        postIds.length,
        labels?.name
      );
    } else if (postTitle) {
      title = (0, import_dom38.__unstableStripHTML)(postTitle);
    }
    return /* @__PURE__ */ (0, import_jsx_runtime636.jsxs)(import_components250.__experimentalVStack, { spacing: 1, className: "editor-post-card-panel", children: [
      /* @__PURE__ */ (0, import_jsx_runtime636.jsxs)(
        import_components250.__experimentalHStack,
        {
          spacing: 2,
          className: "editor-post-card-panel__header",
          alignment: "flex-start",
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime636.jsx)(
              import_components250.Icon,
              {
                className: "editor-post-card-panel__icon",
                icon
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime636.jsxs)(
              import_components250.__experimentalText,
              {
                numberOfLines: 2,
                truncate: true,
                className: "editor-post-card-panel__title",
                as: "h2",
                children: [
                  /* @__PURE__ */ (0, import_jsx_runtime636.jsx)("span", { className: "editor-post-card-panel__title-name", children: title }),
                  pageTypeBadge && postIds.length === 1 && /* @__PURE__ */ (0, import_jsx_runtime636.jsx)(Badge, { children: pageTypeBadge })
                ]
              }
            ),
            !hideActions && postIds.length === 1 && /* @__PURE__ */ (0, import_jsx_runtime636.jsx)(
              PostActions,
              {
                postType: postType2,
                postId: postIds[0],
                onActionPerformed
              }
            ),
            onClose && /* @__PURE__ */ (0, import_jsx_runtime636.jsx)(
              import_components250.Button,
              {
                size: "small",
                icon: close_default,
                label: (0, import_i18n332.__)("Close"),
                onClick: onClose
              }
            )
          ]
        }
      ),
      postIds.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime636.jsx)(import_components250.__experimentalText, { className: "editor-post-card-panel__description", children: (0, import_i18n332.sprintf)(
        // translators: %s: Name of the plural post type e.g: "Posts".
        (0, import_i18n332.__)("Changes will be applied to all selected %s."),
        labels?.name?.toLowerCase()
      ) })
    ] });
  }

  // packages/editor/build-module/components/post-content-information/index.mjs
  var import_components251 = __toESM(require_components(), 1);
  var import_data236 = __toESM(require_data(), 1);
  var import_i18n333 = __toESM(require_i18n(), 1);
  var import_wordcount5 = __toESM(require_wordcount(), 1);
  var import_element409 = __toESM(require_element(), 1);
  var import_core_data135 = __toESM(require_core_data(), 1);
  var import_jsx_runtime637 = __toESM(require_jsx_runtime(), 1);
  var AVERAGE_READING_RATE3 = 189;
  function PostContentInformation() {
    const postContent = (0, import_data236.useSelect)((select9) => {
      const { getEditedPostAttribute: getEditedPostAttribute2, getCurrentPostType: getCurrentPostType2, getCurrentPostId: getCurrentPostId2 } = select9(store);
      const { canUser } = select9(import_core_data135.store);
      const { getEntityRecord } = select9(import_core_data135.store);
      const siteSettings = canUser("read", {
        kind: "root",
        name: "site"
      }) ? getEntityRecord("root", "site") : void 0;
      const postType2 = getCurrentPostType2();
      const _id = getCurrentPostId2();
      const isPostsPage = +_id === siteSettings?.page_for_posts;
      const showPostContentInfo = !isPostsPage && ![TEMPLATE_POST_TYPE, TEMPLATE_PART_POST_TYPE].includes(
        postType2
      );
      return showPostContentInfo && getEditedPostAttribute2("content");
    }, []);
    return /* @__PURE__ */ (0, import_jsx_runtime637.jsx)(PostContentInformationUI, { postContent });
  }
  function PostContentInformationUI({ postContent }) {
    const wordCountType = (0, import_i18n333._x)("words", "Word count type. Do not translate!");
    const wordsCounted = (0, import_element409.useMemo)(
      () => postContent ? (0, import_wordcount5.count)(postContent, wordCountType) : 0,
      [postContent, wordCountType]
    );
    if (!wordsCounted) {
      return null;
    }
    const readingTime = Math.round(wordsCounted / AVERAGE_READING_RATE3);
    const wordsCountText = (0, import_i18n333.sprintf)(
      // translators: %s: the number of words in the post.
      (0, import_i18n333._n)("%s word", "%s words", wordsCounted),
      wordsCounted.toLocaleString()
    );
    const minutesText = readingTime <= 1 ? (0, import_i18n333.__)("1 minute") : (0, import_i18n333.sprintf)(
      /* translators: %s: the number of minutes to read the post. */
      (0, import_i18n333._n)("%s minute", "%s minutes", readingTime),
      readingTime.toLocaleString()
    );
    return /* @__PURE__ */ (0, import_jsx_runtime637.jsx)("div", { className: "editor-post-content-information", children: /* @__PURE__ */ (0, import_jsx_runtime637.jsx)(import_components251.__experimentalText, { children: (0, import_i18n333.sprintf)(
      /* translators: 1: How many words a post has. 2: the number of minutes to read the post (e.g. 130 words, 2 minutes read time.) */
      (0, import_i18n333.__)("%1$s, %2$s read time."),
      wordsCountText,
      minutesText
    ) }) });
  }

  // packages/editor/build-module/components/post-format/panel.mjs
  var import_components252 = __toESM(require_components(), 1);
  var import_i18n334 = __toESM(require_i18n(), 1);
  var import_data237 = __toESM(require_data(), 1);
  var import_element410 = __toESM(require_element(), 1);
  var import_block_editor89 = __toESM(require_block_editor(), 1);
  var import_jsx_runtime638 = __toESM(require_jsx_runtime(), 1);
  function PostFormat2() {
    const { postFormat } = (0, import_data237.useSelect)((select9) => {
      const { getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
      const _postFormat = getEditedPostAttribute2("format");
      return {
        postFormat: _postFormat ?? "standard"
      };
    }, []);
    const activeFormat = POST_FORMATS2.find(
      (format7) => format7.id === postFormat
    );
    const [popoverAnchor, setPopoverAnchor] = (0, import_element410.useState)(null);
    const popoverProps = (0, import_element410.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime638.jsx)(PostFormatCheck, { children: /* @__PURE__ */ (0, import_jsx_runtime638.jsx)(post_panel_row_default, { label: (0, import_i18n334.__)("Format"), ref: setPopoverAnchor, children: /* @__PURE__ */ (0, import_jsx_runtime638.jsx)(
      import_components252.Dropdown,
      {
        popoverProps,
        contentClassName: "editor-post-format__dialog",
        focusOnMount: true,
        renderToggle: ({ isOpen: isOpen2, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime638.jsx)(
          import_components252.Button,
          {
            size: "compact",
            variant: "tertiary",
            "aria-expanded": isOpen2,
            "aria-label": (0, import_i18n334.sprintf)(
              // translators: %s: Current post format.
              (0, import_i18n334.__)("Change format: %s"),
              activeFormat?.caption
            ),
            onClick: onToggle,
            children: activeFormat?.caption
          }
        ),
        renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime638.jsxs)("div", { className: "editor-post-format__dialog-content", children: [
          /* @__PURE__ */ (0, import_jsx_runtime638.jsx)(
            import_block_editor89.__experimentalInspectorPopoverHeader,
            {
              title: (0, import_i18n334.__)("Format"),
              onClose
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime638.jsx)(PostFormat, {})
        ] })
      }
    ) }) });
  }
  var panel_default4 = PostFormat2;

  // packages/editor/build-module/components/post-last-edited-panel/index.mjs
  var import_components253 = __toESM(require_components(), 1);
  var import_data238 = __toESM(require_data(), 1);
  var import_i18n335 = __toESM(require_i18n(), 1);
  var import_date23 = __toESM(require_date(), 1);
  var import_jsx_runtime639 = __toESM(require_jsx_runtime(), 1);
  function PostLastEditedPanel() {
    const modified = (0, import_data238.useSelect)(
      (select9) => select9(store).getEditedPostAttribute("modified"),
      []
    );
    if (!modified) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime639.jsx)("div", { className: "editor-post-last-edited-panel", children: /* @__PURE__ */ (0, import_jsx_runtime639.jsx)(import_components253.__experimentalText, { children: (0, import_i18n335.sprintf)(
      // translators: %s: Human-readable time difference, e.g. "2 days ago".
      (0, import_i18n335.__)("Last edited %s."),
      (0, import_date23.humanTimeDiff)(modified)
    ) }) });
  }

  // packages/editor/build-module/components/post-panel-section/index.mjs
  var import_components254 = __toESM(require_components(), 1);
  var import_jsx_runtime640 = __toESM(require_jsx_runtime(), 1);
  function PostPanelSection({ className, children }) {
    return /* @__PURE__ */ (0, import_jsx_runtime640.jsx)(import_components254.__experimentalVStack, { className: clsx_default("editor-post-panel__section", className), children });
  }
  var post_panel_section_default = PostPanelSection;

  // packages/editor/build-module/components/reading-settings-link/index.mjs
  var import_i18n336 = __toESM(require_i18n(), 1);
  var import_data239 = __toESM(require_data(), 1);
  var import_core_data136 = __toESM(require_core_data(), 1);
  var import_jsx_runtime641 = __toESM(require_jsx_runtime(), 1);
  function ReadingSettingsLink() {
    const isVisible2 = (0, import_data239.useSelect)((select9) => {
      const { getCurrentPostType: getCurrentPostType2, getEditedPostAttribute: getEditedPostAttribute2 } = select9(store);
      const { canUser } = select9(import_core_data136.store);
      return getCurrentPostType2() === TEMPLATE_POST_TYPE && getEditedPostAttribute2("slug") === "front-page" && !!canUser("update", { kind: "root", name: "site" });
    }, []);
    if (!isVisible2) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime641.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime641.jsx)(Link, { href: "options-reading.php", children: (0, import_i18n336.__)("Reading settings") }) });
  }

  // packages/editor/build-module/components/blog-title/index.mjs
  var import_i18n337 = __toESM(require_i18n(), 1);
  var import_compose95 = __toESM(require_compose(), 1);
  var import_data240 = __toESM(require_data(), 1);
  var import_core_data137 = __toESM(require_core_data(), 1);
  var import_html_entities32 = __toESM(require_html_entities(), 1);
  var import_components255 = __toESM(require_components(), 1);
  var import_element411 = __toESM(require_element(), 1);
  var import_block_editor90 = __toESM(require_block_editor(), 1);
  var import_jsx_runtime642 = __toESM(require_jsx_runtime(), 1);
  var EMPTY_OBJECT4 = {};
  function BlogTitle() {
    const { editEntityRecord } = (0, import_data240.useDispatch)(import_core_data137.store);
    const { postsPageTitle, postsPageId, isTemplate: isTemplate2, postSlug } = (0, import_data240.useSelect)(
      (select9) => {
        const { getEntityRecord, getEditedEntityRecord, canUser } = select9(import_core_data137.store);
        const siteSettings = canUser("read", {
          kind: "root",
          name: "site"
        }) ? getEntityRecord("root", "site") : void 0;
        const _postsPageRecord = siteSettings?.page_for_posts ? getEditedEntityRecord(
          "postType",
          "page",
          siteSettings?.page_for_posts
        ) : EMPTY_OBJECT4;
        const { getEditedPostAttribute: getEditedPostAttribute2, getCurrentPostType: getCurrentPostType2 } = select9(store);
        return {
          postsPageId: _postsPageRecord?.id,
          postsPageTitle: _postsPageRecord?.title,
          isTemplate: getCurrentPostType2() === TEMPLATE_POST_TYPE,
          postSlug: getEditedPostAttribute2("slug")
        };
      },
      []
    );
    const [popoverAnchor, setPopoverAnchor] = (0, import_element411.useState)(null);
    const popoverProps = (0, import_element411.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor]
    );
    if (!isTemplate2 || !["home", "index"].includes(postSlug) || !postsPageId) {
      return null;
    }
    const setPostsPageTitle = (newValue) => {
      editEntityRecord("postType", "page", postsPageId, {
        title: newValue
      });
    };
    const decodedTitle = (0, import_html_entities32.decodeEntities)(postsPageTitle);
    return /* @__PURE__ */ (0, import_jsx_runtime642.jsx)(post_panel_row_default, { label: (0, import_i18n337.__)("Blog title"), ref: setPopoverAnchor, children: /* @__PURE__ */ (0, import_jsx_runtime642.jsx)(
      import_components255.Dropdown,
      {
        popoverProps,
        contentClassName: "editor-blog-title-dropdown__content",
        focusOnMount: true,
        renderToggle: ({ isOpen: isOpen2, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime642.jsx)(
          import_components255.Button,
          {
            size: "compact",
            variant: "tertiary",
            "aria-expanded": isOpen2,
            "aria-label": (0, import_i18n337.sprintf)(
              // translators: %s: Current post link.
              (0, import_i18n337.__)("Change blog title: %s"),
              decodedTitle
            ),
            onClick: onToggle,
            children: decodedTitle
          }
        ),
        renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime642.jsxs)(import_jsx_runtime642.Fragment, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime642.jsx)(
            import_block_editor90.__experimentalInspectorPopoverHeader,
            {
              title: (0, import_i18n337.__)("Blog title"),
              onClose
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime642.jsx)(
            import_components255.__experimentalInputControl,
            {
              placeholder: (0, import_i18n337.__)("No title"),
              value: postsPageTitle,
              onChange: (0, import_compose95.debounce)(setPostsPageTitle, 300),
              label: (0, import_i18n337.__)("Blog title"),
              help: (0, import_i18n337.__)(
                "Set the Posts Page title. Appears in search results, and when the page is shared on social media."
              ),
              hideLabelFromVision: true
            }
          )
        ] })
      }
    ) });
  }

  // packages/editor/build-module/components/posts-per-page/index.mjs
  var import_i18n338 = __toESM(require_i18n(), 1);
  var import_data241 = __toESM(require_data(), 1);
  var import_core_data138 = __toESM(require_core_data(), 1);
  var import_components256 = __toESM(require_components(), 1);
  var import_element412 = __toESM(require_element(), 1);
  var import_block_editor91 = __toESM(require_block_editor(), 1);
  var import_jsx_runtime643 = __toESM(require_jsx_runtime(), 1);
  function PostsPerPage() {
    const { editEntityRecord } = (0, import_data241.useDispatch)(import_core_data138.store);
    const { postsPerPage, isTemplate: isTemplate2, postSlug } = (0, import_data241.useSelect)((select9) => {
      const { getEditedPostAttribute: getEditedPostAttribute2, getCurrentPostType: getCurrentPostType2 } = select9(store);
      const { getEditedEntityRecord, canUser } = select9(import_core_data138.store);
      const siteSettings = canUser("read", {
        kind: "root",
        name: "site"
      }) ? getEditedEntityRecord("root", "site") : void 0;
      return {
        isTemplate: getCurrentPostType2() === TEMPLATE_POST_TYPE,
        postSlug: getEditedPostAttribute2("slug"),
        postsPerPage: siteSettings?.posts_per_page || 1
      };
    }, []);
    const [popoverAnchor, setPopoverAnchor] = (0, import_element412.useState)(null);
    const popoverProps = (0, import_element412.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor]
    );
    if (!isTemplate2 || !["home", "index"].includes(postSlug)) {
      return null;
    }
    const setPostsPerPage = (newValue) => {
      editEntityRecord("root", "site", void 0, {
        posts_per_page: newValue
      });
    };
    return /* @__PURE__ */ (0, import_jsx_runtime643.jsx)(post_panel_row_default, { label: (0, import_i18n338.__)("Posts per page"), ref: setPopoverAnchor, children: /* @__PURE__ */ (0, import_jsx_runtime643.jsx)(
      import_components256.Dropdown,
      {
        popoverProps,
        contentClassName: "editor-posts-per-page-dropdown__content",
        focusOnMount: true,
        renderToggle: ({ isOpen: isOpen2, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime643.jsx)(
          import_components256.Button,
          {
            size: "compact",
            variant: "tertiary",
            "aria-expanded": isOpen2,
            "aria-label": (0, import_i18n338.__)("Change posts per page"),
            onClick: onToggle,
            children: postsPerPage
          }
        ),
        renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime643.jsxs)(import_jsx_runtime643.Fragment, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime643.jsx)(
            import_block_editor91.__experimentalInspectorPopoverHeader,
            {
              title: (0, import_i18n338.__)("Posts per page"),
              onClose
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime643.jsx)(
            import_components256.__experimentalNumberControl,
            {
              placeholder: 0,
              value: postsPerPage,
              spinControls: "custom",
              step: "1",
              min: "1",
              onChange: setPostsPerPage,
              label: (0, import_i18n338.__)("Posts per page"),
              help: (0, import_i18n338.__)(
                "Set the default number of posts to display on blog pages, including categories and tags. Some templates may override this setting."
              ),
              hideLabelFromVision: true
            }
          )
        ] })
      }
    ) });
  }

  // packages/editor/build-module/components/site-discussion/index.mjs
  var import_i18n339 = __toESM(require_i18n(), 1);
  var import_data242 = __toESM(require_data(), 1);
  var import_core_data139 = __toESM(require_core_data(), 1);
  var import_components257 = __toESM(require_components(), 1);
  var import_element413 = __toESM(require_element(), 1);
  var import_block_editor92 = __toESM(require_block_editor(), 1);
  var import_jsx_runtime644 = __toESM(require_jsx_runtime(), 1);
  var COMMENT_OPTIONS2 = [
    {
      label: (0, import_i18n339._x)("Open", 'Adjective: e.g. "Comments are open"'),
      value: "open",
      description: (0, import_i18n339.__)("Visitors can add new comments and replies.")
    },
    {
      label: (0, import_i18n339.__)("Closed"),
      value: "",
      description: [
        (0, import_i18n339.__)("Visitors cannot add new comments or replies."),
        (0, import_i18n339.__)("Existing comments remain visible.")
      ].join(" ")
    }
  ];
  function SiteDiscussion() {
    const { editEntityRecord } = (0, import_data242.useDispatch)(import_core_data139.store);
    const { allowCommentsOnNewPosts, isTemplate: isTemplate2, postSlug } = (0, import_data242.useSelect)(
      (select9) => {
        const { getEditedPostAttribute: getEditedPostAttribute2, getCurrentPostType: getCurrentPostType2 } = select9(store);
        const { getEditedEntityRecord, canUser } = select9(import_core_data139.store);
        const siteSettings = canUser("read", {
          kind: "root",
          name: "site"
        }) ? getEditedEntityRecord("root", "site") : void 0;
        return {
          isTemplate: getCurrentPostType2() === TEMPLATE_POST_TYPE,
          postSlug: getEditedPostAttribute2("slug"),
          allowCommentsOnNewPosts: siteSettings?.default_comment_status || ""
        };
      },
      []
    );
    const [popoverAnchor, setPopoverAnchor] = (0, import_element413.useState)(null);
    const popoverProps = (0, import_element413.useMemo)(
      () => ({
        // Anchor the popover to the middle of the entire row so that it doesn't
        // move around when the label changes.
        anchor: popoverAnchor,
        placement: "left-start",
        offset: 36,
        shift: true
      }),
      [popoverAnchor]
    );
    if (!isTemplate2 || !["home", "index"].includes(postSlug)) {
      return null;
    }
    const setAllowCommentsOnNewPosts = (newValue) => {
      editEntityRecord("root", "site", void 0, {
        default_comment_status: newValue ? "open" : null
      });
    };
    return /* @__PURE__ */ (0, import_jsx_runtime644.jsx)(post_panel_row_default, { label: (0, import_i18n339.__)("Discussion"), ref: setPopoverAnchor, children: /* @__PURE__ */ (0, import_jsx_runtime644.jsx)(
      import_components257.Dropdown,
      {
        popoverProps,
        contentClassName: "editor-site-discussion-dropdown__content",
        focusOnMount: true,
        renderToggle: ({ isOpen: isOpen2, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime644.jsx)(
          import_components257.Button,
          {
            size: "compact",
            variant: "tertiary",
            "aria-expanded": isOpen2,
            "aria-label": (0, import_i18n339.__)("Change discussion settings"),
            onClick: onToggle,
            children: allowCommentsOnNewPosts ? (0, import_i18n339.__)("Comments open") : (0, import_i18n339.__)("Comments closed")
          }
        ),
        renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime644.jsxs)(import_jsx_runtime644.Fragment, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime644.jsx)(
            import_block_editor92.__experimentalInspectorPopoverHeader,
            {
              title: (0, import_i18n339.__)("Discussion"),
              onClose
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime644.jsxs)(import_components257.__experimentalVStack, { spacing: 3, children: [
            /* @__PURE__ */ (0, import_jsx_runtime644.jsx)(import_components257.__experimentalText, { children: (0, import_i18n339.__)(
              "Changes will apply to new posts only. Individual posts may override these settings."
            ) }),
            /* @__PURE__ */ (0, import_jsx_runtime644.jsx)(
              import_components257.RadioControl,
              {
                className: "editor-site-discussion__options",
                hideLabelFromVision: true,
                label: (0, import_i18n339.__)("Comment status"),
                options: COMMENT_OPTIONS2,
                onChange: setAllowCommentsOnNewPosts,
                selected: allowCommentsOnNewPosts
              }
            )
          ] })
        ] })
      }
    ) });
  }

  // packages/editor/build-module/components/sidebar/post-summary.mjs
  var import_jsx_runtime645 = __toESM(require_jsx_runtime(), 1);
  var PANEL_NAME5 = "post-status";
  function PostSummary({ onActionPerformed }) {
    const { isRemovedPostStatusPanel, postType: postType2, postId: postId2 } = (0, import_data243.useSelect)(
      (select9) => {
        const {
          isEditorPanelRemoved: isEditorPanelRemoved2,
          getCurrentPostType: getCurrentPostType2,
          getCurrentPostId: getCurrentPostId2
        } = select9(store);
        return {
          isRemovedPostStatusPanel: isEditorPanelRemoved2(PANEL_NAME5),
          postType: getCurrentPostType2(),
          postId: getCurrentPostId2()
        };
      },
      []
    );
    return /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(post_panel_section_default, { className: "editor-post-summary", children: /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(plugin_post_status_info_default.Slot, { children: (fills) => /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(import_jsx_runtime645.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime645.jsxs)(Stack, { direction: "column", gap: "lg", children: [
      /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(
        PostCardPanel,
        {
          postType: postType2,
          postId: postId2,
          onActionPerformed
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(PostFeaturedImagePanel, { withPanelBody: false }),
      /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(PrivatePostExcerptPanel, {}),
      /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(ReadingSettingsLink, {}),
      /* @__PURE__ */ (0, import_jsx_runtime645.jsxs)(Stack, { direction: "column", gap: "xs", children: [
        /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(PostContentInformation, {}),
        /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(PostLastEditedPanel, {})
      ] }),
      !isRemovedPostStatusPanel && /* @__PURE__ */ (0, import_jsx_runtime645.jsxs)(Stack, { direction: "column", gap: "lg", children: [
        /* @__PURE__ */ (0, import_jsx_runtime645.jsxs)(Stack, { direction: "column", gap: "xs", children: [
          /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(PostStatus, {}),
          /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(PostSchedulePanel, {}),
          /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(PostURLPanel, {}),
          /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(panel_default, {}),
          /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(PostTemplatePanel, {}),
          /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(PostDiscussionPanel, {}),
          /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(PrivatePostLastRevision, {}),
          /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(PageAttributesPanel, {}),
          /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(PostSyncStatus, {}),
          /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(BlogTitle, {}),
          /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(PostsPerPage, {}),
          /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(SiteDiscussion, {}),
          /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(panel_default4, {}),
          fills
        ] }),
        /* @__PURE__ */ (0, import_jsx_runtime645.jsx)(
          PostTrash,
          {
            onActionPerformed
          }
        )
      ] })
    ] }) }) }) });
  }

  // packages/editor/build-module/components/sidebar/dataform-post-summary.mjs
  var import_i18n343 = __toESM(require_i18n(), 1);
  var import_data248 = __toESM(require_data(), 1);
  var import_core_data141 = __toESM(require_core_data(), 1);
  var import_element415 = __toESM(require_element(), 1);

  // packages/views/build-module/use-view.mjs
  var import_element414 = __toESM(require_element(), 1);
  var import_data244 = __toESM(require_data(), 1);
  var import_preferences26 = __toESM(require_preferences(), 1);

  // packages/views/build-module/load-view.mjs
  var import_data245 = __toESM(require_data(), 1);
  var import_preferences27 = __toESM(require_preferences(), 1);

  // packages/views/build-module/use-view-config.mjs
  var import_data246 = __toESM(require_data(), 1);
  var import_core_data140 = __toESM(require_core_data(), 1);

  // packages/views/build-module/lock-unlock.mjs
  var import_private_apis9 = __toESM(require_private_apis(), 1);
  var { lock: lock7, unlock: unlock7 } = (0, import_private_apis9.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
    "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
    "@wordpress/views"
  );

  // packages/views/build-module/use-view-config.mjs
  function useViewConfig({
    kind,
    name: name2,
    fields: fields2
  }) {
    const fieldList = Array.isArray(fields2) ? fields2 : fields2?.split(",");
    const fieldsKey = fieldList ? [...fieldList].sort().join(",") : void 0;
    return (0, import_data246.useSelect)(
      (select9) => {
        return unlock7(select9(import_core_data140.store)).getViewConfig(
          kind,
          name2,
          fieldsKey ? {
            fields: fieldsKey
          } : void 0
        );
      },
      [kind, name2, fieldsKey]
    );
  }

  // packages/editor/build-module/dataviews/fields/revisions/index.mjs
  var import_i18n341 = __toESM(require_i18n(), 1);

  // packages/editor/build-module/dataviews/fields/revisions/revisions-view.mjs
  var import_components258 = __toESM(require_components(), 1);
  var import_data247 = __toESM(require_data(), 1);
  var import_i18n340 = __toESM(require_i18n(), 1);
  var import_url24 = __toESM(require_url(), 1);
  var import_jsx_runtime646 = __toESM(require_jsx_runtime(), 1);
  function RevisionsView() {
    const { lastRevisionId, revisionsCount, disableVisualRevisions } = (0, import_data247.useSelect)((select9) => {
      const {
        getCurrentPostLastRevisionId: getCurrentPostLastRevisionId2,
        getCurrentPostRevisionsCount: getCurrentPostRevisionsCount2,
        getEditorSettings: getEditorSettings2
      } = select9(store);
      return {
        lastRevisionId: getCurrentPostLastRevisionId2(),
        revisionsCount: getCurrentPostRevisionsCount2(),
        disableVisualRevisions: (
          // @ts-expect-error Editor settings are typed as a bare `Object`.
          !!getEditorSettings2().disableVisualRevisions
        )
      };
    }, []);
    const { setCurrentRevisionId: setCurrentRevisionId2 } = unlock((0, import_data247.useDispatch)(store));
    const buttonProps = disableVisualRevisions ? {
      href: (0, import_url24.addQueryArgs)("revision.php", {
        revision: lastRevisionId
      })
    } : { onClick: () => setCurrentRevisionId2(lastRevisionId) };
    return /* @__PURE__ */ (0, import_jsx_runtime646.jsx)(
      import_components258.Button,
      {
        ...buttonProps,
        variant: "link",
        text: String(revisionsCount),
        "aria-label": (0, import_i18n340.sprintf)(
          /* translators: %d: number of revisions. */
          (0, import_i18n340._n)(
            "Open revisions screen: %d revision",
            "Open revisions screen: %d revisions",
            revisionsCount
          ),
          revisionsCount
        )
      }
    );
  }

  // packages/editor/build-module/dataviews/fields/revisions/index.mjs
  var revisionsField = {
    id: "revisions",
    label: (0, import_i18n341.__)("Revisions"),
    readOnly: true,
    enableSorting: false,
    render: RevisionsView,
    isVisible: (item) => {
      const revisionsCount = item._links?.["version-history"]?.[0]?.count ?? 0;
      const lastRevisionId = item._links?.["predecessor-version"]?.[0]?.id ?? null;
      return !!lastRevisionId && revisionsCount >= 2;
    }
  };
  var revisions_default2 = revisionsField;

  // packages/editor/build-module/dataviews/fields/reading-settings/index.mjs
  var import_i18n342 = __toESM(require_i18n(), 1);
  var readingSettingsField = {
    id: "reading_settings",
    type: "text",
    label: (0, import_i18n342.__)("Reading settings"),
    readOnly: true,
    enableSorting: false,
    render: ReadingSettingsLink,
    isVisible: (item) => item.slug === "front-page"
  };
  var reading_settings_default = readingSettingsField;

  // packages/editor/build-module/components/sidebar/dataform-post-summary.mjs
  var import_jsx_runtime647 = __toESM(require_jsx_runtime(), 1);
  var EMPTY_FORM = { layout: { type: "panel" }, fields: [] };
  var VIEW_CONFIG_FIELDS = ["form"];
  function useInspectorPanelVisibility(form) {
    const {
      isPostStatusRemoved,
      featuredImageEnabled,
      excerptEnabled,
      discussionEnabled,
      pageAttributesEnabled
    } = (0, import_data248.useSelect)((select9) => {
      const { isEditorPanelRemoved: isEditorPanelRemoved2, isEditorPanelEnabled: isEditorPanelEnabled2 } = select9(store);
      return {
        isPostStatusRemoved: isEditorPanelRemoved2("post-status"),
        featuredImageEnabled: isEditorPanelEnabled2("featured-image"),
        excerptEnabled: isEditorPanelEnabled2("post-excerpt"),
        discussionEnabled: isEditorPanelEnabled2("discussion-panel"),
        pageAttributesEnabled: isEditorPanelEnabled2("page-attributes")
      };
    }, []);
    const visibleForm = (0, import_element415.useMemo)(() => {
      if (!form.fields?.length) {
        return form;
      }
      const visibilityById = {
        featured_media: featuredImageEnabled,
        excerpt: excerptEnabled,
        "post-content-info": true,
        reading_settings: true,
        discussion: discussionEnabled && !isPostStatusRemoved,
        parent: pageAttributesEnabled && !isPostStatusRemoved
      };
      const isFieldVisible = (id) => id in visibilityById ? visibilityById[id] : !isPostStatusRemoved;
      const filterFields = (fields2) => fields2.reduce((acc, field) => {
        const id = typeof field === "string" ? field : field.id;
        if (!isFieldVisible(id)) {
          return acc;
        }
        if (typeof field !== "string" && Array.isArray(field.children)) {
          const children = filterFields(field.children);
          if (!children.length) {
            return acc;
          }
          acc.push({ ...field, children });
          return acc;
        }
        acc.push(field);
        return acc;
      }, []);
      return { ...form, fields: filterFields(form.fields) };
    }, [
      form,
      isPostStatusRemoved,
      featuredImageEnabled,
      excerptEnabled,
      discussionEnabled,
      pageAttributesEnabled
    ]);
    return visibleForm;
  }
  var ENTITIES = {
    wp_template: {
      root_site: {
        kind: "root",
        name: "site",
        fields: ["posts_per_page", "default_comment_status"],
        isVisible: (item) => ["home", "index"].includes(item.slug ?? "")
      },
      posttype_page: {
        kind: "postType",
        name: "page",
        getId: (select9) => select9(import_core_data141.store).getEditedEntityRecord("root", "site")?.page_for_posts,
        fields: ["posts_page_title"],
        isVisible: (item) => ["home", "index"].includes(item.slug ?? "")
      }
    }
  };
  function bindFieldToNamespace(field, namespace, isVisible2 = () => true) {
    const subItem = (item) => item?.[namespace] ?? {};
    return {
      ...field,
      getValue: ({ item }) => field.getValue ? field.getValue({ item: subItem(item) }) : subItem(item)[field.id],
      setValue: ({ item, value }) => ({
        [namespace]: field.setValue({ item: subItem(item), value })
      }),
      render: field.render ? (props) => field.render({ ...props, item: subItem(props.item) }) : void 0,
      isVisible: (item) => isVisible2(item) && !!item[namespace]
    };
  }
  function DataFormPostSummary({ onActionPerformed }) {
    const { postType: postType2, postId: postId2, isPostStatusRemoved, availableTemplates } = (0, import_data248.useSelect)((select9) => {
      const {
        getCurrentPostType: getCurrentPostType2,
        getCurrentPostId: getCurrentPostId2,
        isEditorPanelRemoved: isEditorPanelRemoved2,
        getEditorSettings: getEditorSettings2
      } = select9(store);
      const _availableTemplates = select9(
        import_core_data141.store
      ).getCurrentTheme()?.is_block_theme ? null : getEditorSettings2().availableTemplates ?? null;
      return {
        postType: getCurrentPostType2(),
        postId: getCurrentPostId2(),
        isPostStatusRemoved: isEditorPanelRemoved2("post-status"),
        availableTemplates: _availableTemplates
      };
    }, []);
    const { form: formConfig } = useViewConfig({
      kind: "postType",
      name: postType2,
      fields: VIEW_CONFIG_FIELDS
    });
    const form = useInspectorPanelVisibility(formConfig ?? EMPTY_FORM);
    const record = (0, import_data248.useSelect)(
      (select9) => {
        if (!postType2 || !postId2) {
          return null;
        }
        return select9(import_core_data141.store).getEditedEntityRecord(
          "postType",
          postType2,
          postId2
        );
      },
      [postType2, postId2]
    );
    const templatePanelMode = usePostTemplatePanelMode();
    const entityRecords = (0, import_data248.useSelect)(
      (select9) => {
        const { getEditedEntityRecord, canUser } = select9(import_core_data141.store);
        const records = {};
        for (const [namespace, entity] of Object.entries(
          ENTITIES[postType2] ?? {}
        )) {
          if (!canUser("read", {
            kind: entity.kind,
            name: entity.name
          })) {
            continue;
          }
          const id = entity.getId ? entity.getId(select9) : void 0;
          if (entity.getId && !id) {
            continue;
          }
          records[namespace] = getEditedEntityRecord(
            entity.kind,
            entity.name,
            id
          );
        }
        return records;
      },
      [postType2]
    );
    const data = (0, import_element415.useMemo)(() => {
      if (!record) {
        return record;
      }
      const extra = { ...entityRecords };
      if (availableTemplates && Object.keys(availableTemplates).length) {
        extra.available_templates = availableTemplates;
      }
      return { ...record, ...extra };
    }, [record, entityRecords, availableTemplates]);
    const { editEntityRecord } = (0, import_data248.useDispatch)(import_core_data141.store);
    const registry = (0, import_data248.useRegistry)();
    const fieldNamespaces = (0, import_element415.useMemo)(() => {
      const map = {};
      for (const [namespace, entity] of Object.entries(
        ENTITIES[postType2] ?? {}
      )) {
        for (const id of entity.fields ?? []) {
          map[id] = namespace;
        }
      }
      return map;
    }, [postType2]);
    const _fields = post_fields_default({ postType: postType2 });
    const fields2 = (0, import_element415.useMemo)(
      () => _fields?.map((field) => {
        const namespace = fieldNamespaces[field.id];
        if (namespace) {
          return bindFieldToNamespace(
            field,
            namespace,
            ENTITIES[postType2]?.[namespace]?.isVisible
          );
        }
        if (field.id === "status") {
          return {
            ...field,
            elements: field.elements.filter(
              (element) => element.value !== "trash"
            )
          };
        }
        if (field.id === "template") {
          if (!templatePanelMode) {
            return null;
          }
          if (templatePanelMode === "classic" && Object.keys(availableTemplates ?? {}).length === 0) {
            return {
              ...field,
              readOnly: true,
              render: () => (0, import_i18n343.__)("Default template")
            };
          }
          return field;
        }
        return field;
      }).filter(Boolean).concat(revisions_default2, reading_settings_default),
      [
        _fields,
        templatePanelMode,
        availableTemplates,
        fieldNamespaces,
        postType2
      ]
    );
    const onChange = (edits) => {
      const entities = ENTITIES[postType2] ?? {};
      const baseEdits = {};
      for (const [key, value] of Object.entries(edits)) {
        const entity = entities[key];
        if (entity) {
          const id = entity.getId ? entity.getId(registry.select) : void 0;
          editEntityRecord(entity.kind, entity.name, id, value);
        } else {
          baseEdits[key] = value;
        }
      }
      if (!Object.keys(baseEdits).length) {
        return;
      }
      if (baseEdits.status && baseEdits.status !== "future" && record?.status === "future" && new Date(record.date) > /* @__PURE__ */ new Date()) {
        baseEdits.date = null;
      }
      if (baseEdits.status && baseEdits.status === "private" && record?.password) {
        baseEdits.password = "";
      }
      editEntityRecord("postType", postType2, postId2, baseEdits);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime647.jsx)(post_panel_section_default, { className: "editor-post-summary", children: /* @__PURE__ */ (0, import_jsx_runtime647.jsxs)(Stack, { direction: "column", gap: "lg", children: [
      /* @__PURE__ */ (0, import_jsx_runtime647.jsx)(
        PostCardPanel,
        {
          postType: postType2,
          postId: postId2,
          onActionPerformed
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime647.jsx)(
        DataForm,
        {
          data,
          fields: fields2,
          form,
          onChange
        }
      ),
      !isPostStatusRemoved && /* @__PURE__ */ (0, import_jsx_runtime647.jsxs)(import_jsx_runtime647.Fragment, { children: [
        /* @__PURE__ */ (0, import_jsx_runtime647.jsx)(plugin_post_status_info_default.Slot, { children: (fills) => fills.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime647.jsx)(Stack, { direction: "column", gap: "xs", children: fills }) }),
        /* @__PURE__ */ (0, import_jsx_runtime647.jsx)(PostTrash, { onActionPerformed })
      ] })
    ] }) });
  }

  // packages/editor/build-module/components/sidebar/post-revision-summary.mjs
  var import_data251 = __toESM(require_data(), 1);
  var import_components260 = __toESM(require_components(), 1);
  var import_i18n346 = __toESM(require_i18n(), 1);
  var import_url25 = __toESM(require_url(), 1);

  // packages/editor/build-module/components/post-revisions-timeline/index.mjs
  var import_data249 = __toESM(require_data(), 1);
  var import_core_data142 = __toESM(require_core_data(), 1);
  var import_date24 = __toESM(require_date(), 1);
  var import_element416 = __toESM(require_element(), 1);
  var import_i18n344 = __toESM(require_i18n(), 1);
  var import_jsx_runtime648 = __toESM(require_jsx_runtime(), 1);
  var PAGE_SIZE2 = 10;
  var EMPTY_ARRAY17 = [];
  var defaultLayouts = { pickerActivity: true };
  var baseView = {
    type: "pickerActivity",
    titleField: "date",
    descriptionField: "details",
    fields: ["author"],
    layout: { density: "compact" },
    page: 1,
    perPage: PAGE_SIZE2
  };
  var DAY_IN_MILLISECONDS2 = 864e5;
  function getDisplayDate2(value) {
    const dateNowInMs = (0, import_date24.getDate)(null).getTime();
    const date = (0, import_date24.getDate)(value ?? null);
    return dateNowInMs - date.getTime() > DAY_IN_MILLISECONDS2 ? (0, import_date24.dateI18n)((0, import_date24.getSettings)().formats.datetimeAbbreviated, date) : (0, import_date24.humanTimeDiff)(date);
  }
  function isAutosaveRevision(item) {
    return item.slug?.endsWith("-autosave-v1") ?? false;
  }
  function RevisionBadges({ item }) {
    if (!isAutosaveRevision(item)) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime648.jsx)(Badge, { intent: "none", children: (0, import_i18n344.__)("Autosave") });
  }
  function PostRevisionsTimeline() {
    const { setCurrentRevisionId: setCurrentRevisionId2 } = unlock((0, import_data249.useDispatch)(store));
    const [view, setView] = (0, import_element416.useState)(baseView);
    const { revisions, revisionKey, currentRevisionId } = (0, import_data249.useSelect)(
      (select9) => {
        const { getCurrentPostType: getCurrentPostType2 } = select9(store);
        const {
          getCurrentRevisionId: _getCurrentRevisionId,
          getRevisionPage: getRevisionPage2,
          getPageRevisions: getPageRevisions2
        } = unlock(select9(store));
        const { getEntityConfig } = select9(import_core_data142.store);
        const _postType = getCurrentPostType2();
        const entityConfig = getEntityConfig("postType", _postType);
        const _revisionKey = entityConfig?.revisionKey || "id";
        const _currentRevisionId = _getCurrentRevisionId();
        return {
          // Same desc-ordered window the header slider renders (warm cache).
          revisions: getPageRevisions2(getRevisionPage2()),
          revisionKey: _revisionKey,
          currentRevisionId: _currentRevisionId
        };
      },
      []
    );
    const isLoading = !revisions;
    const fields2 = (0, import_element416.useMemo)(
      () => [
        {
          id: "date",
          label: (0, import_i18n344.__)("Date"),
          // Return the humanized label the row renders so the picker
          // option's accessible name announces e.g. "5 minutes ago"
          // instead of the raw ISO timestamp.
          getValue: ({ item }) => {
            const displayDate = getDisplayDate2(item.date);
            if (!isAutosaveRevision(item)) {
              return displayDate;
            }
            return (0, import_i18n344.sprintf)(
              /* translators: 1: revision date, 2: revision type. */
              (0, import_i18n344.__)("%1$s, %2$s"),
              displayDate,
              (0, import_i18n344.__)("Autosave")
            );
          },
          render: ({ item }) => /* @__PURE__ */ (0, import_jsx_runtime648.jsxs)(Stack, { direction: "row", align: "center", gap: "sm", children: [
            /* @__PURE__ */ (0, import_jsx_runtime648.jsx)(
              Text,
              {
                variant: "heading-sm",
                render: /* @__PURE__ */ (0, import_jsx_runtime648.jsx)("time", { dateTime: item.date }),
                children: getDisplayDate2(item.date)
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime648.jsx)(RevisionBadges, { item })
          ] }),
          enableSorting: false,
          enableHiding: false
        },
        author_default,
        {
          id: "details",
          label: (0, import_i18n344.__)("Details"),
          render: ({ item }) => {
            if (String(item[revisionKey]) !== String(currentRevisionId)) {
              return null;
            }
            return /* @__PURE__ */ (0, import_jsx_runtime648.jsx)(
              PostContentInformationUI,
              {
                postContent: item.content?.raw
              }
            );
          },
          enableSorting: false,
          enableHiding: false
        }
      ],
      [revisionKey, currentRevisionId]
    );
    const { data: shownRevisions, paginationInfo } = (0, import_element416.useMemo)(
      () => filterSortAndPaginate(revisions || EMPTY_ARRAY17, view, fields2),
      [revisions, view, fields2]
    );
    (0, import_element416.useEffect)(() => {
      if (!currentRevisionId || !revisions) {
        return;
      }
      const index3 = revisions.findIndex(
        (r4) => String(r4[revisionKey]) === String(currentRevisionId)
      );
      if (index3 < 0) {
        return;
      }
      const page = Math.floor(index3 / view.perPage) + 1;
      setView((v3) => v3.page === page ? v3 : { ...v3, page });
    }, [currentRevisionId, revisions, revisionKey, view.perPage]);
    const selection = (0, import_element416.useMemo)(
      () => currentRevisionId ? [String(currentRevisionId)] : EMPTY_ARRAY17,
      [currentRevisionId]
    );
    const onChangeSelection = (0, import_element416.useCallback)(
      (newSelection) => {
        if (newSelection.length === 0) {
          return;
        }
        const selectedId = newSelection[newSelection.length - 1];
        setCurrentRevisionId2(Number(selectedId));
      },
      [setCurrentRevisionId2]
    );
    const getItemId3 = (0, import_element416.useCallback)(
      (item) => String(item[revisionKey]),
      [revisionKey]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime648.jsx)("div", { className: "editor-post-revisions-timeline", children: /* @__PURE__ */ (0, import_jsx_runtime648.jsxs)(
      dataviews_picker_default,
      {
        view,
        onChangeView: setView,
        fields: fields2,
        data: shownRevisions,
        isLoading,
        paginationInfo,
        defaultLayouts,
        getItemId: getItemId3,
        selection,
        onChangeSelection,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime648.jsx)(dataviews_picker_default.Layout, {}),
          /* @__PURE__ */ (0, import_jsx_runtime648.jsx)(dataviews_picker_default.Footer, {})
        ]
      }
    ) });
  }

  // packages/editor/build-module/components/revision-fields-diff/index.mjs
  var import_data250 = __toESM(require_data(), 1);
  var import_element417 = __toESM(require_element(), 1);
  var import_i18n345 = __toESM(require_i18n(), 1);

  // packages/editor/build-module/components/revision-diff-panel/index.mjs
  var import_components259 = __toESM(require_components(), 1);
  var import_jsx_runtime649 = __toESM(require_jsx_runtime(), 1);
  function RevisionDiffPanel({
    title,
    entries,
    initialOpen,
    className
  }) {
    if (!entries) {
      return null;
    }
    const fields2 = Object.entries(entries).map(([key, parts]) => /* @__PURE__ */ (0, import_jsx_runtime649.jsx)(post_panel_row_default, { label: key, children: /* @__PURE__ */ (0, import_jsx_runtime649.jsx)("span", { className: "editor-revision-fields-diff__value", children: parts.map((part, index3) => {
      if (part.added) {
        return /* @__PURE__ */ (0, import_jsx_runtime649.jsx)(
          "ins",
          {
            className: "editor-revision-fields-diff__added",
            children: part.value
          },
          index3
        );
      }
      if (part.removed) {
        return /* @__PURE__ */ (0, import_jsx_runtime649.jsx)(
          "del",
          {
            className: "editor-revision-fields-diff__removed",
            children: part.value
          },
          index3
        );
      }
      return /* @__PURE__ */ (0, import_jsx_runtime649.jsx)("span", { children: part.value }, index3);
    }) }) }, key));
    return /* @__PURE__ */ (0, import_jsx_runtime649.jsx)(import_components259.PanelBody, { title, initialOpen, children: /* @__PURE__ */ (0, import_jsx_runtime649.jsx)("div", { className, children: fields2 }) });
  }

  // packages/editor/build-module/components/revision-fields-diff/index.mjs
  var import_jsx_runtime650 = __toESM(require_jsx_runtime(), 1);
  function stringifyValue2(value) {
    if (value === null || value === void 0) {
      return "";
    }
    if (typeof value === "object") {
      return JSON.stringify(value, null, 2);
    }
    return String(value);
  }
  function isEmptyMeta(str3) {
    return !str3 || str3 === "[]" || str3 === "{}";
  }
  function RevisionFieldsDiffPanel() {
    const { revision, previousRevision } = (0, import_data250.useSelect)((select9) => {
      const { getCurrentRevision: getCurrentRevision2, getPreviousRevision: getPreviousRevision2 } = unlock(
        select9(store)
      );
      return {
        revision: getCurrentRevision2(),
        previousRevision: getPreviousRevision2()
      };
    }, []);
    const entries = (0, import_element417.useMemo)(() => {
      if (!revision) {
        return null;
      }
      const revisionMeta = revision.meta ?? {};
      const previousMeta = previousRevision?.meta ?? {};
      const allMetaKeys = /* @__PURE__ */ new Set([
        ...Object.keys(revisionMeta),
        ...Object.keys(previousMeta)
      ]);
      const result = {};
      for (const key of allMetaKeys) {
        const revStr = stringifyValue2(revisionMeta[key]);
        const prevStr = stringifyValue2(previousMeta[key]);
        if (isEmptyMeta(revStr) && isEmptyMeta(prevStr)) {
          continue;
        }
        result[key] = diffWordsWithSpace(prevStr, revStr);
      }
      if (Object.keys(result).length === 0) {
        return null;
      }
      return result;
    }, [revision, previousRevision]);
    return /* @__PURE__ */ (0, import_jsx_runtime650.jsx)(
      RevisionDiffPanel,
      {
        title: (0, import_i18n345.__)("Meta"),
        entries,
        initialOpen: false,
        className: "editor-revision-meta-diff__content"
      }
    );
  }

  // packages/editor/build-module/components/sidebar/post-revision-summary.mjs
  var import_jsx_runtime651 = __toESM(require_jsx_runtime(), 1);
  function PostRevisionSummary() {
    const { revisionId: revisionId2, postId: postId2 } = (0, import_data251.useSelect)((select9) => {
      const { getCurrentRevisionId: getCurrentRevisionId2, getCurrentPostId: getCurrentPostId2 } = unlock(
        select9(store)
      );
      return {
        revisionId: getCurrentRevisionId2(),
        postId: getCurrentPostId2()
      };
    }, []);
    if (!revisionId2) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime651.jsxs)(import_jsx_runtime651.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime651.jsx)(post_panel_section_default, { className: "editor-post-summary", children: /* @__PURE__ */ (0, import_jsx_runtime651.jsxs)(import_components260.__experimentalVStack, { spacing: 4, children: [
        /* @__PURE__ */ (0, import_jsx_runtime651.jsx)(PostCardPanel, { postId: postId2, hideActions: true }),
        /* @__PURE__ */ (0, import_jsx_runtime651.jsx)(
          import_components260.ExternalLink,
          {
            href: (0, import_url25.addQueryArgs)("revision.php", {
              revision: revisionId2
            }),
            children: (0, import_i18n346.__)("Open classic revisions screen")
          }
        )
      ] }) }),
      /* @__PURE__ */ (0, import_jsx_runtime651.jsx)(RevisionFieldsDiffPanel, {}),
      /* @__PURE__ */ (0, import_jsx_runtime651.jsx)(PostRevisionsTimeline, {})
    ] });
  }

  // packages/editor/build-module/components/post-transform-panel/index.mjs
  var import_data253 = __toESM(require_data(), 1);
  var import_core_data144 = __toESM(require_core_data(), 1);
  var import_components261 = __toESM(require_components(), 1);
  var import_i18n347 = __toESM(require_i18n(), 1);
  var import_block_editor93 = __toESM(require_block_editor(), 1);
  var import_blocks36 = __toESM(require_blocks(), 1);

  // packages/editor/build-module/components/post-transform-panel/hooks.mjs
  var import_data252 = __toESM(require_data(), 1);
  var import_element418 = __toESM(require_element(), 1);
  var import_core_data143 = __toESM(require_core_data(), 1);
  var import_blocks35 = __toESM(require_blocks(), 1);
  var import_patterns11 = __toESM(require_patterns(), 1);
  var { EXCLUDED_PATTERN_SOURCES, PATTERN_TYPES: PATTERN_TYPES6 } = unlock(import_patterns11.privateApis);
  function injectThemeAttributeInBlockTemplateContent(block, currentThemeStylesheet) {
    block.innerBlocks = block.innerBlocks.map((innerBlock) => {
      return injectThemeAttributeInBlockTemplateContent(
        innerBlock,
        currentThemeStylesheet
      );
    });
    if (block.name === "core/template-part" && block.attributes.theme === void 0) {
      block.attributes.theme = currentThemeStylesheet;
    }
    return block;
  }
  function filterPatterns(patterns2, template2) {
    const filterOutDuplicatesByName = (currentItem, index3, items) => index3 === items.findIndex((item) => currentItem.name === item.name);
    const filterOutExcludedPatternSources = (pattern) => {
      if (template2.area === "navigation-overlay" && pattern.blockTypes?.includes(
        "core/template-part/navigation-overlay"
      )) {
        return true;
      }
      return !EXCLUDED_PATTERN_SOURCES.includes(pattern.source);
    };
    const filterCompatiblePatterns = (pattern) => pattern.templateTypes?.includes(template2.slug) || pattern.blockTypes?.includes("core/template-part/" + template2.area);
    return patterns2.filter((pattern, index3, items) => {
      return filterOutDuplicatesByName(pattern, index3, items) && filterOutExcludedPatternSources(pattern) && filterCompatiblePatterns(pattern);
    });
  }
  function preparePatterns(patterns2, currentThemeStylesheet) {
    return patterns2.map((pattern) => ({
      ...pattern,
      keywords: pattern.keywords || [],
      type: PATTERN_TYPES6.theme,
      blocks: (0, import_blocks35.parse)(pattern.content, {
        __unstableSkipMigrationLogs: true
      }).map(
        (block) => injectThemeAttributeInBlockTemplateContent(
          block,
          currentThemeStylesheet
        )
      )
    }));
  }
  function useAvailablePatterns({ area, name: name2, slug }) {
    const { blockPatterns, restBlockPatterns, currentThemeStylesheet } = (0, import_data252.useSelect)((select9) => {
      const { getEditorSettings: getEditorSettings2 } = select9(store);
      const settings = getEditorSettings2();
      return {
        blockPatterns: settings.__experimentalAdditionalBlockPatterns ?? settings.__experimentalBlockPatterns,
        restBlockPatterns: select9(import_core_data143.store).getBlockPatterns(),
        currentThemeStylesheet: select9(import_core_data143.store).getCurrentTheme().stylesheet
      };
    }, []);
    return (0, import_element418.useMemo)(() => {
      const mergedPatterns = [
        ...blockPatterns || [],
        ...restBlockPatterns || []
      ];
      const filteredPatterns = filterPatterns(mergedPatterns, {
        area,
        name: name2,
        slug
      });
      return preparePatterns(filteredPatterns, currentThemeStylesheet);
    }, [
      area,
      name2,
      slug,
      blockPatterns,
      restBlockPatterns,
      currentThemeStylesheet
    ]);
  }

  // packages/editor/build-module/components/post-transform-panel/index.mjs
  var import_jsx_runtime652 = __toESM(require_jsx_runtime(), 1);
  function TemplatesList2({ availableTemplates, onSelect }) {
    if (!availableTemplates || availableTemplates?.length === 0) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime652.jsx)(
      import_block_editor93.__experimentalBlockPatternsList,
      {
        label: (0, import_i18n347.__)("Templates"),
        blockPatterns: availableTemplates,
        onClickPattern: onSelect,
        showTitlesAsTooltip: true
      }
    );
  }
  function PostTransform() {
    const { area, name: name2, slug, postType: postType2, postId: postId2 } = (0, import_data253.useSelect)((select9) => {
      const { getCurrentPostType: getCurrentPostType2, getCurrentPostId: getCurrentPostId2 } = select9(store);
      const { getEditedEntityRecord } = select9(import_core_data144.store);
      const type = getCurrentPostType2();
      const id = getCurrentPostId2();
      const record = getEditedEntityRecord("postType", type, id);
      return {
        area: record?.area,
        name: record?.name,
        slug: record?.slug,
        postType: type,
        postId: id
      };
    }, []);
    const { editEntityRecord } = (0, import_data253.useDispatch)(import_core_data144.store);
    const availablePatterns = useAvailablePatterns({ area, name: name2, slug });
    const onTemplateSelect = async (selectedTemplate) => {
      await editEntityRecord("postType", postType2, postId2, {
        blocks: selectedTemplate.blocks,
        content: (0, import_blocks36.serialize)(selectedTemplate.blocks)
      });
    };
    if (!availablePatterns?.length) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime652.jsx)(
      import_components261.PanelBody,
      {
        title: (0, import_i18n347.__)("Design"),
        initialOpen: postType2 === TEMPLATE_PART_POST_TYPE,
        children: /* @__PURE__ */ (0, import_jsx_runtime652.jsx)(
          TemplatesList2,
          {
            availableTemplates: availablePatterns,
            onSelect: onTemplateSelect
          }
        )
      }
    );
  }
  function PostTransformPanel() {
    const { postType: postType2 } = (0, import_data253.useSelect)((select9) => {
      const { getCurrentPostType: getCurrentPostType2 } = select9(store);
      return {
        postType: getCurrentPostType2()
      };
    }, []);
    if (![TEMPLATE_PART_POST_TYPE, TEMPLATE_POST_TYPE].includes(postType2)) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime652.jsx)(PostTransform, {});
  }

  // packages/editor/build-module/components/sidebar/header.mjs
  var import_i18n348 = __toESM(require_i18n(), 1);
  var import_data254 = __toESM(require_data(), 1);
  var import_html_entities33 = __toESM(require_html_entities(), 1);
  var import_jsx_runtime653 = __toESM(require_jsx_runtime(), 1);
  function SidebarHeader() {
    const { postTypeLabel, isRevisionsMode: isRevisionsMode2 } = (0, import_data254.useSelect)((select9) => {
      const { getPostTypeLabel: getPostTypeLabel2 } = select9(store);
      const { isRevisionsMode: _isRevisionsMode } = unlock(
        select9(store)
      );
      return {
        postTypeLabel: getPostTypeLabel2(),
        isRevisionsMode: _isRevisionsMode()
      };
    }, []);
    let documentLabel;
    if (isRevisionsMode2) {
      documentLabel = (0, import_i18n348.__)("Revision");
    } else if (postTypeLabel) {
      documentLabel = (0, import_html_entities33.decodeEntities)(postTypeLabel);
    } else {
      documentLabel = (0, import_i18n348._x)("Document", "noun, panel");
    }
    return /* @__PURE__ */ (0, import_jsx_runtime653.jsxs)(tabs_exports.List, { activateOnFocus: false, children: [
      /* @__PURE__ */ (0, import_jsx_runtime653.jsx)(tabs_exports.Tab, { value: sidebars.document, children: documentLabel }),
      /* @__PURE__ */ (0, import_jsx_runtime653.jsx)(tabs_exports.Tab, { value: sidebars.block, children: (0, import_i18n348.__)("Block") })
    ] });
  }

  // packages/editor/build-module/components/template-actions-panel/block-theme-content.mjs
  var import_data255 = __toESM(require_data(), 1);
  var import_core_data145 = __toESM(require_core_data(), 1);
  var import_block_editor94 = __toESM(require_block_editor(), 1);
  var import_components262 = __toESM(require_components(), 1);
  var import_element419 = __toESM(require_element(), 1);
  var import_i18n349 = __toESM(require_i18n(), 1);
  var import_html_entities34 = __toESM(require_html_entities(), 1);
  var import_keycodes18 = __toESM(require_keycodes(), 1);
  var import_notices35 = __toESM(require_notices(), 1);
  var import_preferences28 = __toESM(require_preferences(), 1);
  var import_jsx_runtime654 = __toESM(require_jsx_runtime(), 1);
  function TemplateActionsPanelContent() {
    const templateId2 = (0, import_data255.useSelect)(
      (select9) => select9(store).getCurrentTemplateId(),
      []
    );
    const [isCreateModalOpen, setIsCreateModalOpen] = (0, import_element419.useState)(false);
    const [isSwapModalOpen, setIsSwapModalOpen] = (0, import_element419.useState)(false);
    const availableTemplates = useAvailableTemplates();
    const hasSwapTargets = !!availableTemplates?.length;
    const {
      onNavigateToEntityRecord,
      canCreateTemplate,
      hasGoBack,
      getEditorSettings: getEditorSettings2
    } = (0, import_data255.useSelect)((select9) => {
      const { getEditorSettings: _getEditorSettings } = select9(store);
      const editorSettings2 = _getEditorSettings();
      return {
        onNavigateToEntityRecord: editorSettings2.onNavigateToEntityRecord,
        canCreateTemplate: !!select9(import_core_data145.store).canUser("create", {
          kind: "postType",
          name: "wp_template"
        }),
        hasGoBack: editorSettings2.hasOwnProperty(
          "onNavigateToPreviousEntityRecord"
        ),
        getEditorSettings: _getEditorSettings
      };
    }, []);
    const { get: getPreference } = (0, import_data255.useSelect)(import_preferences28.store);
    const { createSuccessNotice } = (0, import_data255.useDispatch)(import_notices35.store);
    const { editedRecord: template2, hasResolved } = (0, import_core_data145.useEntityRecord)(
      "postType",
      "wp_template",
      templateId2
    );
    const [blocks] = (0, import_core_data145.useEntityBlockEditor)("postType", "wp_template", {
      id: templateId2
    });
    if (!hasResolved) {
      return null;
    }
    const notificationAction = hasGoBack ? [
      {
        label: (0, import_i18n349.__)("Back"),
        onClick: () => getEditorSettings2().onNavigateToPreviousEntityRecord()
      }
    ] : void 0;
    const mayShowTemplateEditNotice = () => {
      if (!getPreference("core/edit-site", "welcomeGuideTemplate")) {
        createSuccessNotice(
          (0, import_i18n349.__)(
            "Editing template. Changes made here affect all posts and pages that use the template."
          ),
          { type: "snackbar", actions: notificationAction }
        );
      }
    };
    const templateName = (0, import_html_entities34.decodeEntities)(template2.title);
    const previewContent = !!blocks?.length && /* @__PURE__ */ (0, import_jsx_runtime654.jsx)(import_block_editor94.BlockPreview.Async, { children: /* @__PURE__ */ (0, import_jsx_runtime654.jsx)(import_block_editor94.BlockPreview, { blocks }) });
    const renderPreview = () => {
      if (!previewContent) {
        return null;
      }
      if (hasSwapTargets) {
        const tooltipText = (0, import_i18n349.__)("Change template");
        return /* @__PURE__ */ (0, import_jsx_runtime654.jsxs)(tooltip_exports.Root, { children: [
          /* @__PURE__ */ (0, import_jsx_runtime654.jsx)(
            tooltip_exports.Trigger,
            {
              render: /* @__PURE__ */ (0, import_jsx_runtime654.jsx)(
                "div",
                {
                  className: "editor-template-actions-panel__preview",
                  role: "button",
                  tabIndex: 0,
                  "aria-label": tooltipText,
                  onClick: () => setIsSwapModalOpen(true),
                  onKeyDown: (event) => {
                    if (event.keyCode === import_keycodes18.ENTER || event.keyCode === import_keycodes18.SPACE) {
                      event.preventDefault();
                      setIsSwapModalOpen(true);
                    }
                  },
                  children: previewContent
                }
              )
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime654.jsx)(tooltip_exports.Popup, { children: tooltipText })
        ] });
      }
      return /* @__PURE__ */ (0, import_jsx_runtime654.jsx)("div", { className: "editor-template-actions-panel__preview", children: previewContent });
    };
    return /* @__PURE__ */ (0, import_jsx_runtime654.jsxs)(import_jsx_runtime654.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime654.jsx)(
        import_components262.PanelBody,
        {
          title: (0, import_i18n349.sprintf)(
            /* translators: %s: template name */
            (0, import_i18n349.__)("Template: %s"),
            templateName
          ),
          initialOpen: false,
          children: /* @__PURE__ */ (0, import_jsx_runtime654.jsxs)(import_components262.__experimentalVStack, { children: [
            renderPreview(),
            canCreateTemplate && /* @__PURE__ */ (0, import_jsx_runtime654.jsxs)(import_components262.__experimentalHStack, { children: [
              onNavigateToEntityRecord && /* @__PURE__ */ (0, import_jsx_runtime654.jsx)(
                import_components262.Button,
                {
                  className: "editor-template-actions-panel__action",
                  __next40pxDefaultSize: true,
                  variant: "secondary",
                  onClick: () => {
                    onNavigateToEntityRecord({
                      postId: template2.id,
                      postType: "wp_template"
                    });
                    mayShowTemplateEditNotice();
                  },
                  children: (0, import_i18n349.__)("Edit")
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime654.jsx)(
                import_components262.Button,
                {
                  className: "editor-template-actions-panel__action",
                  __next40pxDefaultSize: true,
                  variant: "secondary",
                  onClick: () => setIsCreateModalOpen(true),
                  children: (0, import_i18n349.__)("Create new")
                }
              )
            ] })
          ] })
        }
      ),
      isCreateModalOpen && /* @__PURE__ */ (0, import_jsx_runtime654.jsx)(
        CreateNewTemplateModal,
        {
          onClose: () => setIsCreateModalOpen(false)
        }
      ),
      isSwapModalOpen && /* @__PURE__ */ (0, import_jsx_runtime654.jsx)(
        SwapTemplateModal,
        {
          onRequestClose: () => setIsSwapModalOpen(false)
        }
      )
    ] });
  }

  // packages/editor/build-module/components/template-actions-panel/classic-theme-content.mjs
  var import_data256 = __toESM(require_data(), 1);
  var import_core_data146 = __toESM(require_core_data(), 1);
  var import_block_editor95 = __toESM(require_block_editor(), 1);
  var import_components263 = __toESM(require_components(), 1);
  var import_element420 = __toESM(require_element(), 1);
  var import_i18n350 = __toESM(require_i18n(), 1);
  var import_html_entities35 = __toESM(require_html_entities(), 1);
  var import_notices36 = __toESM(require_notices(), 1);
  var import_preferences29 = __toESM(require_preferences(), 1);
  var import_jsx_runtime655 = __toESM(require_jsx_runtime(), 1);
  function ClassicThemeContent() {
    const templateId2 = (0, import_data256.useSelect)(
      (select9) => select9(store).getCurrentTemplateId(),
      []
    );
    const [isCreateModalOpen, setIsCreateModalOpen] = (0, import_element420.useState)(false);
    const {
      onNavigateToEntityRecord,
      canCreateTemplate,
      hasGoBack,
      getEditorSettings: getEditorSettings2
    } = (0, import_data256.useSelect)((select9) => {
      const { getEditorSettings: _getEditorSettings } = select9(store);
      const editorSettings2 = _getEditorSettings();
      return {
        onNavigateToEntityRecord: editorSettings2.onNavigateToEntityRecord,
        canCreateTemplate: !!select9(import_core_data146.store).canUser("create", {
          kind: "postType",
          name: "wp_template"
        }) && editorSettings2.supportsTemplateMode,
        hasGoBack: editorSettings2.hasOwnProperty(
          "onNavigateToPreviousEntityRecord"
        ),
        getEditorSettings: _getEditorSettings
      };
    }, []);
    const { get: getPreference } = (0, import_data256.useSelect)(import_preferences29.store);
    const { createSuccessNotice } = (0, import_data256.useDispatch)(import_notices36.store);
    const { editedRecord: template2 } = (0, import_core_data146.useEntityRecord)(
      "postType",
      "wp_template",
      templateId2
    );
    const [blocks] = (0, import_core_data146.useEntityBlockEditor)("postType", "wp_template", {
      id: templateId2
    });
    if (!templateId2 && !canCreateTemplate) {
      return null;
    }
    const notificationAction = hasGoBack ? [
      {
        label: (0, import_i18n350.__)("Back"),
        onClick: () => getEditorSettings2().onNavigateToPreviousEntityRecord()
      }
    ] : void 0;
    const mayShowTemplateEditNotice = () => {
      if (!getPreference("core/edit-site", "welcomeGuideTemplate")) {
        createSuccessNotice(
          (0, import_i18n350.__)(
            "Editing template. Changes made here affect all posts and pages that use the template."
          ),
          { type: "snackbar", actions: notificationAction }
        );
      }
    };
    const templateName = template2 ? (0, import_html_entities35.decodeEntities)(template2.title) : void 0;
    const previewContent = !!blocks?.length && /* @__PURE__ */ (0, import_jsx_runtime655.jsx)(import_block_editor95.BlockPreview.Async, { children: /* @__PURE__ */ (0, import_jsx_runtime655.jsx)(import_block_editor95.BlockPreview, { blocks }) });
    return /* @__PURE__ */ (0, import_jsx_runtime655.jsxs)(import_jsx_runtime655.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime655.jsx)(
        import_components263.PanelBody,
        {
          title: template2 ? (0, import_i18n350.sprintf)(
            /* translators: %s: template name */
            (0, import_i18n350.__)("Template: %s"),
            templateName
          ) : (0, import_i18n350.__)("Template"),
          initialOpen: false,
          children: /* @__PURE__ */ (0, import_jsx_runtime655.jsxs)(import_components263.__experimentalVStack, { children: [
            !templateId2 && /* @__PURE__ */ (0, import_jsx_runtime655.jsx)(import_components263.__experimentalText, { children: (0, import_i18n350.__)(
              "This page uses a classic template. To edit this template with blocks, create a block template."
            ) }),
            template2 && previewContent && /* @__PURE__ */ (0, import_jsx_runtime655.jsx)("div", { className: "editor-template-actions-panel__preview", children: previewContent }),
            /* @__PURE__ */ (0, import_jsx_runtime655.jsxs)(import_components263.__experimentalHStack, { children: [
              template2 && onNavigateToEntityRecord && /* @__PURE__ */ (0, import_jsx_runtime655.jsx)(
                import_components263.Button,
                {
                  className: "editor-template-actions-panel__action",
                  __next40pxDefaultSize: true,
                  variant: "secondary",
                  onClick: () => {
                    onNavigateToEntityRecord({
                      postId: template2.id,
                      postType: "wp_template"
                    });
                    mayShowTemplateEditNotice();
                  },
                  children: (0, import_i18n350.__)("Edit")
                }
              ),
              canCreateTemplate && /* @__PURE__ */ (0, import_jsx_runtime655.jsx)(
                import_components263.Button,
                {
                  className: "editor-template-actions-panel__action",
                  __next40pxDefaultSize: true,
                  variant: "secondary",
                  onClick: () => setIsCreateModalOpen(true),
                  children: !templateId2 ? (0, import_i18n350.__)("Create block template") : (0, import_i18n350.__)("Create new")
                }
              )
            ] })
          ] })
        }
      ),
      isCreateModalOpen && /* @__PURE__ */ (0, import_jsx_runtime655.jsx)(
        CreateNewTemplateModal,
        {
          onClose: () => setIsCreateModalOpen(false)
        }
      )
    ] });
  }

  // packages/editor/build-module/components/template-actions-panel/index.mjs
  var import_jsx_runtime656 = __toESM(require_jsx_runtime(), 1);
  function TemplateActionsPanel() {
    const mode = usePostTemplatePanelMode();
    if (mode === "classic") {
      return /* @__PURE__ */ (0, import_jsx_runtime656.jsx)(ClassicThemeContent, {});
    }
    if (mode === "block-theme") {
      return /* @__PURE__ */ (0, import_jsx_runtime656.jsx)(TemplateActionsPanelContent, {});
    }
    return null;
  }

  // packages/editor/build-module/components/template-content-panel/index.mjs
  var import_data257 = __toESM(require_data(), 1);
  var import_block_editor96 = __toESM(require_block_editor(), 1);
  var import_components264 = __toESM(require_components(), 1);
  var import_i18n351 = __toESM(require_i18n(), 1);
  var import_jsx_runtime657 = __toESM(require_jsx_runtime(), 1);
  var { BlockQuickNavigation } = unlock(import_block_editor96.privateApis);
  var TEMPLATE_PART_BLOCK = "core/template-part";
  function TemplateContentPanelInner({ postType: postType2 }) {
    const postContentBlockTypes = usePostContentBlockTypes();
    const clientIds = (0, import_data257.useSelect)(
      (select9) => {
        const { getPostBlocksByName: getPostBlocksByName2 } = unlock(select9(store));
        return getPostBlocksByName2(
          TEMPLATE_POST_TYPE === postType2 ? TEMPLATE_PART_BLOCK : postContentBlockTypes
        );
      },
      [postType2, postContentBlockTypes]
    );
    const { enableComplementaryArea: enableComplementaryArea2 } = (0, import_data257.useDispatch)(store3);
    if (clientIds.length === 0) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime657.jsx)(import_components264.PanelBody, { title: (0, import_i18n351.__)("Content"), children: /* @__PURE__ */ (0, import_jsx_runtime657.jsx)(
      BlockQuickNavigation,
      {
        clientIds,
        onSelect: () => {
          enableComplementaryArea2("core", "edit-post/document");
        }
      }
    ) });
  }
  function TemplateContentPanel() {
    const { postType: postType2, renderingMode: renderingMode2 } = (0, import_data257.useSelect)((select9) => {
      const { getCurrentPostType: getCurrentPostType2, getRenderingMode: getRenderingMode2 } = unlock(
        select9(store)
      );
      return {
        postType: getCurrentPostType2(),
        renderingMode: getRenderingMode2()
      };
    }, []);
    if (renderingMode2 === "post-only" && postType2 !== TEMPLATE_POST_TYPE) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime657.jsx)(TemplateContentPanelInner, { postType: postType2 });
  }

  // packages/editor/build-module/components/template-part-content-panel/index.mjs
  var import_data258 = __toESM(require_data(), 1);
  var import_element421 = __toESM(require_element(), 1);
  var import_blocks37 = __toESM(require_blocks(), 1);
  var import_block_editor97 = __toESM(require_block_editor(), 1);
  var import_components265 = __toESM(require_components(), 1);
  var import_i18n352 = __toESM(require_i18n(), 1);
  var import_jsx_runtime658 = __toESM(require_jsx_runtime(), 1);
  var { BlockQuickNavigation: BlockQuickNavigation2 } = unlock(import_block_editor97.privateApis);
  function TemplatePartContentPanelInner() {
    const blockTypes = (0, import_data258.useSelect)((select9) => {
      const { getBlockTypes: getBlockTypes6 } = select9(import_blocks37.store);
      return getBlockTypes6();
    }, []);
    const themeBlockNames = (0, import_element421.useMemo)(() => {
      return blockTypes.filter((blockType) => {
        return blockType.category === "theme";
      }).map(({ name: name2 }) => name2);
    }, [blockTypes]);
    const themeBlocks = (0, import_data258.useSelect)(
      (select9) => {
        const { getBlocksByName } = select9(import_block_editor97.store);
        return getBlocksByName(themeBlockNames);
      },
      [themeBlockNames]
    );
    if (themeBlocks.length === 0) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime658.jsx)(import_components265.PanelBody, { title: (0, import_i18n352.__)("Content"), children: /* @__PURE__ */ (0, import_jsx_runtime658.jsx)(BlockQuickNavigation2, { clientIds: themeBlocks }) });
  }
  function TemplatePartContentPanel() {
    const postType2 = (0, import_data258.useSelect)((select9) => {
      const { getCurrentPostType: getCurrentPostType2 } = select9(store);
      return getCurrentPostType2();
    }, []);
    if (postType2 !== TEMPLATE_PART_POST_TYPE) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime658.jsx)(TemplatePartContentPanelInner, {});
  }

  // packages/editor/build-module/components/revision-block-diff/index.mjs
  var import_block_editor98 = __toESM(require_block_editor(), 1);
  var import_data259 = __toESM(require_data(), 1);
  var import_i18n353 = __toESM(require_i18n(), 1);
  var import_jsx_runtime659 = __toESM(require_jsx_runtime(), 1);
  function RevisionBlockDiffPanel() {
    const { block } = (0, import_data259.useSelect)((select9) => {
      const { getSelectedBlock: getSelectedBlock2 } = select9(import_block_editor98.store);
      return {
        block: getSelectedBlock2()
      };
    }, []);
    if (!block) {
      return null;
    }
    const changedAttributes = block.attributes?.__revisionDiffStatus?.changedAttributes;
    return /* @__PURE__ */ (0, import_jsx_runtime659.jsx)(
      RevisionDiffPanel,
      {
        title: (0, import_i18n353.__)("Changed attributes"),
        entries: changedAttributes,
        initialOpen: true
      }
    );
  }

  // packages/editor/build-module/components/provider/use-auto-switch-editor-sidebars.mjs
  var import_data260 = __toESM(require_data(), 1);
  var import_element422 = __toESM(require_element(), 1);
  var import_block_editor99 = __toESM(require_block_editor(), 1);
  var import_preferences30 = __toESM(require_preferences(), 1);
  function useAutoSwitchEditorSidebars() {
    const { hasBlockSelection } = (0, import_data260.useSelect)((select9) => {
      return {
        hasBlockSelection: !!select9(import_block_editor99.store).getBlockSelectionStart()
      };
    }, []);
    const { getActiveComplementaryArea: getActiveComplementaryArea2 } = (0, import_data260.useSelect)(store3);
    const { enableComplementaryArea: enableComplementaryArea2 } = (0, import_data260.useDispatch)(store3);
    const { get: getPreference } = (0, import_data260.useSelect)(import_preferences30.store);
    (0, import_element422.useEffect)(() => {
      const activeGeneralSidebar = getActiveComplementaryArea2("core");
      const isEditorSidebarOpened = [
        "edit-post/document",
        "edit-post/block"
      ].includes(activeGeneralSidebar);
      const isDistractionFree = getPreference("core", "distractionFree");
      if (!isEditorSidebarOpened || isDistractionFree) {
        return;
      }
      if (hasBlockSelection) {
        enableComplementaryArea2("core", "edit-post/block");
      } else {
        enableComplementaryArea2("core", "edit-post/document");
      }
    }, [
      hasBlockSelection,
      getActiveComplementaryArea2,
      enableComplementaryArea2,
      getPreference
    ]);
  }
  var use_auto_switch_editor_sidebars_default = useAutoSwitchEditorSidebars;

  // packages/editor/build-module/components/sidebar/index.mjs
  var import_jsx_runtime660 = __toESM(require_jsx_runtime(), 1);
  var SIDEBAR_ACTIVE_BY_DEFAULT = true;
  function Sidebar({ extraPanels, onActionPerformed }) {
    use_auto_switch_editor_sidebars_default();
    const { tabName, keyboardShortcut: keyboardShortcut2, isRevisionsMode: isRevisionsMode2 } = (0, import_data261.useSelect)(
      (select9) => {
        const shortcut = select9(
          import_keyboard_shortcuts11.store
        ).getShortcutRepresentation("core/editor/toggle-sidebar");
        const sidebar = select9(store3).getActiveComplementaryArea("core");
        const _isEditorSidebarOpened = [
          sidebars.block,
          sidebars.document
        ].includes(sidebar);
        let _tabName = sidebar;
        if (!_isEditorSidebarOpened) {
          _tabName = select9(import_block_editor100.store).getBlockSelectionStart() ? sidebars.block : sidebars.document;
        }
        return {
          tabName: _tabName,
          keyboardShortcut: shortcut,
          isRevisionsMode: unlock(
            select9(store)
          ).isRevisionsMode()
        };
      },
      []
    );
    const { enableComplementaryArea: enableComplementaryArea2 } = (0, import_data261.useDispatch)(store3);
    function onTabSelect(newSelectedTabId) {
      enableComplementaryArea2("core", newSelectedTabId);
    }
    let tabContent;
    if (isRevisionsMode2) {
      tabContent = /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(PostRevisionSummary, {});
    } else {
      const isDataFormInspectorEnabled = window?.__experimentalDataFormInspector;
      tabContent = /* @__PURE__ */ (0, import_jsx_runtime660.jsxs)(import_jsx_runtime660.Fragment, { children: [
        isDataFormInspectorEnabled ? /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(
          DataFormPostSummary,
          {
            onActionPerformed
          }
        ) : /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(PostSummary, { onActionPerformed }),
        /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(plugin_document_setting_panel_default.Slot, {}),
        /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(TemplateContentPanel, {}),
        isDataFormInspectorEnabled && /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(TemplateActionsPanel, {}),
        /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(TemplatePartContentPanel, {}),
        /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(PostTransformPanel, {}),
        /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(PostTaxonomies2, {}),
        /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(PatternOverridesPanel, {}),
        extraPanels
      ] });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime660.jsxs)(
      PluginSidebar,
      {
        identifier: tabName,
        header: /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(SidebarHeader, {}),
        closeLabel: (0, import_i18n354.__)("Close Settings"),
        className: "editor-sidebar__panel",
        headerClassName: "editor-sidebar__panel-tabs",
        title: (
          /* translators: button label text should, if possible, be under 16 characters. */
          (0, import_i18n354._x)("Settings", "panel button label")
        ),
        toggleShortcut: keyboardShortcut2,
        icon: (0, import_i18n354.isRTL)() ? drawer_left_default : drawer_right_default,
        isActiveByDefault: SIDEBAR_ACTIVE_BY_DEFAULT,
        render: /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(tabs_exports.Root, { value: tabName, onValueChange: onTabSelect }),
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(tabs_exports.Panel, { value: sidebars.document, tabIndex: -1, children: tabContent }),
          /* @__PURE__ */ (0, import_jsx_runtime660.jsxs)(tabs_exports.Panel, { value: sidebars.block, tabIndex: -1, children: [
            /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(import_block_editor100.BlockInspector, {}),
            isRevisionsMode2 && /* @__PURE__ */ (0, import_jsx_runtime660.jsx)(RevisionBlockDiffPanel, {})
          ] })
        ]
      }
    );
  }
  var sidebar_default2 = Sidebar;

  // packages/editor/build-module/components/collab-sidebar/index.mjs
  var import_i18n364 = __toESM(require_i18n(), 1);
  var import_data270 = __toESM(require_data(), 1);
  var import_element433 = __toESM(require_element(), 1);
  var import_compose100 = __toESM(require_compose(), 1);
  var import_keyboard_shortcuts13 = __toESM(require_keyboard_shortcuts(), 1);
  var import_block_editor109 = __toESM(require_block_editor(), 1);
  var import_preferences31 = __toESM(require_preferences(), 1);

  // packages/editor/build-module/components/collab-sidebar/notes.mjs
  var import_element430 = __toESM(require_element(), 1);
  var import_i18n361 = __toESM(require_i18n(), 1);
  var import_data267 = __toESM(require_data(), 1);
  var import_block_editor105 = __toESM(require_block_editor(), 1);

  // packages/editor/build-module/components/collab-sidebar/note-thread.mjs
  var import_element428 = __toESM(require_element(), 1);
  var import_components269 = __toESM(require_components(), 1);
  var import_compose99 = __toESM(require_compose(), 1);
  var import_i18n359 = __toESM(require_i18n(), 1);
  var import_data265 = __toESM(require_data(), 1);
  var import_dom40 = __toESM(require_dom(), 1);
  var import_block_editor103 = __toESM(require_block_editor(), 1);

  // packages/editor/build-module/components/collab-sidebar/add-note.mjs
  var import_i18n357 = __toESM(require_i18n(), 1);
  var import_element426 = __toESM(require_element(), 1);
  var import_compose98 = __toESM(require_compose(), 1);
  var import_data264 = __toESM(require_data(), 1);
  var import_block_editor102 = __toESM(require_block_editor(), 1);

  // packages/editor/build-module/components/collab-sidebar/note-byline.mjs
  var import_i18n355 = __toESM(require_i18n(), 1);
  var import_date25 = __toESM(require_date(), 1);
  var import_core_data147 = __toESM(require_core_data(), 1);
  var import_data262 = __toESM(require_data(), 1);
  var import_block_editor101 = __toESM(require_block_editor(), 1);
  var import_jsx_runtime661 = __toESM(require_jsx_runtime(), 1);
  function NoteByline({ avatar, name: name2, date, userId }) {
    const hasAvatar = !!avatar;
    const dateSettings = (0, import_date25.getSettings)();
    const {
      currentUserAvatar,
      currentUserName,
      currentUserId,
      dateFormat = dateSettings.formats.date
    } = (0, import_data262.useSelect)(
      (select9) => {
        const { canUser, getCurrentUser, getEntityRecord } = select9(import_core_data147.store);
        const siteSettings = canUser("read", {
          kind: "root",
          name: "site"
        }) ? getEntityRecord("root", "site") : void 0;
        if (hasAvatar) {
          return {
            dateFormat: siteSettings?.date_format
          };
        }
        const { getSettings: getSettings12 } = select9(import_block_editor101.store);
        const { __experimentalDiscussionSettings } = getSettings12();
        const defaultAvatar = __experimentalDiscussionSettings?.avatarURL;
        const userData = getCurrentUser();
        return {
          currentUserAvatar: userData?.avatar_urls?.[48] ?? defaultAvatar,
          currentUserName: userData?.name,
          currentUserId: userData?.id,
          dateFormat: siteSettings?.date_format
        };
      },
      [hasAvatar]
    );
    const commentDate = (0, import_date25.getDate)(date);
    const commentDateTime = (0, import_date25.dateI18n)("c", commentDate);
    const shouldShowHumanTimeDiff = Math.floor((/* @__PURE__ */ new Date() - commentDate) / (1e3 * 60 * 60 * 24)) < 30;
    const commentDateText = shouldShowHumanTimeDiff ? (0, import_date25.humanTimeDiff)(commentDate) : (0, import_date25.dateI18n)(dateFormat, commentDate);
    const tooltipText = (0, import_date25.dateI18n)(
      // translators: Use a non-breaking space between 'g:i' and 'a' if appropriate.
      (0, import_i18n355._x)("F j, Y g:i\xA0a", "Note date full date format"),
      date
    );
    return /* @__PURE__ */ (0, import_jsx_runtime661.jsxs)(import_jsx_runtime661.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime661.jsx)(
        "img",
        {
          src: avatar || currentUserAvatar,
          className: "editor-collab-sidebar-panel__user-avatar",
          alt: (0, import_i18n355.__)("User avatar"),
          width: 32,
          height: 32,
          style: {
            borderColor: getAvatarBorderColor(
              userId ?? currentUserId
            )
          }
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime661.jsxs)(
        Stack,
        {
          direction: "column",
          className: "editor-collab-sidebar-panel__user-info",
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime661.jsx)("span", { className: "editor-collab-sidebar-panel__user-name", children: name2 ?? currentUserName }),
            date && /* @__PURE__ */ (0, import_jsx_runtime661.jsxs)(tooltip_exports.Root, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime661.jsx)(
                tooltip_exports.Trigger,
                {
                  render: /* @__PURE__ */ (0, import_jsx_runtime661.jsx)(
                    "time",
                    {
                      dateTime: commentDateTime,
                      className: "editor-collab-sidebar-panel__user-time",
                      children: commentDateText
                    }
                  )
                }
              ),
              /* @__PURE__ */ (0, import_jsx_runtime661.jsx)(tooltip_exports.Popup, { children: tooltipText })
            ] })
          ]
        }
      )
    ] });
  }

  // packages/editor/build-module/components/collab-sidebar/note-card.mjs
  var import_jsx_runtime662 = __toESM(require_jsx_runtime(), 1);
  function NoteCard({ note, actions: actions2, className, children, ...props }) {
    return /* @__PURE__ */ (0, import_jsx_runtime662.jsxs)(Stack, { direction: "column", gap: "sm", className, ...props, children: [
      /* @__PURE__ */ (0, import_jsx_runtime662.jsxs)(Stack, { direction: "row", align: "center", justify: "flex-start", gap: "md", children: [
        /* @__PURE__ */ (0, import_jsx_runtime662.jsx)(
          NoteByline,
          {
            avatar: note?.author_avatar_urls?.[48],
            name: note?.author_name,
            date: note?.date,
            userId: note?.author
          }
        ),
        actions2 && /* @__PURE__ */ (0, import_jsx_runtime662.jsx)(
          Stack,
          {
            direction: "row",
            align: "center",
            className: "editor-collab-sidebar-panel__note-actions",
            onClick: (event) => event.stopPropagation(),
            children: actions2
          }
        )
      ] }),
      children
    ] });
  }

  // packages/editor/build-module/components/collab-sidebar/note-form.mjs
  var import_element425 = __toESM(require_element(), 1);
  var import_components267 = __toESM(require_components(), 1);
  var import_i18n356 = __toESM(require_i18n(), 1);
  var import_compose97 = __toESM(require_compose(), 1);
  var import_keycodes20 = __toESM(require_keycodes(), 1);
  var import_dom39 = __toESM(require_dom(), 1);

  // packages/editor/build-module/components/collab-sidebar/note-mention-completer.mjs
  var import_element423 = __toESM(require_element(), 1);
  var import_data263 = __toESM(require_data(), 1);
  var import_core_data148 = __toESM(require_core_data(), 1);
  var import_jsx_runtime663 = __toESM(require_jsx_runtime(), 1);
  var noteMentionCompleter = {
    name: "note-mentions",
    className: "editor-autocompleters__user editor-collab-sidebar-panel__mention-suggestion",
    triggerPrefix: "@",
    useItems(filterValue) {
      const users = (0, import_data263.useSelect)(
        (select9) => {
          const { getUsers } = select9(import_core_data148.store);
          return getUsers({
            context: "view",
            search: filterValue
          });
        },
        [filterValue]
      );
      const options = (0, import_element423.useMemo)(
        () => users ? users.map((user) => ({
          key: `note-mention-${user.slug}`,
          value: user,
          label: getUserLabel(user)
        })) : [],
        [users]
      );
      return [options];
    },
    getOptionCompletion(user) {
      return {
        action: "insert-at-caret",
        value: /* @__PURE__ */ (0, import_jsx_runtime663.jsx)("span", { className: `wp-note-mention user-${user.id}`, children: "@" + user.name })
      };
    }
  };
  var note_mention_completer_default = noteMentionCompleter;

  // packages/editor/build-module/components/collab-sidebar/rich-text-control/index.mjs
  var import_components266 = __toESM(require_components(), 1);
  var import_compose96 = __toESM(require_compose(), 1);
  var import_element424 = __toESM(require_element(), 1);
  var import_keycodes19 = __toESM(require_keycodes(), 1);
  var import_rich_text8 = __toESM(require_rich_text(), 1);

  // packages/editor/build-module/components/collab-sidebar/rich-text-control/utils.mjs
  var EMPTY_ARRAY18 = [];
  function getAllowedFormats({
    allowedFormats,
    disableFormats
  }) {
    if (disableFormats) {
      return EMPTY_ARRAY18;
    }
    return allowedFormats;
  }

  // packages/editor/build-module/components/collab-sidebar/rich-text-control/format-edit.mjs
  var import_rich_text7 = __toESM(require_rich_text(), 1);
  var import_jsx_runtime664 = __toESM(require_jsx_runtime(), 1);
  var import_react77 = __toESM(require_react(), 1);
  var EMPTY_CONTEXT = {};
  function Edit({
    onChange,
    onFocus,
    value,
    forwardedRef,
    settings,
    isVisible: isVisible2
  }) {
    const { name: name2, edit: EditFunction } = settings;
    if (!EditFunction) {
      return null;
    }
    const activeFormat = (0, import_rich_text7.getActiveFormat)(value, name2);
    const isActive = activeFormat !== void 0;
    const activeObject = (0, import_rich_text7.getActiveObject)(value);
    const isObjectActive = activeObject !== void 0 && activeObject.type === name2;
    return /* @__PURE__ */ (0, import_jsx_runtime664.jsx)(
      EditFunction,
      {
        isActive,
        isVisible: isVisible2,
        activeAttributes: isActive ? activeFormat.attributes || {} : {},
        isObjectActive,
        activeObjectAttributes: isObjectActive ? activeObject.attributes || {} : {},
        value,
        onChange,
        onFocus,
        contentRef: forwardedRef,
        context: EMPTY_CONTEXT
      },
      name2
    );
  }
  function FormatEdit({
    formatTypes,
    ...props
  }) {
    return formatTypes.map((settings) => /* @__PURE__ */ (0, import_react77.createElement)(Edit, { settings, ...props, key: settings.name }));
  }

  // packages/editor/build-module/components/collab-sidebar/rich-text-control/index.mjs
  var import_jsx_runtime665 = __toESM(require_jsx_runtime(), 1);
  var { ValidatedContentEditableControl: RichTextControlShell } = unlock(
    import_components266.privateApis
  );
  var {
    useRichText: useRichText2,
    KeyboardShortcutContext,
    InputEventContext,
    shortcutsListener,
    inputEventsListener
  } = unlock(import_rich_text8.privateApis);
  var EMPTY_COMPLETERS = [];
  function RichTextControl({
    label,
    value: attrValue,
    onChange,
    placeholder,
    id,
    clientId,
    className,
    hideLabelFromVision,
    help,
    disabled: disabled2,
    required,
    markWhenOptional,
    customValidity,
    allowedFormats,
    disableFormats,
    withoutInteractiveFormatting,
    preserveWhiteSpace,
    disableLineBreaks,
    focusOnMount,
    completers = EMPTY_COMPLETERS
  }) {
    const [selection, setSelection] = (0, import_element424.useState)({
      start: void 0,
      end: void 0
    });
    const [isSelected2, setIsSelected] = (0, import_element424.useState)(false);
    const anchorRef = (0, import_element424.useRef)(void 0);
    const inputEvents = (0, import_element424.useRef)(/* @__PURE__ */ new Set());
    const keyboardShortcuts = (0, import_element424.useRef)(
      /* @__PURE__ */ new Set()
    );
    const focusOutside = (0, import_compose96.__experimentalUseFocusOutside)(() => setIsSelected(false));
    const adjustedAllowedFormats = getAllowedFormats({
      allowedFormats,
      disableFormats
    });
    const {
      value,
      onChange: onRichTextChange,
      ref: richTextRef,
      formatTypes,
      getValue: getValue3
    } = useRichText2({
      value: attrValue,
      onChange,
      selectionStart: selection.start,
      selectionEnd: selection.end,
      onSelectionChange: (start2, end) => setSelection({ start: start2, end }),
      __unstableIsSelected: isSelected2,
      preserveWhiteSpace: !!preserveWhiteSpace,
      placeholder,
      __unstableDisableFormats: disableFormats,
      allowedFormats: adjustedAllowedFormats,
      withoutInteractiveFormatting,
      __unstableFormatTypeHandlerContext: (0, import_element424.useMemo)(
        () => ({
          richTextIdentifier: id,
          blockClientId: clientId
        }),
        [id, clientId]
      )
    });
    function onFocus() {
      anchorRef.current?.focus();
    }
    const eventListenersPropsRef = (0, import_element424.useRef)({
      keyboardShortcuts,
      inputEvents
    });
    const inputRulePropsRef = (0, import_element424.useRef)({
      formatTypes,
      getValue: getValue3,
      onChange: onRichTextChange
    });
    (0, import_element424.useInsertionEffect)(() => {
      inputRulePropsRef.current = {
        formatTypes,
        getValue: getValue3,
        onChange: onRichTextChange
      };
    });
    const enterRef = (0, import_compose96.useRefEffect)(
      (element) => {
        if (disabled2) {
          return;
        }
        const onKeyDown = (0, import_keycodes19.withIgnoreIMEEvents)((event) => {
          if (event.key !== "Enter" || event.defaultPrevented || event.metaKey || event.ctrlKey) {
            return;
          }
          event.preventDefault();
          if (disableLineBreaks) {
            return;
          }
          const { getValue: getCurrentValue2, onChange: handleChange } = inputRulePropsRef.current;
          const current = getCurrentValue2();
          handleChange(
            (0, import_rich_text8.insert)(
              current,
              "\n",
              current.start ?? current.text.length,
              current.end ?? current.text.length
            )
          );
        });
        element.addEventListener("keydown", onKeyDown);
        return () => element.removeEventListener("keydown", onKeyDown);
      },
      [disableLineBreaks, disabled2]
    );
    const eventListenersRef = (0, import_compose96.useRefEffect)(
      (element) => {
        if (!isSelected2) {
          return;
        }
        const cleanupShortcuts = shortcutsListener(
          eventListenersPropsRef
        )(element);
        const cleanupInputEvents = inputEventsListener(
          eventListenersPropsRef
        )(element);
        function onFormatInput(event) {
          if (event.inputType !== "insertText" && event.type !== "compositionend") {
            return;
          }
          const {
            formatTypes: types,
            getValue: getCurrentValue2,
            onChange: handleChange
          } = inputRulePropsRef.current;
          const current = getCurrentValue2();
          const transformed = types.reduce(
            (accumulator, {
              __unstableInputRule
            }) => __unstableInputRule ? __unstableInputRule(accumulator) : accumulator,
            current
          );
          if (transformed !== current) {
            handleChange({
              ...transformed,
              activeFormats: current.activeFormats
            });
          }
        }
        element.addEventListener("input", onFormatInput);
        element.addEventListener("compositionend", onFormatInput);
        return () => {
          cleanupShortcuts();
          cleanupInputEvents();
          element.removeEventListener("input", onFormatInput);
          element.removeEventListener("compositionend", onFormatInput);
        };
      },
      [isSelected2]
    );
    const { ref: autocompleteRef, ...autocompleteProps } = (0, import_components266.__unstableUseAutocompleteProps)(
      {
        completers,
        record: value,
        onChange: onRichTextChange,
        // This control's completers insert their completion into the value;
        // none replace the whole value, so the required `onReplace` is a
        // no-op here.
        onReplace: () => {
        }
      }
    );
    const focusOnMountRef = (0, import_compose96.useRefEffect)(
      (element) => {
        if (focusOnMount && !disabled2) {
          element.focus();
        }
      },
      [focusOnMount, disabled2]
    );
    const editableRef = (0, import_compose96.useMergeRefs)([
      richTextRef,
      anchorRef,
      eventListenersRef,
      enterRef,
      focusOnMountRef,
      autocompleteRef
    ]);
    return (
      // Focus boundary for the field's selection: `onFocus` selects on entry;
      // the spread `useFocusOutside` handlers deselect once focus leaves.
      /* @__PURE__ */ (0, import_jsx_runtime665.jsx)(
        "div",
        {
          ...focusOutside,
          onFocus: (event) => {
            setIsSelected(true);
            focusOutside.onFocus(event);
          },
          children: /* @__PURE__ */ (0, import_jsx_runtime665.jsxs)(import_components266.SlotFillProvider, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime665.jsx)(
              RichTextControlShell,
              {
                label,
                id,
                className: clsx_default("editor-rich-text-control", className),
                placeholder,
                hideLabelFromVision,
                help,
                disabled: disabled2,
                required,
                markWhenOptional,
                customValidity,
                value: value.text,
                "aria-multiline": !disableLineBreaks,
                ...autocompleteProps,
                ref: editableRef
              }
            ),
            isSelected2 && !disabled2 && /* @__PURE__ */ (0, import_jsx_runtime665.jsx)(
              KeyboardShortcutContext.Provider,
              {
                value: keyboardShortcuts,
                children: /* @__PURE__ */ (0, import_jsx_runtime665.jsx)(InputEventContext.Provider, { value: inputEvents, children: /* @__PURE__ */ (0, import_jsx_runtime665.jsx)(
                  FormatEdit,
                  {
                    value,
                    onChange: onRichTextChange,
                    onFocus,
                    formatTypes,
                    forwardedRef: anchorRef,
                    isVisible: true
                  }
                ) })
              }
            )
          ] })
        }
      )
    );
  }

  // packages/editor/build-module/components/collab-sidebar/note-form.mjs
  var import_jsx_runtime666 = __toESM(require_jsx_runtime(), 1);
  var ALLOWED_NOTE_FORMATS = [
    "core/bold",
    "core/italic",
    "core/link",
    "core/code"
  ];
  var NOTE_COMPLETERS = [note_mention_completer_default];
  function NoteForm({ onSubmit, onCancel, note, labels }) {
    const [inputComment, setInputComment] = (0, import_element425.useState)(
      note?.content?.raw ?? ""
    );
    const [isSubmitting, setIsSubmitting] = (0, import_element425.useState)(false);
    const inputId = (0, import_compose97.useInstanceId)(NoteForm, "comment-input");
    const trimmedPlainText = sanitizeNoteContent((0, import_dom39.__unstableStripHTML)(inputComment));
    const isDisabled = isSubmitting || inputComment === note?.content?.raw || !trimmedPlainText.length;
    async function submit() {
      if (isDisabled) {
        return;
      }
      setIsSubmitting(true);
      const submitted = inputComment;
      const result = await onSubmit(submitted);
      if (result) {
        setInputComment(
          (current) => current === submitted ? "" : current
        );
      }
      setIsSubmitting(false);
    }
    return /* @__PURE__ */ (0, import_jsx_runtime666.jsxs)(
      Stack,
      {
        className: "editor-collab-sidebar-panel__note-form",
        direction: "column",
        gap: "lg",
        render: /* @__PURE__ */ (0, import_jsx_runtime666.jsx)("form", {}),
        onSubmit: (event) => {
          event.preventDefault();
          submit();
        },
        onKeyDown: (event) => {
          if (import_keycodes20.isKeyboardEvent.primary(event, "Enter")) {
            event.preventDefault();
            submit();
            return;
          }
          if (event.key === "Escape" && !event.defaultPrevented) {
            event.preventDefault();
            onCancel(event);
          }
        },
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime666.jsx)(
            RichTextControl,
            {
              id: inputId,
              label: labels?.input ?? (0, import_i18n356.__)("Note"),
              hideLabelFromVision: true,
              value: inputComment,
              onChange: setInputComment,
              placeholder: labels?.placeholder,
              allowedFormats: ALLOWED_NOTE_FORMATS,
              completers: NOTE_COMPLETERS,
              focusOnMount: !!note
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime666.jsxs)(
            Stack,
            {
              direction: "row",
              align: "center",
              justify: "flex-end",
              gap: "sm",
              wrap: "wrap",
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime666.jsx)(
                  import_components267.Button,
                  {
                    size: "compact",
                    variant: "tertiary",
                    onClick: onCancel,
                    shortcut: "Escape",
                    children: /* @__PURE__ */ (0, import_jsx_runtime666.jsx)(import_components267.__experimentalTruncate, { children: (0, import_i18n356.__)("Cancel") })
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime666.jsx)(
                  import_components267.Button,
                  {
                    size: "compact",
                    accessibleWhenDisabled: true,
                    variant: "primary",
                    type: "submit",
                    disabled: isDisabled,
                    shortcut: import_keycodes20.displayShortcut.primary("Enter"),
                    children: /* @__PURE__ */ (0, import_jsx_runtime666.jsx)(import_components267.__experimentalTruncate, { children: labels?.submit ?? (0, import_i18n356.__)("Add note") })
                  }
                )
              ]
            }
          )
        ]
      }
    );
  }

  // packages/editor/build-module/components/collab-sidebar/floating-container.mjs
  var import_jsx_runtime667 = __toESM(require_jsx_runtime(), 1);
  function FloatingContainer({
    floating,
    className,
    style,
    children,
    ...props
  }) {
    const isFloating = !!floating;
    return /* @__PURE__ */ (0, import_jsx_runtime667.jsx)(
      Stack,
      {
        direction: "column",
        className: clsx_default(className, { "is-floating": isFloating }),
        ref: isFloating ? floating.ref : void 0,
        style: isFloating ? { top: floating.y, ...style } : style,
        ...props,
        children
      }
    );
  }

  // packages/editor/build-module/components/collab-sidebar/add-note.mjs
  var import_jsx_runtime668 = __toESM(require_jsx_runtime(), 1);
  var { useBlockElement } = unlock(import_block_editor102.privateApis);
  function AddNote({ onSubmit, sidebarRef, floating }) {
    const { clientId } = (0, import_data264.useSelect)((select9) => {
      const { getSelectedBlockClientId: getSelectedBlockClientId2 } = select9(import_block_editor102.store);
      return {
        clientId: getSelectedBlockClientId2()
      };
    }, []);
    const selectedNote2 = (0, import_data264.useSelect)(
      (select9) => unlock(select9(store)).getSelectedNote(),
      []
    );
    const blockElement = useBlockElement(clientId);
    const { toggleBlockSpotlight } = unlock((0, import_data264.useDispatch)(import_block_editor102.store));
    const { selectNote: selectNote2 } = unlock((0, import_data264.useDispatch)(store));
    const { getSelectedNote: getSelectedNote2 } = unlock((0, import_data264.useSelect)(store));
    const isSubmittingRef = (0, import_element426.useRef)(false);
    const focusOutside = (0, import_compose98.__experimentalUseFocusOutside)((event) => {
      if (event.relatedTarget?.closest(
        ".editor-collab-sidebar-panel__add-note"
      )) {
        return;
      }
      if (isSubmittingRef.current) {
        return;
      }
      if (getSelectedNote2() === "new") {
        toggleBlockSpotlight(clientId, false);
        selectNote2(void 0);
      }
    });
    const unselectNote = () => {
      selectNote2(void 0);
      blockElement?.focus();
      toggleBlockSpotlight(clientId, false);
    };
    if (selectedNote2 !== "new" || !clientId) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime668.jsx)(
      FloatingContainer,
      {
        floating,
        className: "editor-collab-sidebar-panel__add-note is-selected",
        gap: "md",
        tabIndex: 0,
        "aria-label": (0, import_i18n357.__)("New note"),
        role: "treeitem",
        style: floating ? { opacity: !floating.y ? 0 : void 0 } : void 0,
        ...focusOutside,
        children: /* @__PURE__ */ (0, import_jsx_runtime668.jsx)(NoteCard, { children: /* @__PURE__ */ (0, import_jsx_runtime668.jsx)(
          NoteForm,
          {
            onSubmit: async (inputComment) => {
              isSubmittingRef.current = true;
              try {
                const savedRecord = await onSubmit({
                  content: inputComment
                });
                if (savedRecord) {
                  selectNote2(savedRecord.id);
                  focusNoteThread(
                    savedRecord.id,
                    sidebarRef.current
                  );
                }
                return savedRecord;
              } finally {
                isSubmittingRef.current = false;
              }
            },
            onCancel: unselectNote,
            labels: {
              input: (0, import_i18n357.__)("New note"),
              placeholder: (0, import_i18n357.__)("Add a note or @ mention")
            }
          }
        ) })
      }
    );
  }

  // packages/editor/build-module/components/collab-sidebar/note.mjs
  var import_element427 = __toESM(require_element(), 1);
  var import_components268 = __toESM(require_components(), 1);
  var import_i18n358 = __toESM(require_i18n(), 1);
  var import_jsx_runtime669 = __toESM(require_jsx_runtime(), 1);
  function NoteActionsMenu({ items, buttonRef }) {
    return /* @__PURE__ */ (0, import_jsx_runtime669.jsxs)(
      menu_exports.Root,
      {
        modal: false,
        disabled: !items.length,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime669.jsx)(
            menu_exports.Trigger,
            {
              render: /* @__PURE__ */ (0, import_jsx_runtime669.jsx)(
                import_components268.Button,
                {
                  ref: buttonRef,
                  size: "small",
                  icon: more_vertical_default,
                  label: (0, import_i18n358.__)("Actions"),
                  disabled: !items.length,
                  accessibleWhenDisabled: true
                }
              )
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime669.jsx)(
            menu_exports.Popup,
            {
              positioner: /* @__PURE__ */ (0, import_jsx_runtime669.jsx)(menu_exports.Positioner, { side: "bottom", align: "end" }),
              children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime669.jsx)(menu_exports.Item, { onClick: item.onClick, children: /* @__PURE__ */ (0, import_jsx_runtime669.jsx)(menu_exports.ItemLabel, { children: item.title }) }, item.id))
            }
          )
        ]
      }
    );
  }
  function Note({
    note,
    parentNote,
    isSelected: isSelected2,
    onEditNote,
    onDeleteNote,
    onResolve
  }) {
    const [actionState, setActionState] = (0, import_element427.useState)(null);
    const actionButtonRef = (0, import_element427.useRef)(null);
    const commentRef = (0, import_element427.useRef)(null);
    const rawContent = note?.content?.raw;
    const [prevContent, setPrevContent] = (0, import_element427.useState)(rawContent);
    const [isExpanded, setIsExpanded] = (0, import_element427.useState)(false);
    const [isOverflowing, setIsOverflowing] = (0, import_element427.useState)(false);
    if (prevContent !== rawContent) {
      setPrevContent(rawContent);
      setIsExpanded(false);
    }
    (0, import_element427.useLayoutEffect)(() => {
      const commentElement = commentRef.current;
      if (commentElement) {
        setIsOverflowing(
          commentElement.scrollHeight > commentElement.clientHeight
        );
      }
    }, [rawContent]);
    const canResolve = note.parent === 0;
    const isResolutionNote = note.type === "note" && note.meta && (note.meta._wp_note_status === "resolved" || note.meta._wp_note_status === "reopen");
    const menuItems2 = [
      {
        id: "edit",
        title: (0, import_i18n358.__)("Edit"),
        isEligible: ({ status }) => status !== "approved",
        onClick: () => setActionState("edit")
      },
      {
        id: "reopen",
        title: (0, import_i18n358._x)("Reopen", "Reopen note"),
        isEligible: ({ status }) => status === "approved",
        onClick: () => onEditNote({ id: note.id, status: "hold" })
      },
      {
        id: "delete",
        title: (0, import_i18n358.__)("Delete"),
        isEligible: () => true,
        onClick: () => setActionState("delete")
      }
    ];
    const availableItems = parentNote?.status !== "approved" ? menuItems2.filter((item) => item.isEligible(note)) : [];
    const deleteConfirmMessage = note.parent === 0 ? (0, import_i18n358.__)(
      "Are you sure you want to delete this note? This will also delete all of this note's replies."
    ) : (0, import_i18n358.__)("Are you sure you want to delete this reply?");
    const handleCancel = () => {
      setActionState(null);
      actionButtonRef.current?.focus();
    };
    let body;
    if (actionState === "edit") {
      body = /* @__PURE__ */ (0, import_jsx_runtime669.jsx)(
        NoteForm,
        {
          onSubmit: async (value) => {
            const saved = await onEditNote({
              id: note.id,
              content: value
            });
            if (saved) {
              handleCancel();
            }
            return saved;
          },
          onCancel: handleCancel,
          note,
          labels: {
            submit: (0, import_i18n358._x)("Update", "verb"),
            input: (0, import_i18n358.sprintf)(
              // translators: %1$s: note identifier, %2$s: author name.
              (0, import_i18n358.__)("Edit note %1$s by %2$s"),
              note.id,
              note.author_name
            )
          }
        }
      );
    } else {
      let content;
      if (isResolutionNote) {
        const actionText = note.meta._wp_note_status === "resolved" ? (0, import_i18n358.__)("Marked as resolved") : (0, import_i18n358.__)("Reopened");
        const raw = note?.content?.raw;
        content = raw && typeof raw === "string" && raw.trim() !== "" ? (0, import_i18n358.sprintf)(
          // translators: %1$s: action label ("Marked as resolved" or "Reopened"); %2$s: note text.
          (0, import_i18n358.__)("%1$s: %2$s"),
          actionText,
          raw
        ) : actionText;
      } else {
        content = note?.content?.rendered;
      }
      body = /* @__PURE__ */ (0, import_jsx_runtime669.jsx)(
        "div",
        {
          ref: commentRef,
          className: clsx_default("editor-collab-sidebar-panel__note-content", {
            "editor-collab-sidebar-panel__resolution-text": isResolutionNote,
            "is-collapsed": !isExpanded
          }),
          dangerouslySetInnerHTML: { __html: content ?? "" }
        }
      );
    }
    const actions2 = isSelected2 ? /* @__PURE__ */ (0, import_jsx_runtime669.jsxs)(import_jsx_runtime669.Fragment, { children: [
      canResolve && onResolve && /* @__PURE__ */ (0, import_jsx_runtime669.jsx)(
        import_components268.Button,
        {
          label: (0, import_i18n358._x)("Resolve", "Mark note as resolved"),
          size: "small",
          icon: published_default,
          disabled: note.status === "approved",
          accessibleWhenDisabled: note.status === "approved",
          onClick: onResolve
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime669.jsx)(
        NoteActionsMenu,
        {
          items: availableItems,
          buttonRef: actionButtonRef
        }
      )
    ] }) : null;
    return /* @__PURE__ */ (0, import_jsx_runtime669.jsxs)(
      NoteCard,
      {
        note,
        actions: actions2,
        role: note.parent !== 0 ? "treeitem" : void 0,
        children: [
          body,
          actionState === "delete" && /* @__PURE__ */ (0, import_jsx_runtime669.jsx)(
            import_components268.__experimentalConfirmDialog,
            {
              isOpen: true,
              onConfirm: () => {
                onDeleteNote(note);
                setActionState(null);
              },
              onCancel: handleCancel,
              confirmButtonText: (0, import_i18n358.__)("Delete"),
              children: deleteConfirmMessage
            }
          ),
          isOverflowing && "edit" !== actionState && /* @__PURE__ */ (0, import_jsx_runtime669.jsx)(
            Button5,
            {
              className: "editor-collab-sidebar-panel__show-more-button",
              variant: "unstyled",
              size: "small",
              onClick: () => setIsExpanded(!isExpanded),
              children: !isExpanded ? (0, import_i18n358.__)("Show more") : (0, import_i18n358.__)("Show less")
            }
          )
        ]
      }
    );
  }

  // packages/editor/build-module/components/collab-sidebar/note-thread.mjs
  var import_jsx_runtime670 = __toESM(require_jsx_runtime(), 1);
  var { useBlockElement: useBlockElement2 } = unlock(import_block_editor103.privateApis);
  function NoteThread({
    note,
    onEditNote,
    onAddReply,
    onDeleteNote,
    isSelected: isSelected2,
    sidebarRef,
    floating,
    onKeyDown
  }) {
    const isFloating = !!floating;
    const { toggleBlockHighlight, selectBlock: selectBlock2, toggleBlockSpotlight } = unlock(
      (0, import_data265.useDispatch)(import_block_editor103.store)
    );
    const { selectNote: selectNote2 } = unlock((0, import_data265.useDispatch)(store));
    const { getSelectedNote: getSelectedNote2 } = unlock((0, import_data265.useSelect)(store));
    const relatedBlockElement = useBlockElement2(note.blockClientId);
    const debouncedToggleBlockHighlight = (0, import_compose99.useDebounce)(
      toggleBlockHighlight,
      50
    );
    const floatingRef = (0, import_element428.useRef)(null);
    const isKeyboardTabbingRef = (0, import_element428.useRef)(false);
    const registerThread = floating?.registerThread;
    const unregisterThread = floating?.unregisterThread;
    (0, import_element428.useEffect)(() => {
      const floatingEl = floatingRef.current;
      if (floatingEl && registerThread) {
        registerThread(note.id, relatedBlockElement, floatingEl);
      }
      return () => unregisterThread?.(note.id);
    }, [relatedBlockElement, note.id, registerThread, unregisterThread]);
    (0, import_element428.useEffect)(() => {
      if (!isSelected2 || note.id === "new") {
        return;
      }
      scrollNoteThreadIntoView(note.id, sidebarRef.current);
    }, [isSelected2, floating?.y, note.id, sidebarRef]);
    const focusOutside = (0, import_compose99.__experimentalUseFocusOutside)((event) => {
      const isNoteFocused2 = event.relatedTarget?.closest(
        ".editor-collab-sidebar-panel__thread"
      );
      if (isNoteFocused2 && !isKeyboardTabbingRef.current) {
        return;
      }
      if (!isNoteFocused2) {
        debouncedToggleBlockHighlight.cancel();
        toggleBlockHighlight(note.blockClientId, false);
      }
      if (getSelectedNote2() === note.id) {
        onDeselectNote();
      }
    });
    function onMouseEnter() {
      debouncedToggleBlockHighlight(note.blockClientId, true);
    }
    function onMouseLeave() {
      debouncedToggleBlockHighlight(note.blockClientId, false);
    }
    function onFocus(event) {
      focusOutside.onFocus(event);
      debouncedToggleBlockHighlight.cancel();
      toggleBlockHighlight(note.blockClientId, true);
    }
    function onSelectNote() {
      if (isSelected2) {
        return;
      }
      selectNote2(note.id);
      focusNoteThread(note.id, sidebarRef.current);
      toggleBlockSpotlight(note.blockClientId, true);
      if (!!note.blockClientId) {
        selectBlock2(note.blockClientId, null);
      }
    }
    function onDeselectNote() {
      selectNote2(void 0);
      toggleBlockSpotlight(note.blockClientId, false);
    }
    function handleResolve() {
      onEditNote({ id: note.id, status: "approved" });
      onDeselectNote();
      if (isFloating) {
        relatedBlockElement?.focus();
      } else {
        focusNoteThread(note.id, sidebarRef.current);
      }
    }
    const allReplies = note?.reply || [];
    const lastReply = allReplies.length > 0 ? allReplies[allReplies.length - 1] : void 0;
    const restReplies = allReplies.length > 0 ? allReplies.slice(0, -1) : [];
    const noteExcerpt = getNoteExcerpt(
      (0, import_dom40.__unstableStripHTML)(note.content?.rendered),
      10
    );
    const ariaLabel = !!note.blockClientId ? (0, import_i18n359.sprintf)(
      // translators: %s: note excerpt
      (0, import_i18n359.__)("Note: %s"),
      noteExcerpt
    ) : (0, import_i18n359.sprintf)(
      // translators: %s: note excerpt
      (0, import_i18n359.__)("Original block deleted. Note: %s"),
      noteExcerpt
    );
    if (isFloating && note.id === "new") {
      return /* @__PURE__ */ (0, import_jsx_runtime670.jsx)(
        AddNote,
        {
          onSubmit: onAddReply,
          sidebarRef,
          floating: { y: floating.y, ref: floatingRef }
        }
      );
    }
    return /* @__PURE__ */ (0, import_jsx_runtime670.jsxs)(
      FloatingContainer,
      {
        floating: isFloating ? { y: floating.y, ref: floatingRef } : void 0,
        className: clsx_default("editor-collab-sidebar-panel__thread", {
          "is-selected": isSelected2
        }),
        id: `note-thread-${note.id}`,
        gap: "md",
        onClick: onSelectNote,
        onMouseEnter,
        onMouseLeave,
        ...focusOutside,
        onFocus,
        onKeyUp: (event) => {
          if (event.key === "Tab") {
            isKeyboardTabbingRef.current = false;
          }
        },
        onKeyDown: (event) => {
          if (event.key === "Tab") {
            isKeyboardTabbingRef.current = true;
          } else {
            onKeyDown(event);
          }
        },
        tabIndex: 0,
        role: "treeitem",
        "aria-label": ariaLabel,
        "aria-expanded": isSelected2,
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime670.jsx)(
            import_components269.Button,
            {
              className: "editor-collab-sidebar-panel__skip-to-note",
              variant: "secondary",
              size: "compact",
              onClick: () => {
                focusNoteThread(
                  note.id,
                  sidebarRef.current,
                  '[role="textbox"]'
                );
              },
              children: (0, import_i18n359.__)("Add new reply")
            }
          ),
          !note.blockClientId && /* @__PURE__ */ (0, import_jsx_runtime670.jsx)("p", { className: "editor-collab-sidebar-panel__deleted-block-notice", children: (0, import_i18n359.__)("Original block deleted.") }),
          /* @__PURE__ */ (0, import_jsx_runtime670.jsx)(
            Note,
            {
              note,
              isSelected: isSelected2,
              onEditNote,
              onDeleteNote,
              onResolve: handleResolve
            }
          ),
          isSelected2 && allReplies.map((reply) => /* @__PURE__ */ (0, import_jsx_runtime670.jsx)(
            Note,
            {
              note: reply,
              parentNote: note,
              isSelected: isSelected2,
              onEditNote,
              onDeleteNote
            },
            reply.id
          )),
          !isSelected2 && restReplies.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime670.jsx)(
            Stack,
            {
              direction: "row",
              align: "center",
              justify: "space-between",
              className: "editor-collab-sidebar-panel__more-reply-separator",
              children: /* @__PURE__ */ (0, import_jsx_runtime670.jsx)(
                import_components269.Button,
                {
                  size: "compact",
                  variant: "tertiary",
                  className: "editor-collab-sidebar-panel__more-reply-button",
                  onClick: (event) => {
                    event.stopPropagation();
                    onSelectNote();
                  },
                  children: (0, import_i18n359.sprintf)(
                    // translators: %s: number of replies.
                    (0, import_i18n359._n)(
                      "%s more reply",
                      "%s more replies",
                      restReplies.length
                    ),
                    restReplies.length
                  )
                }
              )
            }
          ),
          !isSelected2 && lastReply && /* @__PURE__ */ (0, import_jsx_runtime670.jsx)(
            Note,
            {
              note: lastReply,
              parentNote: note,
              isSelected: false,
              onEditNote,
              onDeleteNote
            }
          ),
          isSelected2 && /* @__PURE__ */ (0, import_jsx_runtime670.jsx)(NoteCard, { role: "treeitem", children: /* @__PURE__ */ (0, import_jsx_runtime670.jsx)(
            NoteForm,
            {
              onSubmit: (inputComment) => {
                if ("approved" === note.status) {
                  return onEditNote({
                    id: note.id,
                    status: "hold",
                    content: inputComment
                  });
                }
                return onAddReply({
                  content: inputComment,
                  parent: note.id
                });
              },
              onCancel: (event) => {
                event.stopPropagation();
                onDeselectNote();
                focusNoteThread(note.id, sidebarRef.current);
              },
              labels: {
                submit: "approved" === note.status ? (0, import_i18n359.__)("Reopen & Reply") : (0, import_i18n359.__)("Reply"),
                input: (0, import_i18n359.sprintf)(
                  // translators: %1$s: note identifier, %2$s: author name
                  (0, import_i18n359.__)("Reply to note %1$s by %2$s"),
                  note.id,
                  note.author_name
                ),
                placeholder: (0, import_i18n359.__)("Reply or @ mention")
              }
            }
          ) }),
          !!note.blockClientId && /* @__PURE__ */ (0, import_jsx_runtime670.jsx)(
            import_components269.Button,
            {
              className: "editor-collab-sidebar-panel__skip-to-block",
              variant: "secondary",
              size: "compact",
              onClick: (event) => {
                event.stopPropagation();
                relatedBlockElement?.focus();
              },
              children: (0, import_i18n359.__)("Back to block")
            }
          )
        ]
      }
    );
  }

  // packages/editor/build-module/components/collab-sidebar/hooks.mjs
  var import_a11y17 = __toESM(require_a11y(), 1);
  var import_i18n360 = __toESM(require_i18n(), 1);
  var import_element429 = __toESM(require_element(), 1);
  var import_core_data149 = __toESM(require_core_data(), 1);
  var import_data266 = __toESM(require_data(), 1);
  var import_block_editor104 = __toESM(require_block_editor(), 1);
  var import_notices37 = __toESM(require_notices(), 1);
  var import_dom41 = __toESM(require_dom(), 1);
  var import_html_entities36 = __toESM(require_html_entities(), 1);
  var import_rich_text9 = __toESM(require_rich_text(), 1);

  // packages/editor/build-module/components/collab-sidebar/board-store.mjs
  function createBoardStore() {
    const listeners2 = /* @__PURE__ */ new Set();
    const blockRefs = /* @__PURE__ */ new Map();
    const floatingRefs = /* @__PURE__ */ new Map();
    const idByElement = /* @__PURE__ */ new WeakMap();
    const heights = {};
    let snapshot = {};
    function emit() {
      snapshot = { ...heights };
      for (const listener of listeners2) {
        listener();
      }
    }
    const observer = new window.ResizeObserver((entries) => {
      let changed = false;
      for (const entry of entries) {
        const id = idByElement.get(entry.target);
        const newHeight = entry.borderBoxSize[0].blockSize;
        if (heights[id] !== newHeight) {
          heights[id] = newHeight;
          changed = true;
        }
      }
      if (changed) {
        emit();
      }
    });
    return {
      subscribe(listener) {
        listeners2.add(listener);
        return () => {
          listeners2.delete(listener);
          if (listeners2.size === 0) {
            observer.disconnect();
          }
        };
      },
      getSnapshot() {
        return snapshot;
      },
      registerThread(id, blockEl, floatingEl) {
        blockRefs.set(id, blockEl);
        const prev = floatingRefs.get(id);
        if (prev && prev !== floatingEl) {
          observer.unobserve(prev);
          idByElement.delete(prev);
        }
        if (floatingEl) {
          floatingRefs.set(id, floatingEl);
          idByElement.set(floatingEl, id);
          observer.observe(floatingEl);
        }
        emit();
      },
      unregisterThread(id) {
        blockRefs.delete(id);
        const prev = floatingRefs.get(id);
        if (prev) {
          observer.unobserve(prev);
          idByElement.delete(prev);
          floatingRefs.delete(id);
        }
        delete heights[id];
      },
      getAnchorRects() {
        return Object.fromEntries(
          Array.from(blockRefs).flatMap(([id, el]) => {
            if (!el) {
              return [];
            }
            if (id === "new") {
              const rect = getSelectionRect(el) ?? el.getBoundingClientRect();
              return [[id, rect]];
            }
            const anchor = el.querySelector(getNoteMarkerSelector(id)) ?? el;
            return [[id, anchor.getBoundingClientRect()]];
          })
        );
      },
      getFirstBlockElement() {
        return blockRefs.values().next().value ?? null;
      }
    };
  }

  // packages/editor/build-module/components/collab-sidebar/hooks.mjs
  var { cleanEmptyObject: cleanEmptyObject3 } = unlock(import_block_editor104.privateApis);
  function useNoteThreads(postId2) {
    const queryArgs = {
      post: postId2,
      type: "note",
      status: "all",
      per_page: -1
    };
    const { records: threads } = (0, import_core_data149.useEntityRecords)(
      "root",
      "comment",
      queryArgs,
      { enabled: !!postId2 && typeof postId2 === "number" }
    );
    const { getBlockAttributes: getBlockAttributes2 } = (0, import_data266.useSelect)(import_block_editor104.store);
    const { clientIds } = (0, import_data266.useSelect)((select9) => {
      const { getClientIdsWithDescendants: getClientIdsWithDescendants2 } = select9(import_block_editor104.store);
      return {
        clientIds: getClientIdsWithDescendants2()
      };
    }, []);
    const { notes, unresolvedNotes } = (0, import_element429.useMemo)(() => {
      if (!threads || threads.length === 0) {
        return { notes: [], unresolvedNotes: [] };
      }
      const blocksWithNotes = {};
      const clientIdByNoteId = /* @__PURE__ */ new Map();
      for (const clientId of clientIds) {
        const metadata = getBlockAttributes2(clientId)?.metadata;
        const noteIds = getNoteIdsFromMetadata(metadata);
        if (noteIds.length > 0) {
          blocksWithNotes[clientId] = noteIds;
          for (const noteId of noteIds) {
            clientIdByNoteId.set(noteId, clientId);
          }
        }
      }
      const threadsById = /* @__PURE__ */ new Map();
      const rootThreads = [];
      for (const item of threads) {
        const thread = {
          ...item,
          reply: [],
          blockClientId: item.parent === 0 ? clientIdByNoteId.get(item.id) ?? null : null
        };
        threadsById.set(item.id, thread);
        if (item.parent === 0) {
          rootThreads.push(thread);
        }
      }
      for (const item of threads) {
        if (item.parent !== 0) {
          threadsById.get(item.parent)?.reply.unshift(threadsById.get(item.id));
        }
      }
      if (rootThreads.length === 0) {
        return { notes: [], unresolvedNotes: [] };
      }
      const unresolved = [];
      const resolved = [];
      for (const [clientId, noteIds] of Object.entries(
        blocksWithNotes
      )) {
        const attributes = getBlockAttributes2(clientId);
        const orderedThreads = noteIds.map((noteId) => {
          const thread = threadsById.get(noteId);
          if (!thread) {
            return null;
          }
          return {
            thread,
            start: getInlineMarkerStart(thread, attributes)
          };
        }).filter(Boolean).sort((a2, b2) => {
          if (a2.start !== b2.start) {
            return a2.start - b2.start;
          }
          return a2.thread.id - b2.thread.id;
        });
        for (const { thread } of orderedThreads) {
          if (thread.status === "hold") {
            unresolved.push(thread);
          } else if (thread.status === "approved") {
            resolved.push(thread);
          }
        }
      }
      const orphans = rootThreads.filter(
        (thread) => !thread.blockClientId
      );
      return {
        notes: [...unresolved, ...orphans, ...resolved],
        unresolvedNotes: unresolved
      };
    }, [clientIds, threads, getBlockAttributes2]);
    return {
      notes,
      unresolvedNotes
    };
  }
  function readInlineSelection(getSelectionStart, getSelectionEnd) {
    const start2 = getSelectionStart();
    const end = getSelectionEnd();
    if (!start2?.clientId || start2.clientId !== end.clientId || !start2.attributeKey || start2.offset === void 0 || end.offset === void 0 || start2.offset === end.offset) {
      return null;
    }
    const [startOffset, endOffset] = start2.offset < end.offset ? [start2.offset, end.offset] : [end.offset, start2.offset];
    return {
      clientId: start2.clientId,
      attributeKey: start2.attributeKey,
      start: startOffset,
      end: endOffset
    };
  }
  function wrapInlineNote(value, id, start2, end) {
    if (!(value instanceof import_rich_text9.RichTextData)) {
      return null;
    }
    const record = applyNoteFormat(
      (0, import_rich_text9.create)({ html: value.toHTMLString() }),
      { type: NOTE_FORMAT_NAME, attributes: { "data-id": String(id) } },
      start2,
      end
    );
    return import_rich_text9.RichTextData.fromHTMLString(
      new import_rich_text9.RichTextData(record).toHTMLString()
    );
  }
  function clearInlineNoteMarker(noteId, getClientIdsWithDescendants2, getBlockAttributes2, updateBlockAttributes2) {
    for (const clientId of getClientIdsWithDescendants2()) {
      const attributes = getBlockAttributes2(clientId);
      const found = findNoteInBlock(attributes, noteId);
      if (!found) {
        continue;
      }
      const next = removeNoteFormat(
        attributes[found.attributeKey],
        noteId
      );
      if (next) {
        updateBlockAttributes2(clientId, { [found.attributeKey]: next });
      }
      return;
    }
  }
  function useNoteActions() {
    const { createNotice } = (0, import_data266.useDispatch)(import_notices37.store);
    const { saveEntityRecord, deleteEntityRecord } = (0, import_data266.useDispatch)(import_core_data149.store);
    const { getCurrentPostId: getCurrentPostId2 } = (0, import_data266.useSelect)(store);
    const {
      getBlockAttributes: getBlockAttributes2,
      getClientIdsWithDescendants: getClientIdsWithDescendants2,
      getSelectedBlockClientId: getSelectedBlockClientId2,
      getSelectionStart,
      getSelectionEnd
    } = (0, import_data266.useSelect)(import_block_editor104.store);
    const { updateBlockAttributes: updateBlockAttributes2 } = (0, import_data266.useDispatch)(import_block_editor104.store);
    const onError = (error2) => {
      const errorMessage = error2.message && error2.code !== "unknown_error" ? (0, import_html_entities36.decodeEntities)(error2.message) : (0, import_i18n360.__)("An error occurred while performing an update.");
      createNotice("error", errorMessage, {
        type: "snackbar",
        isDismissible: true
      });
    };
    const onCreate = async ({ content, parent }) => {
      try {
        const inlineSelection = !parent ? readInlineSelection(getSelectionStart, getSelectionEnd) : null;
        const clientId = !parent ? inlineSelection?.clientId || getSelectedBlockClientId2() : null;
        const savedRecord = await saveEntityRecord(
          "root",
          "comment",
          {
            post: getCurrentPostId2(),
            content,
            status: "hold",
            type: "note",
            parent: parent || 0
          },
          { throwOnError: true }
        );
        if (!parent && savedRecord?.id && clientId) {
          const attributes = getBlockAttributes2(clientId);
          const metadata = attributes?.metadata;
          const updatedMetadata = addNoteIdToMetadata(
            metadata,
            savedRecord.id
          );
          const newAttributes = {
            metadata: cleanEmptyObject3(updatedMetadata)
          };
          if (inlineSelection) {
            const wrapped = wrapInlineNote(
              attributes?.[inlineSelection.attributeKey],
              savedRecord.id,
              inlineSelection.start,
              inlineSelection.end
            );
            if (wrapped) {
              newAttributes[inlineSelection.attributeKey] = wrapped;
            }
          }
          updateBlockAttributes2(clientId, newAttributes);
        }
        createNotice(
          "snackbar",
          parent ? (0, import_i18n360.__)("Reply added.") : (0, import_i18n360.__)("Note added."),
          {
            type: "snackbar",
            isDismissible: true
          }
        );
        return savedRecord;
      } catch (error2) {
        onError(error2);
      }
    };
    const onEdit = async ({ id, content, status }) => {
      try {
        if (status === "approved" || status === "hold") {
          await saveEntityRecord(
            "root",
            "comment",
            {
              id,
              status
            },
            {
              throwOnError: true
            }
          );
          const newNoteData = {
            post: getCurrentPostId2(),
            content: content || "",
            // Empty content for resolve, content for reopen.
            type: "note",
            status,
            parent: id,
            meta: {
              _wp_note_status: status === "approved" ? "resolved" : "reopen"
            }
          };
          const savedRecord2 = await saveEntityRecord(
            "root",
            "comment",
            newNoteData,
            {
              throwOnError: true
            }
          );
          if (status === "approved") {
            clearInlineNoteMarker(
              id,
              getClientIdsWithDescendants2,
              getBlockAttributes2,
              updateBlockAttributes2
            );
          }
          (0, import_a11y17.speak)(
            status === "approved" ? (0, import_i18n360.__)("Note marked as resolved.") : (0, import_i18n360.__)("Note reopened.")
          );
          return savedRecord2;
        }
        const updateData = {
          id,
          content,
          status
        };
        const savedRecord = await saveEntityRecord(
          "root",
          "comment",
          updateData,
          {
            throwOnError: true
          }
        );
        createNotice("snackbar", (0, import_i18n360.__)("Note updated."), {
          type: "snackbar",
          isDismissible: true
        });
        return savedRecord;
      } catch (error2) {
        onError(error2);
      }
    };
    const onDelete = async (note) => {
      try {
        const clientId = !note.parent ? note.blockClientId || getSelectedBlockClientId2() : null;
        await deleteEntityRecord("root", "comment", note.id, void 0, {
          throwOnError: true
        });
        if (clientId) {
          const attributes = getBlockAttributes2(clientId);
          const newAttributes = {
            metadata: cleanEmptyObject3(
              removeNoteIdFromMetadata(
                attributes?.metadata,
                note.id
              )
            )
          };
          const found = findNoteInBlock(attributes, note.id);
          if (found) {
            const next = removeNoteFormat(
              attributes[found.attributeKey],
              note.id
            );
            if (next) {
              newAttributes[found.attributeKey] = next;
            }
          }
          updateBlockAttributes2(clientId, newAttributes);
        }
        createNotice("snackbar", (0, import_i18n360.__)("Note deleted."), {
          type: "snackbar",
          isDismissible: true
        });
        return true;
      } catch (error2) {
        onError(error2);
      }
    };
    return { onCreate, onEdit, onDelete };
  }
  function useEnableFloatingSidebar(enabled = false) {
    const registry = (0, import_data266.useRegistry)();
    (0, import_element429.useEffect)(() => {
      if (!enabled) {
        return;
      }
      const { getActiveComplementaryArea: getActiveComplementaryArea2 } = registry.select(store3);
      const { disableComplementaryArea: disableComplementaryArea2, enableComplementaryArea: enableComplementaryArea2 } = registry.dispatch(store3);
      const unsubscribe = registry.subscribe(() => {
        if (getActiveComplementaryArea2("core") === null) {
          enableComplementaryArea2("core", FLOATING_NOTES_SIDEBAR);
        }
      });
      return () => {
        unsubscribe();
        if (getActiveComplementaryArea2("core") === FLOATING_NOTES_SIDEBAR) {
          disableComplementaryArea2("core");
        }
      };
    }, [enabled, registry]);
  }
  function useFloatingBoard({
    threads,
    selectedNoteId,
    isFloating,
    sidebarRef
  }) {
    const [notePositions, setNotePositions] = (0, import_element429.useState)({});
    const [store4] = (0, import_element429.useState)(createBoardStore);
    const heights = (0, import_element429.useSyncExternalStore)(store4.subscribe, store4.getSnapshot);
    (0, import_element429.useEffect)(() => {
      if (!isFloating || !sidebarRef?.current) {
        return;
      }
      const panel = sidebarRef.current;
      const blockEl = store4.getFirstBlockElement();
      const rootEl = blockEl?.closest(".is-root-container") ?? blockEl;
      const canvas = rootEl ? (0, import_dom41.getScrollContainer)(rootEl) : null;
      const applyScroll = () => {
        panel.style.setProperty(
          "--canvas-scroll",
          `${-(canvas?.scrollTop ?? 0)}px`
        );
      };
      let rafId2;
      const schedule2 = () => {
        window.cancelAnimationFrame(rafId2);
        rafId2 = window.requestAnimationFrame(() => {
          const result = calculateNotePositions({
            threads,
            selectedNoteId,
            blockRects: store4.getAnchorRects(),
            heights,
            scrollTop: canvas?.scrollTop ?? 0
          });
          setNotePositions(result.positions);
          applyScroll();
        });
      };
      schedule2();
      const contentObserver = new window.ResizeObserver(schedule2);
      if (rootEl) {
        contentObserver.observe(rootEl);
      }
      const view = canvas?.ownerDocument?.defaultView;
      const listenerOptions = { passive: true, capture: true };
      view?.addEventListener("scroll", applyScroll, listenerOptions);
      return () => {
        window.cancelAnimationFrame(rafId2);
        contentObserver.disconnect();
        view?.removeEventListener("scroll", applyScroll, listenerOptions);
      };
    }, [sidebarRef, heights, isFloating, selectedNoteId, store4, threads]);
    return {
      notePositions,
      registerThread: store4.registerThread,
      unregisterThread: store4.unregisterThread
    };
  }

  // packages/editor/build-module/components/collab-sidebar/notes.mjs
  var import_jsx_runtime671 = __toESM(require_jsx_runtime(), 1);
  var { useBlockElement: useBlockElement3 } = unlock(import_block_editor105.privateApis);
  function Notes({ notes, sidebarRef, isFloating = false, styles }) {
    const {
      onCreate: onAddReply,
      onEdit: onEditNote,
      onDelete
    } = useNoteActions();
    const { selectNote: selectNote2 } = unlock((0, import_data267.useDispatch)(store));
    const { selectBlock: selectBlock2, toggleBlockSpotlight } = unlock(
      (0, import_data267.useDispatch)(import_block_editor105.store)
    );
    const { noteId, selectedBlockClientId, orderedBlockIds } = (0, import_data267.useSelect)(
      (select9) => {
        const {
          getBlockAttributes: getBlockAttributes2,
          getSelectedBlockClientId: getSelectedBlockClientId2,
          getClientIdsWithDescendants: getClientIdsWithDescendants2
        } = select9(import_block_editor105.store);
        const clientId = getSelectedBlockClientId2();
        return {
          noteId: clientId ? getBlockAttributes2(clientId)?.metadata?.noteId : null,
          selectedBlockClientId: clientId,
          orderedBlockIds: getClientIdsWithDescendants2()
        };
      },
      []
    );
    const { selectedNote: selectedNote2, noteFocused } = (0, import_data267.useSelect)((select9) => {
      const { getSelectedNote: getSelectedNote2, isNoteFocused: isNoteFocused2 } = unlock(
        select9(store)
      );
      return {
        selectedNote: getSelectedNote2(),
        noteFocused: isNoteFocused2()
      };
    }, []);
    const relatedBlockElement = useBlockElement3(selectedBlockClientId);
    const threads = (0, import_element430.useMemo)(() => {
      if (!isFloating || selectedNote2 !== "new") {
        return notes;
      }
      const newNoteThread = {
        id: "new",
        blockClientId: selectedBlockClientId,
        content: { rendered: "" }
      };
      const out = [];
      orderedBlockIds.forEach((blockId) => {
        const threadsForBlock = notes.filter(
          (t3) => t3.blockClientId === blockId
        );
        out.push(...threadsForBlock);
        if (blockId === selectedBlockClientId) {
          out.push(newNoteThread);
        }
      });
      return out;
    }, [
      notes,
      isFloating,
      selectedNote2,
      selectedBlockClientId,
      orderedBlockIds
    ]);
    const handleDelete = async (note) => {
      const currentIndex = threads.findIndex((t3) => t3.id === note.id);
      const nextThread = threads[currentIndex + 1];
      const prevThread = threads[currentIndex - 1];
      const deleted = await onDelete(note);
      if (!deleted) {
        return;
      }
      if (note.parent !== 0) {
        selectNote2(note.parent);
        focusNoteThread(note.parent, sidebarRef.current);
        return;
      }
      const adjacentThread = nextThread ?? prevThread;
      if (adjacentThread) {
        selectNote2(adjacentThread.id);
        focusNoteThread(adjacentThread.id, sidebarRef.current);
        if (adjacentThread.blockClientId) {
          toggleBlockSpotlight(adjacentThread.blockClientId, true);
          selectBlock2(adjacentThread.blockClientId, null);
        }
      } else {
        selectNote2(void 0);
        toggleBlockSpotlight(note.blockClientId, false);
        relatedBlockElement?.focus();
      }
    };
    const targetNoteId = (0, import_element430.useMemo)(() => {
      const blockNoteIds = getNoteIdsFromMetadata({ noteId });
      const blockThreads = notes.filter(
        (t3) => blockNoteIds.includes(t3.id)
      );
      return pickPrimaryNote(blockThreads)?.id;
    }, [noteId, notes]);
    const prevBlockIdRef = (0, import_element430.useRef)(selectedBlockClientId);
    (0, import_element430.useEffect)(() => {
      if (prevBlockIdRef.current === selectedBlockClientId) {
        return;
      }
      prevBlockIdRef.current = selectedBlockClientId;
      selectNote2(targetNoteId);
    }, [selectedBlockClientId, targetNoteId, selectNote2]);
    (0, import_element430.useEffect)(() => {
      if (noteFocused && selectedNote2) {
        focusNoteThread(
          selectedNote2,
          sidebarRef.current,
          selectedNote2 === "new" ? '[role="textbox"]' : void 0
        );
        selectNote2(selectedNote2);
      }
    }, [noteFocused, selectedNote2, selectNote2, sidebarRef]);
    const { notePositions, registerThread, unregisterThread } = useFloatingBoard({
      threads,
      selectedNoteId: selectedNote2,
      isFloating,
      sidebarRef
    });
    const hasThreads = Array.isArray(threads) && threads.length > 0;
    const navigate = (event, thread, isSelected2) => {
      if (event.defaultPrevented) {
        return;
      }
      const currentIndex = threads.findIndex((t3) => t3.id === thread.id);
      const isSelfTarget2 = event.currentTarget === event.target;
      if ((event.key === "Enter" || event.key === "ArrowRight") && isSelfTarget2 && !isSelected2) {
        selectNote2(thread.id);
        if (!!thread.blockClientId) {
          selectBlock2(thread.blockClientId, null);
          toggleBlockSpotlight(thread.blockClientId, true);
        }
      } else if ((event.key === "Enter" || event.key === "ArrowLeft") && isSelfTarget2 && isSelected2 || event.key === "Escape") {
        selectNote2(void 0);
        if (thread.blockClientId) {
          toggleBlockSpotlight(thread.blockClientId, false);
        }
        focusNoteThread(thread.id, sidebarRef.current);
      } else if (event.key === "ArrowDown" && currentIndex < threads.length - 1 && isSelfTarget2) {
        focusNoteThread(
          threads[currentIndex + 1].id,
          sidebarRef.current
        );
      } else if (event.key === "ArrowUp" && currentIndex > 0 && isSelfTarget2) {
        focusNoteThread(
          threads[currentIndex - 1].id,
          sidebarRef.current
        );
      } else if (event.key === "Home" && isSelfTarget2) {
        focusNoteThread(threads[0].id, sidebarRef.current);
      } else if (event.key === "End" && isSelfTarget2) {
        focusNoteThread(
          threads[threads.length - 1].id,
          sidebarRef.current
        );
      }
    };
    const firstResolvedIndex = isFloating ? -1 : threads.findIndex(
      (thread) => thread.status === "approved" && !!thread.blockClientId
    );
    return /* @__PURE__ */ (0, import_jsx_runtime671.jsx)(
      Stack,
      {
        className: "editor-collab-sidebar-panel",
        style: styles,
        role: "tree",
        direction: "column",
        gap: "md",
        justify: "flex-start",
        ref: (node) => {
          if (node) {
            sidebarRef.current = node;
          }
        },
        "aria-label": isFloating ? (0, import_i18n361.__)("Unresolved notes") : (0, import_i18n361.__)("All notes"),
        children: !hasThreads && !isFloating ? /* @__PURE__ */ (0, import_jsx_runtime671.jsx)(AddNote, { onSubmit: onAddReply, sidebarRef }) : /* @__PURE__ */ (0, import_jsx_runtime671.jsxs)(import_jsx_runtime671.Fragment, { children: [
          !isFloating && selectedNote2 === "new" && /* @__PURE__ */ (0, import_jsx_runtime671.jsx)(
            AddNote,
            {
              onSubmit: onAddReply,
              sidebarRef
            }
          ),
          threads.map((thread, index3) => /* @__PURE__ */ (0, import_jsx_runtime671.jsxs)(import_element430.Fragment, { children: [
            index3 === firstResolvedIndex && /* @__PURE__ */ (0, import_jsx_runtime671.jsx)(
              Stack,
              {
                direction: "row",
                align: "center",
                justify: "center",
                gap: "sm",
                className: "editor-collab-sidebar-panel__status-separator",
                children: /* @__PURE__ */ (0, import_jsx_runtime671.jsx)(Text, { variant: "heading-sm", render: /* @__PURE__ */ (0, import_jsx_runtime671.jsx)("p", {}), children: (0, import_i18n361.__)("Resolved") })
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime671.jsx)(
              NoteThread,
              {
                note: thread,
                onAddReply,
                onDeleteNote: handleDelete,
                onEditNote,
                isSelected: selectedNote2 === thread.id,
                sidebarRef,
                floating: isFloating ? {
                  y: notePositions[thread.id],
                  registerThread,
                  unregisterThread
                } : void 0,
                onKeyDown: (event) => navigate(
                  event,
                  thread,
                  selectedNote2 === thread.id
                )
              }
            )
          ] }, thread.id))
        ] })
      }
    );
  }

  // packages/editor/build-module/components/collab-sidebar/add-note-menu-item.mjs
  var import_components270 = __toESM(require_components(), 1);
  var import_i18n362 = __toESM(require_i18n(), 1);
  var import_block_editor106 = __toESM(require_block_editor(), 1);
  var import_data268 = __toESM(require_data(), 1);
  var import_blocks38 = __toESM(require_blocks(), 1);
  var import_keyboard_shortcuts12 = __toESM(require_keyboard_shortcuts(), 1);
  var import_jsx_runtime672 = __toESM(require_jsx_runtime(), 1);
  var { NoteIconSlotFill } = unlock(import_block_editor106.privateApis);
  function NoteMenuItem({ clientId, onClick, isDistractionFree }) {
    const block = (0, import_data268.useSelect)(
      (select9) => {
        return select9(import_block_editor106.store).getBlock(clientId);
      },
      [clientId]
    );
    const shortcut = (0, import_data268.useSelect)(
      (select9) => select9(import_keyboard_shortcuts12.store).getShortcutRepresentation(
        "core/editor/new-note"
      ),
      []
    );
    if (!block?.isValid || block?.name === (0, import_blocks38.getUnregisteredTypeHandlerName)()) {
      return null;
    }
    const isDisabled = isDistractionFree || block?.name === "core/freeform";
    let infoText;
    if (isDistractionFree) {
      infoText = (0, import_i18n362.__)("Notes are disabled in distraction free mode.");
    } else if (block?.name === "core/freeform") {
      infoText = (0, import_i18n362.__)("Convert to blocks to add notes.");
    }
    return /* @__PURE__ */ (0, import_jsx_runtime672.jsx)(
      import_components270.MenuItem,
      {
        onClick,
        "aria-haspopup": "dialog",
        disabled: isDisabled,
        info: infoText,
        shortcut,
        children: (0, import_i18n362.__)("Add note")
      }
    );
  }
  function AddNoteMenuItem({ onClick, isDistractionFree }) {
    return /* @__PURE__ */ (0, import_jsx_runtime672.jsx)(NoteIconSlotFill.Fill, { children: ({ clientId, onClose }) => /* @__PURE__ */ (0, import_jsx_runtime672.jsx)(
      NoteMenuItem,
      {
        clientId,
        isDistractionFree,
        onClick: () => {
          onClick(clientId);
          onClose();
        }
      }
    ) });
  }

  // packages/editor/build-module/components/collab-sidebar/note-indicator-toolbar.mjs
  var import_components271 = __toESM(require_components(), 1);
  var import_i18n363 = __toESM(require_i18n(), 1);
  var import_element431 = __toESM(require_element(), 1);
  var import_block_editor107 = __toESM(require_block_editor(), 1);
  var import_data269 = __toESM(require_data(), 1);
  var import_jsx_runtime673 = __toESM(require_jsx_runtime(), 1);
  var { NoteIconToolbarSlotFill } = unlock(import_block_editor107.privateApis);
  function ThreadParticipants({ participants }) {
    const defaultAvatar = (0, import_data269.useSelect)((select9) => {
      const { getSettings: getSettings12 } = select9(import_block_editor107.store);
      const { __experimentalDiscussionSettings } = getSettings12();
      return __experimentalDiscussionSettings?.avatarURL;
    }, []);
    const maxAvatars = 3;
    const isOverflow = participants.length > maxAvatars;
    const visibleParticipants = isOverflow ? participants.slice(0, maxAvatars - 1) : participants;
    const overflowCount = Math.max(
      0,
      participants.length - visibleParticipants.length
    );
    const threadHasMoreParticipants = participants.length > 100;
    const overflowText = threadHasMoreParticipants && overflowCount > 0 ? (0, import_i18n363.__)("100+") : (0, import_i18n363.sprintf)(
      // translators: %s: Number of participants.
      (0, import_i18n363.__)("+%s"),
      overflowCount
    );
    return /* @__PURE__ */ (0, import_jsx_runtime673.jsxs)(Stack, { direction: "row", align: "center", gap: "xs", children: [
      visibleParticipants.map((participant) => /* @__PURE__ */ (0, import_jsx_runtime673.jsx)(
        "img",
        {
          src: participant.avatar || defaultAvatar,
          alt: participant.name,
          className: "editor-note-indicator__avatar",
          style: {
            borderColor: getAvatarBorderColor(participant.id)
          }
        },
        participant.id
      )),
      overflowCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime673.jsx)("span", { className: "editor-note-indicator__overflow", children: overflowText })
    ] });
  }
  function NoteAvatarIndicator({ onClick, note }) {
    const threadParticipants = (0, import_element431.useMemo)(() => {
      if (!note) {
        return [];
      }
      const participantsMap = /* @__PURE__ */ new Map();
      const allNotes = [note, ...note.reply].sort(
        (a2, b2) => new Date(a2.date) - new Date(b2.date)
      );
      for (const entry of allNotes) {
        if (!entry.author_name || participantsMap.has(entry.author)) {
          continue;
        }
        participantsMap.set(entry.author, {
          id: entry.author,
          name: entry.author_name,
          avatar: entry.author_avatar_urls?.["48"] || entry.author_avatar_urls?.["96"]
        });
      }
      return Array.from(participantsMap.values());
    }, [note]);
    if (!threadParticipants.length) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime673.jsx)(NoteIconToolbarSlotFill.Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime673.jsx)(
      import_components271.ToolbarButton,
      {
        className: "editor-note-indicator",
        label: (0, import_i18n363.__)("View notes"),
        onClick: () => onClick(),
        showTooltip: true,
        children: /* @__PURE__ */ (0, import_jsx_runtime673.jsx)(ThreadParticipants, { participants: threadParticipants })
      }
    ) });
  }

  // packages/editor/build-module/components/collab-sidebar/note-highlight-styles.mjs
  var import_element432 = __toESM(require_element(), 1);
  var import_block_editor108 = __toESM(require_block_editor(), 1);
  var REST_ALPHA = "40";
  var ACTIVE_ALPHA = "80";
  var BASE_RESET = "mark.wp-note{background-color:transparent;color:inherit;}";
  function buildHighlightCss(threads, selectedId = null) {
    const rules = [BASE_RESET];
    for (const thread of threads ?? []) {
      if (!thread?.id) {
        continue;
      }
      const color = getAvatarBorderColor(thread.author ?? 0);
      const sel = getNoteMarkerSelector(thread.id);
      rules.push(`${sel}{background-color:${color}${REST_ALPHA};}`);
      rules.push(
        `${sel}:hover,${sel}:focus-within{background-color:${color}${ACTIVE_ALPHA};}`
      );
      if (selectedId && String(selectedId) === String(thread.id)) {
        rules.push(
          `${sel}{background-color:${color}${ACTIVE_ALPHA};}`
        );
      }
    }
    return rules.join("");
  }
  function NoteHighlightStyles({ threads, selectedId }) {
    const css = (0, import_element432.useMemo)(
      () => buildHighlightCss(threads, selectedId),
      [threads, selectedId]
    );
    (0, import_block_editor108.useStyleOverride)({ id: "core-note-highlights", css });
    return null;
  }

  // packages/editor/build-module/components/collab-sidebar/index.mjs
  var import_jsx_runtime674 = __toESM(require_jsx_runtime(), 1);
  function NotesSidebar({ postId: postId2 }) {
    const { getActiveComplementaryArea: getActiveComplementaryArea2 } = (0, import_data270.useSelect)(store3);
    const { enableComplementaryArea: enableComplementaryArea2 } = (0, import_data270.useDispatch)(store3);
    const { toggleBlockSpotlight, selectBlock: selectBlock2 } = unlock(
      (0, import_data270.useDispatch)(import_block_editor109.store)
    );
    const { selectNote: selectNote2 } = unlock((0, import_data270.useDispatch)(store));
    const isLargeViewport = (0, import_compose100.useViewportMatch)("medium");
    const sidebarRef = (0, import_element433.useRef)(null);
    const { clientId, noteId, isClassicBlock } = (0, import_data270.useSelect)((select9) => {
      const { getBlockAttributes: getBlockAttributes2, getSelectedBlockClientId: getSelectedBlockClientId2, getBlockName: getBlockName2 } = select9(import_block_editor109.store);
      const _clientId = getSelectedBlockClientId2();
      return {
        clientId: _clientId,
        noteId: _clientId ? getBlockAttributes2(_clientId)?.metadata?.noteId : null,
        isClassicBlock: _clientId ? getBlockName2(_clientId) === "core/freeform" : false
      };
    }, []);
    const blockNoteIds = getNoteIdsFromMetadata({ noteId });
    const { isDistractionFree } = (0, import_data270.useSelect)((select9) => {
      const { get } = select9(import_preferences31.store);
      return {
        isDistractionFree: get("core", "distractionFree")
      };
    }, []);
    const selectedNoteId = (0, import_data270.useSelect)(
      (select9) => unlock(select9(store)).getSelectedNote(),
      []
    );
    const { notes, unresolvedNotes } = useNoteThreads(postId2);
    const showFloatingSidebar = isLargeViewport;
    const showAllNotesSidebar = notes.length > 0 || !showFloatingSidebar;
    useEnableFloatingSidebar(
      showFloatingSidebar && (unresolvedNotes.length > 0 || selectedNoteId !== void 0)
    );
    async function focusNote({
      targetClientId,
      noteId: targetNoteId,
      isApproved
    }) {
      if (!targetClientId) {
        return;
      }
      const prevArea = await getActiveComplementaryArea2("core");
      if (isApproved) {
        enableComplementaryArea2("core", ALL_NOTES_SIDEBAR);
      } else if (!SIDEBARS.includes(prevArea) || !showAllNotesSidebar) {
        enableComplementaryArea2(
          "core",
          showFloatingSidebar ? FLOATING_NOTES_SIDEBAR : ALL_NOTES_SIDEBAR
        );
      }
      const currentArea = await getActiveComplementaryArea2("core");
      if (!SIDEBARS.includes(currentArea)) {
        return;
      }
      selectBlock2(targetClientId, null);
      toggleBlockSpotlight(targetClientId, true);
      selectNote2(targetNoteId, { focus: true });
    }
    function openNoteForBlock(targetClientId) {
      const blockThreads = notes.filter(
        (thread) => thread.blockClientId === targetClientId
      );
      const target = pickPrimaryNote(blockThreads);
      return focusNote({
        targetClientId,
        noteId: target?.id ?? "new",
        isApproved: target?.status === "approved"
      });
    }
    function addNewNoteForBlock(targetClientId) {
      return focusNote({
        targetClientId,
        noteId: "new",
        isApproved: false
      });
    }
    (0, import_keyboard_shortcuts13.useShortcut)(
      "core/editor/new-note",
      (event) => {
        event.preventDefault();
        addNewNoteForBlock(clientId);
      },
      {
        isDisabled: isDistractionFree || isClassicBlock || !clientId
      }
    );
    const { merged: GlobalStyles } = useGlobalStyles();
    const backgroundColor = GlobalStyles?.styles?.color?.background;
    const currentThreads = blockNoteIds.length > 0 ? notes.filter((thread) => blockNoteIds.includes(thread.id)) : [];
    const currentThread = pickPrimaryNote(currentThreads);
    if (isDistractionFree) {
      return /* @__PURE__ */ (0, import_jsx_runtime674.jsx)(AddNoteMenuItem, { isDistractionFree: true });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime674.jsxs)(import_jsx_runtime674.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime674.jsx)(
        NoteHighlightStyles,
        {
          threads: unresolvedNotes,
          selectedId: selectedNoteId
        }
      ),
      !!currentThread && /* @__PURE__ */ (0, import_jsx_runtime674.jsx)(
        NoteAvatarIndicator,
        {
          note: currentThread,
          onClick: () => openNoteForBlock(clientId)
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime674.jsx)(
        AddNoteMenuItem,
        {
          onClick: (menuClientId) => addNewNoteForBlock(menuClientId)
        }
      ),
      showAllNotesSidebar && /* @__PURE__ */ (0, import_jsx_runtime674.jsx)(
        PluginSidebar,
        {
          identifier: ALL_NOTES_SIDEBAR,
          name: ALL_NOTES_SIDEBAR,
          title: (0, import_i18n364.__)("All notes"),
          header: /* @__PURE__ */ (0, import_jsx_runtime674.jsx)("h2", { className: "interface-complementary-area-header__title", children: (0, import_i18n364.__)("All notes") }),
          icon: comment_default,
          closeLabel: (0, import_i18n364.__)("Close Notes"),
          children: /* @__PURE__ */ (0, import_jsx_runtime674.jsx)(Notes, { notes, sidebarRef })
        }
      ),
      isLargeViewport && /* @__PURE__ */ (0, import_jsx_runtime674.jsx)(
        PluginSidebar,
        {
          isPinnable: false,
          header: false,
          identifier: FLOATING_NOTES_SIDEBAR,
          className: "editor-collab-sidebar",
          headerClassName: "editor-collab-sidebar__header",
          backgroundColor,
          children: /* @__PURE__ */ (0, import_jsx_runtime674.jsx)(
            Notes,
            {
              notes: unresolvedNotes,
              sidebarRef,
              styles: { backgroundColor },
              isFloating: true
            }
          )
        }
      )
    ] });
  }
  function NotesSidebarContainer() {
    const { postId: postId2, editorMode, revisionsMode } = (0, import_data270.useSelect)((select9) => {
      const { getCurrentPostId: getCurrentPostId2, getEditorMode: getEditorMode2, isRevisionsMode: isRevisionsMode2 } = unlock(
        select9(store)
      );
      return {
        postId: getCurrentPostId2(),
        editorMode: getEditorMode2(),
        revisionsMode: isRevisionsMode2()
      };
    }, []);
    if (!postId2 || typeof postId2 !== "number") {
      return null;
    }
    if (editorMode === "text" || revisionsMode) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime674.jsx)(post_type_support_check_default, { supportKeys: "editor.notes", children: /* @__PURE__ */ (0, import_jsx_runtime674.jsx)(NotesSidebar, { postId: postId2 }) });
  }

  // packages/editor/build-module/components/global-styles-sidebar/index.mjs
  var import_components274 = __toESM(require_components(), 1);
  var import_i18n367 = __toESM(require_i18n(), 1);
  var import_data273 = __toESM(require_data(), 1);
  var import_element434 = __toESM(require_element(), 1);
  var import_preferences34 = __toESM(require_preferences(), 1);
  var import_compose101 = __toESM(require_compose(), 1);
  var import_core_data151 = __toESM(require_core_data(), 1);
  var import_block_editor110 = __toESM(require_block_editor(), 1);

  // packages/editor/build-module/components/global-styles/menu.mjs
  var import_components272 = __toESM(require_components(), 1);
  var import_data271 = __toESM(require_data(), 1);
  var import_i18n365 = __toESM(require_i18n(), 1);
  var import_preferences32 = __toESM(require_preferences(), 1);
  var import_core_data150 = __toESM(require_core_data(), 1);
  var import_jsx_runtime675 = __toESM(require_jsx_runtime(), 1);
  function GlobalStylesActionMenu({
    hideWelcomeGuide = false,
    onChangePath
  }) {
    const { user, setUser } = useGlobalStyles();
    const canReset = !!user && (Object.keys(user?.styles ?? {}).length > 0 || Object.keys(user?.settings ?? {}).length > 0);
    const onReset = () => {
      setUser({ styles: {}, settings: {} });
    };
    const { toggle } = (0, import_data271.useDispatch)(import_preferences32.store);
    const { canEditCSS } = (0, import_data271.useSelect)((select9) => {
      const { getEntityRecord, __experimentalGetCurrentGlobalStylesId } = select9(import_core_data150.store);
      const globalStylesId = __experimentalGetCurrentGlobalStylesId();
      const globalStyles = globalStylesId ? getEntityRecord("root", "globalStyles", globalStylesId) : void 0;
      return {
        canEditCSS: !!globalStyles?._links?.["wp:action-edit-css"]
      };
    }, []);
    const loadCustomCSS = () => {
      onChangePath("/css");
    };
    const hasPrimaryActions = canEditCSS || !hideWelcomeGuide;
    return /* @__PURE__ */ (0, import_jsx_runtime675.jsxs)(menu_exports.Root, { modal: false, children: [
      /* @__PURE__ */ (0, import_jsx_runtime675.jsx)(
        menu_exports.Trigger,
        {
          render: /* @__PURE__ */ (0, import_jsx_runtime675.jsx)(
            import_components272.Button,
            {
              icon: more_vertical_default,
              label: (0, import_i18n365.__)("More"),
              size: "compact"
            }
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime675.jsxs)(menu_exports.Popup, { positioner: /* @__PURE__ */ (0, import_jsx_runtime675.jsx)(menu_exports.Positioner, { align: "end" }), children: [
        hasPrimaryActions && /* @__PURE__ */ (0, import_jsx_runtime675.jsxs)(menu_exports.Group, { children: [
          canEditCSS && /* @__PURE__ */ (0, import_jsx_runtime675.jsx)(menu_exports.Item, { onClick: loadCustomCSS, children: /* @__PURE__ */ (0, import_jsx_runtime675.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n365.__)("Additional CSS") }) }),
          !hideWelcomeGuide && /* @__PURE__ */ (0, import_jsx_runtime675.jsx)(
            menu_exports.Item,
            {
              onClick: () => {
                toggle(
                  "core/edit-site",
                  "welcomeGuideStyles"
                );
              },
              children: /* @__PURE__ */ (0, import_jsx_runtime675.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n365.__)("Welcome Guide") })
            }
          )
        ] }),
        hasPrimaryActions && /* @__PURE__ */ (0, import_jsx_runtime675.jsx)(menu_exports.Separator, {}),
        /* @__PURE__ */ (0, import_jsx_runtime675.jsx)(menu_exports.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime675.jsx)(menu_exports.Item, { onClick: onReset, disabled: !canReset, children: /* @__PURE__ */ (0, import_jsx_runtime675.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n365.__)("Reset styles") }) }) })
      ] })
    ] });
  }

  // packages/editor/build-module/components/global-styles-sidebar/welcome-guide.mjs
  var import_data272 = __toESM(require_data(), 1);
  var import_components273 = __toESM(require_components(), 1);
  var import_i18n366 = __toESM(require_i18n(), 1);
  var import_preferences33 = __toESM(require_preferences(), 1);

  // packages/editor/build-module/components/global-styles-sidebar/welcome-guide-image.mjs
  var import_jsx_runtime676 = __toESM(require_jsx_runtime(), 1);
  function WelcomeGuideImage({ nonAnimatedSrc, animatedSrc }) {
    return /* @__PURE__ */ (0, import_jsx_runtime676.jsxs)("picture", { className: "editor-welcome-guide__image", children: [
      /* @__PURE__ */ (0, import_jsx_runtime676.jsx)(
        "source",
        {
          srcSet: nonAnimatedSrc,
          media: "(prefers-reduced-motion: reduce)"
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime676.jsx)("img", { src: animatedSrc, width: "312", height: "240", alt: "" })
    ] });
  }

  // packages/editor/build-module/components/global-styles-sidebar/welcome-guide.mjs
  var import_jsx_runtime677 = __toESM(require_jsx_runtime(), 1);
  function WelcomeGuideStyles() {
    const { toggle } = (0, import_data272.useDispatch)(import_preferences33.store);
    const { isActive, isStylesOpen } = (0, import_data272.useSelect)((select9) => {
      const sidebar = select9(store3).getActiveComplementaryArea("core");
      return {
        isActive: !!select9(import_preferences33.store).get(
          "core/edit-site",
          "welcomeGuideStyles"
        ),
        isStylesOpen: sidebar === "edit-site/global-styles"
      };
    }, []);
    if (!isActive || !isStylesOpen) {
      return null;
    }
    const welcomeLabel = (0, import_i18n366.__)("Welcome to Styles");
    return /* @__PURE__ */ (0, import_jsx_runtime677.jsx)(
      import_components273.Guide,
      {
        className: "editor-welcome-guide guide-styles",
        contentLabel: welcomeLabel,
        finishButtonText: (0, import_i18n366.__)("Get started"),
        onFinish: () => toggle("core/edit-site", "welcomeGuideStyles"),
        pages: [
          {
            image: /* @__PURE__ */ (0, import_jsx_runtime677.jsx)(
              WelcomeGuideImage,
              {
                nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-to-styles.svg?1",
                animatedSrc: "https://s.w.org/images/block-editor/welcome-to-styles.gif?1"
              }
            ),
            content: /* @__PURE__ */ (0, import_jsx_runtime677.jsxs)(import_jsx_runtime677.Fragment, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime677.jsx)("h1", { className: "editor-welcome-guide__heading", children: welcomeLabel }),
              /* @__PURE__ */ (0, import_jsx_runtime677.jsx)("p", { className: "editor-welcome-guide__text", children: (0, import_i18n366.__)(
                "Tweak your site, or give it a whole new look! Get creative \u2014 how about a new color palette for your buttons, or choosing a new font? Take a look at what you can do here."
              ) })
            ] })
          },
          {
            image: /* @__PURE__ */ (0, import_jsx_runtime677.jsx)(
              WelcomeGuideImage,
              {
                nonAnimatedSrc: "https://s.w.org/images/block-editor/set-the-design.svg?1",
                animatedSrc: "https://s.w.org/images/block-editor/set-the-design.gif?1"
              }
            ),
            content: /* @__PURE__ */ (0, import_jsx_runtime677.jsxs)(import_jsx_runtime677.Fragment, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime677.jsx)("h1", { className: "editor-welcome-guide__heading", children: (0, import_i18n366.__)("Set the design") }),
              /* @__PURE__ */ (0, import_jsx_runtime677.jsx)("p", { className: "editor-welcome-guide__text", children: (0, import_i18n366.__)(
                "You can customize your site as much as you like with different colors, typography, and layouts. Or if you prefer, just leave it up to your theme to handle!"
              ) })
            ] })
          },
          {
            image: /* @__PURE__ */ (0, import_jsx_runtime677.jsx)(
              WelcomeGuideImage,
              {
                nonAnimatedSrc: "https://s.w.org/images/block-editor/personalize-blocks.svg?1",
                animatedSrc: "https://s.w.org/images/block-editor/personalize-blocks.gif?1"
              }
            ),
            content: /* @__PURE__ */ (0, import_jsx_runtime677.jsxs)(import_jsx_runtime677.Fragment, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime677.jsx)("h1", { className: "editor-welcome-guide__heading", children: (0, import_i18n366.__)("Personalize blocks") }),
              /* @__PURE__ */ (0, import_jsx_runtime677.jsx)("p", { className: "editor-welcome-guide__text", children: (0, import_i18n366.__)(
                "You can adjust your blocks to ensure a cohesive experience across your site \u2014 add your unique colors to a branded Button block, or adjust the Heading block to your preferred size."
              ) })
            ] })
          },
          {
            image: /* @__PURE__ */ (0, import_jsx_runtime677.jsx)(
              WelcomeGuideImage,
              {
                nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.svg",
                animatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.gif"
              }
            ),
            content: /* @__PURE__ */ (0, import_jsx_runtime677.jsxs)(import_jsx_runtime677.Fragment, { children: [
              /* @__PURE__ */ (0, import_jsx_runtime677.jsx)("h1", { className: "editor-welcome-guide__heading", children: (0, import_i18n366.__)("Learn more") }),
              /* @__PURE__ */ (0, import_jsx_runtime677.jsxs)("p", { className: "editor-welcome-guide__text", children: [
                (0, import_i18n366.__)(
                  "New to block themes and styling your site?"
                ),
                " ",
                /* @__PURE__ */ (0, import_jsx_runtime677.jsx)(
                  import_components273.ExternalLink,
                  {
                    href: (0, import_i18n366.__)(
                      "https://wordpress.org/documentation/article/styles-overview/"
                    ),
                    children: (0, import_i18n366.__)(
                      "Here\u2019s a detailed guide to learn how to make the most of it."
                    )
                  }
                )
              ] })
            ] })
          }
        ]
      }
    );
  }

  // packages/editor/build-module/components/global-styles-sidebar/index.mjs
  var import_jsx_runtime678 = __toESM(require_jsx_runtime(), 1);
  function GlobalStylesSidebar() {
    const {
      shouldResetNavigation,
      stylesPath: stylesPath2,
      showStylebook: showStylebook2,
      showListViewByDefault,
      hasRevisions,
      activeComplementaryArea,
      editorSettings: editorSettings2,
      styleStateViewport,
      isDistractionFree
    } = (0, import_data273.useSelect)((select9) => {
      const { get } = select9(import_preferences34.store);
      const { getActiveComplementaryArea: getActiveComplementaryArea2 } = select9(store3);
      const {
        getStylesPath: getStylesPath2,
        getShowStylebook: getShowStylebook2,
        getEditorMode: getEditorMode2,
        getEditorSettings: getEditorSettings2
      } = unlock(select9(store));
      const _isVisualEditorMode = "visual" === getEditorMode2();
      const _showListViewByDefault = get("core", "showListViewByDefault");
      const _isDistractionFree = get("core", "distractionFree");
      const { getEntityRecord, __experimentalGetCurrentGlobalStylesId } = select9(import_core_data151.store);
      const globalStylesId = __experimentalGetCurrentGlobalStylesId();
      const globalStyles = globalStylesId ? getEntityRecord("root", "globalStyles", globalStylesId) : void 0;
      return {
        stylesPath: getStylesPath2(),
        showStylebook: getShowStylebook2(),
        shouldResetNavigation: "edit-site/global-styles" !== getActiveComplementaryArea2("core") || !_isVisualEditorMode,
        showListViewByDefault: _showListViewByDefault,
        hasRevisions: !!globalStyles?._links?.["version-history"]?.[0]?.count,
        activeComplementaryArea: getActiveComplementaryArea2("core"),
        editorSettings: getEditorSettings2(),
        styleStateViewport: unlock(
          select9(import_block_editor110.store)
        ).getStyleStateViewport(),
        isDistractionFree: _isDistractionFree
      };
    }, []);
    const { setStylesPath: setStylesPath2, setShowStylebook: setShowStylebook2, resetStylesNavigation: resetStylesNavigation2 } = unlock(
      (0, import_data273.useDispatch)(store)
    );
    const isMobileViewport = (0, import_compose101.useViewportMatch)("medium", "<");
    const isRevisionsOpened = stylesPath2.startsWith("/revisions") && !showStylebook2;
    const isRevisionsStyleBookOpened = stylesPath2.startsWith("/revisions") && showStylebook2;
    const previousActiveArea = (0, import_compose101.usePrevious)(activeComplementaryArea);
    const hasRequestedPath = stylesPath2 !== "/" && !shouldResetNavigation;
    (0, import_element434.useEffect)(() => {
      if (activeComplementaryArea === "edit-site/global-styles" && previousActiveArea !== "edit-site/global-styles" && !hasRequestedPath) {
        resetStylesNavigation2();
      }
    }, [
      activeComplementaryArea,
      previousActiveArea,
      hasRequestedPath,
      resetStylesNavigation2
    ]);
    (0, import_element434.useEffect)(() => {
      if (shouldResetNavigation) {
        resetStylesNavigation2();
      }
    }, [shouldResetNavigation, resetStylesNavigation2]);
    const { setIsListViewOpened: setIsListViewOpened2 } = (0, import_data273.useDispatch)(store);
    const toggleRevisions = () => {
      setIsListViewOpened2(false);
      if (isRevisionsOpened || isRevisionsStyleBookOpened) {
        setStylesPath2("/");
      } else {
        setStylesPath2("/revisions");
      }
    };
    const toggleStyleBook = () => {
      setIsListViewOpened2(showStylebook2 && showListViewByDefault);
      setShowStylebook2(!showStylebook2);
    };
    return /* @__PURE__ */ (0, import_jsx_runtime678.jsxs)(import_jsx_runtime678.Fragment, { children: [
      /* @__PURE__ */ (0, import_jsx_runtime678.jsx)(
        PluginSidebar,
        {
          name: "global-styles",
          identifier: "edit-site/global-styles",
          title: (0, import_i18n367.__)("Styles"),
          icon: styles_default,
          isPinnable: !isDistractionFree,
          closeLabel: (0, import_i18n367.__)("Close Styles"),
          className: "editor-global-styles-sidebar__panel",
          render: /* @__PURE__ */ (0, import_jsx_runtime678.jsx)("div", { className: "editor-global-styles-sidebar" }),
          header: /* @__PURE__ */ (0, import_jsx_runtime678.jsxs)(
            Stack,
            {
              className: "editor-global-styles-sidebar__header",
              direction: "row",
              align: "center",
              gap: "xs",
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime678.jsx)("h2", { className: "editor-global-styles-sidebar__header-title", children: (0, import_i18n367.__)("Styles") }),
                /* @__PURE__ */ (0, import_jsx_runtime678.jsxs)(
                  Stack,
                  {
                    className: "editor-global-styles-sidebar__header-actions",
                    direction: "row",
                    align: "center",
                    justify: "flex-end",
                    gap: "xs",
                    children: [
                      !isMobileViewport && /* @__PURE__ */ (0, import_jsx_runtime678.jsx)(
                        import_components274.Button,
                        {
                          icon: seen_default,
                          label: (0, import_i18n367.__)("Style Book"),
                          isPressed: showStylebook2,
                          accessibleWhenDisabled: true,
                          disabled: shouldResetNavigation,
                          onClick: toggleStyleBook,
                          size: "compact"
                        }
                      ),
                      /* @__PURE__ */ (0, import_jsx_runtime678.jsx)(
                        import_components274.Button,
                        {
                          label: (0, import_i18n367.__)("Revisions"),
                          icon: backup_default,
                          onClick: toggleRevisions,
                          accessibleWhenDisabled: true,
                          disabled: !hasRevisions,
                          isPressed: isRevisionsOpened || isRevisionsStyleBookOpened,
                          size: "compact"
                        }
                      ),
                      /* @__PURE__ */ (0, import_jsx_runtime678.jsx)(
                        GlobalStylesActionMenu,
                        {
                          onChangePath: setStylesPath2
                        }
                      )
                    ]
                  }
                )
              ]
            }
          ),
          children: /* @__PURE__ */ (0, import_jsx_runtime678.jsx)(
            GlobalStylesUIWrapper,
            {
              path: stylesPath2,
              onPathChange: setStylesPath2,
              settings: editorSettings2,
              selectedViewport: styleStateViewport,
              showResponsiveStateControls: false
            }
          )
        }
      ),
      /* @__PURE__ */ (0, import_jsx_runtime678.jsx)(WelcomeGuideStyles, {})
    ] });
  }

  // packages/editor/build-module/components/editor/index.mjs
  var import_jsx_runtime679 = __toESM(require_jsx_runtime(), 1);
  function Editor({
    postType: postType2,
    postId: postId2,
    templateId: templateId2,
    settings,
    children,
    initialEdits,
    initialViewport,
    renderingMode: renderingMode2,
    // This could be part of the settings.
    onActionPerformed,
    // The following abstractions are not ideal but necessary
    // to account for site editor and post editor differences for now.
    extraContent,
    extraSidebarPanels,
    ...props
  }) {
    const {
      post: post2,
      template: template2,
      hasLoadedPost,
      error: error2,
      isBlockTheme,
      showGlobalStyles
    } = (0, import_data274.useSelect)(
      (select9) => {
        const {
          getEntityRecord,
          getResolutionError,
          hasFinishedResolution,
          getCurrentTheme,
          __experimentalGetCurrentGlobalStylesId,
          canUser
        } = select9(import_core_data152.store);
        const { getRenderingMode: getRenderingMode2, getCurrentPostType: getCurrentPostType2 } = select9(store);
        const postArgs = ["postType", postType2, postId2];
        const currentRenderingMode = getRenderingMode2();
        const currentPostType = getCurrentPostType2();
        const _isBlockTheme = getCurrentTheme()?.is_block_theme;
        const globalStylesId = __experimentalGetCurrentGlobalStylesId();
        const userCanEditGlobalStyles = globalStylesId ? canUser("update", {
          kind: "root",
          name: "globalStyles",
          id: globalStylesId
        }) : false;
        return {
          post: getEntityRecord(...postArgs),
          template: templateId2 ? getEntityRecord(
            "postType",
            TEMPLATE_POST_TYPE,
            templateId2
          ) : void 0,
          hasLoadedPost: hasFinishedResolution(
            "getEntityRecord",
            postArgs
          ),
          error: getResolutionError("getEntityRecord", postArgs)?.message,
          isBlockTheme: _isBlockTheme,
          showGlobalStyles: _isBlockTheme && userCanEditGlobalStyles && (currentPostType === "wp_template" || currentRenderingMode === "template-locked")
        };
      },
      [postType2, postId2, templateId2]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime679.jsxs)(import_jsx_runtime679.Fragment, { children: [
      hasLoadedPost && !post2 && /* @__PURE__ */ (0, import_jsx_runtime679.jsx)(
        import_components275.Notice,
        {
          status: !!error2 ? "error" : "warning",
          isDismissible: false,
          children: !error2 ? (0, import_i18n368.__)(
            "You attempted to edit an item that doesn't exist. Perhaps it was deleted?"
          ) : error2
        }
      ),
      !!post2 && /* @__PURE__ */ (0, import_jsx_runtime679.jsxs)(
        ExperimentalEditorProvider,
        {
          post: post2,
          __unstableTemplate: template2,
          settings,
          initialEdits,
          initialViewport,
          renderingMode: renderingMode2,
          useSubRegistry: false,
          children: [
            /* @__PURE__ */ (0, import_jsx_runtime679.jsx)(EditorInterface, { ...props, children: extraContent }),
            children,
            /* @__PURE__ */ (0, import_jsx_runtime679.jsx)(
              sidebar_default2,
              {
                onActionPerformed,
                extraPanels: extraSidebarPanels
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime679.jsx)(NotesSidebarContainer, {}),
            isBlockTheme && /* @__PURE__ */ (0, import_jsx_runtime679.jsx)(GlobalStylesRenderer, {}),
            showGlobalStyles && /* @__PURE__ */ (0, import_jsx_runtime679.jsx)(GlobalStylesSidebar, {})
          ]
        }
      )
    ] });
  }
  var editor_default = Editor;

  // packages/editor/build-module/components/preferences-modal/index.mjs
  var import_i18n370 = __toESM(require_i18n(), 1);
  var import_compose102 = __toESM(require_compose(), 1);
  var import_data277 = __toESM(require_data(), 1);
  var import_element436 = __toESM(require_element(), 1);
  var import_preferences37 = __toESM(require_preferences(), 1);

  // packages/editor/build-module/components/preferences-modal/enable-publish-sidebar.mjs
  var import_data275 = __toESM(require_data(), 1);
  var import_preferences35 = __toESM(require_preferences(), 1);
  var import_jsx_runtime680 = __toESM(require_jsx_runtime(), 1);
  var { PreferenceBaseOption: PreferenceBaseOption2 } = unlock(import_preferences35.privateApis);
  function EnablePublishSidebarOption(props) {
    const isChecked = (0, import_data275.useSelect)((select9) => {
      return select9(store).isPublishSidebarEnabled();
    }, []);
    const { enablePublishSidebar: enablePublishSidebar2, disablePublishSidebar: disablePublishSidebar2 } = (0, import_data275.useDispatch)(store);
    return /* @__PURE__ */ (0, import_jsx_runtime680.jsx)(
      PreferenceBaseOption2,
      {
        isChecked,
        onChange: (isEnabled) => isEnabled ? enablePublishSidebar2() : disablePublishSidebar2(),
        ...props
      }
    );
  }

  // packages/editor/build-module/components/block-visibility/index.mjs
  var import_data276 = __toESM(require_data(), 1);
  var import_preferences36 = __toESM(require_preferences(), 1);
  var import_blocks39 = __toESM(require_blocks(), 1);
  var import_element435 = __toESM(require_element(), 1);
  var import_components276 = __toESM(require_components(), 1);
  var import_i18n369 = __toESM(require_i18n(), 1);
  var import_block_editor111 = __toESM(require_block_editor(), 1);
  var import_jsx_runtime681 = __toESM(require_jsx_runtime(), 1);
  var { BlockManager } = unlock(import_block_editor111.privateApis);
  var EMPTY_ARRAY19 = [];
  function BlockVisibility() {
    const { showBlockTypes: showBlockTypes2, hideBlockTypes: hideBlockTypes2 } = unlock(
      (0, import_data276.useDispatch)(store)
    );
    const {
      blockTypes,
      allowedBlockTypes: _allowedBlockTypes,
      hiddenBlockTypes: _hiddenBlockTypes
    } = (0, import_data276.useSelect)((select9) => {
      return {
        blockTypes: select9(import_blocks39.store).getBlockTypes(),
        allowedBlockTypes: select9(store).getEditorSettings().allowedBlockTypes,
        hiddenBlockTypes: select9(import_preferences36.store).get("core", "hiddenBlockTypes") ?? EMPTY_ARRAY19
      };
    }, []);
    const allowedBlockTypes = (0, import_element435.useMemo)(() => {
      if (_allowedBlockTypes === true) {
        return blockTypes;
      }
      return blockTypes.filter(({ name: name2 }) => {
        return _allowedBlockTypes?.includes(name2);
      });
    }, [_allowedBlockTypes, blockTypes]);
    const filteredBlockTypes = allowedBlockTypes.filter(
      (blockType) => (0, import_blocks39.hasBlockSupport)(blockType, "inserter", true) && (!blockType.parent || blockType.parent.includes("core/post-content"))
    );
    const hiddenBlockTypes = _hiddenBlockTypes.filter((hiddenBlock) => {
      return filteredBlockTypes.some(
        (registeredBlock) => registeredBlock.name === hiddenBlock
      );
    });
    const selectedBlockTypes = filteredBlockTypes.filter(
      (blockType) => !hiddenBlockTypes.includes(blockType.name)
    );
    const numberOfHiddenBlocks = filteredBlockTypes.length - selectedBlockTypes.length;
    function enableAllBlockTypes() {
      onChangeSelectedBlockTypes(filteredBlockTypes);
    }
    const onChangeSelectedBlockTypes = (newSelectedBlockTypes) => {
      if (selectedBlockTypes.length > newSelectedBlockTypes.length) {
        const blockTypesToHide = selectedBlockTypes.filter(
          (blockType) => !newSelectedBlockTypes.find(
            ({ name: name2 }) => name2 === blockType.name
          )
        );
        hideBlockTypes2(blockTypesToHide.map(({ name: name2 }) => name2));
      } else if (selectedBlockTypes.length < newSelectedBlockTypes.length) {
        const blockTypesToShow = newSelectedBlockTypes.filter(
          (blockType) => !selectedBlockTypes.find(
            ({ name: name2 }) => name2 === blockType.name
          )
        );
        showBlockTypes2(blockTypesToShow.map(({ name: name2 }) => name2));
      }
    };
    return /* @__PURE__ */ (0, import_jsx_runtime681.jsxs)("div", { className: "editor-block-visibility", children: [
      !!numberOfHiddenBlocks && /* @__PURE__ */ (0, import_jsx_runtime681.jsxs)("div", { className: "editor-block-visibility__disabled-blocks-count", children: [
        (0, import_i18n369.sprintf)(
          /* translators: %d: number of blocks. */
          (0, import_i18n369._n)(
            "%d block is hidden.",
            "%d blocks are hidden.",
            numberOfHiddenBlocks
          ),
          numberOfHiddenBlocks
        ),
        /* @__PURE__ */ (0, import_jsx_runtime681.jsx)(
          import_components276.Button,
          {
            __next40pxDefaultSize: true,
            variant: "link",
            onClick: enableAllBlockTypes,
            children: (0, import_i18n369.__)("Reset")
          }
        )
      ] }),
      /* @__PURE__ */ (0, import_jsx_runtime681.jsx)(
        BlockManager,
        {
          blockTypes: filteredBlockTypes,
          selectedBlockTypes,
          onChange: onChangeSelectedBlockTypes,
          showSelectAll: false
        }
      )
    ] });
  }

  // packages/editor/build-module/components/preferences-modal/index.mjs
  var import_jsx_runtime682 = __toESM(require_jsx_runtime(), 1);
  var {
    PreferencesModal,
    PreferencesModalTabs,
    PreferencesModalSection,
    PreferenceToggleControl
  } = unlock(import_preferences37.privateApis);
  function EditorPreferencesModal({ extraSections = {} }) {
    const isActive = (0, import_data277.useSelect)((select9) => {
      return select9(store3).isModalActive("editor/preferences");
    }, []);
    const { closeModal: closeModal2 } = (0, import_data277.useDispatch)(store3);
    if (!isActive) {
      return null;
    }
    return /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(PreferencesModal, { closeModal: closeModal2, children: /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(PreferencesModalContents, { extraSections }) });
  }
  function PreferencesModalContents({ extraSections = {} }) {
    const isLargeViewport = (0, import_compose102.useViewportMatch)("medium");
    const { showBlockBreadcrumbsOption, showCollaborationOptions } = (0, import_data277.useSelect)(
      (select9) => {
        const { getEditorSettings: getEditorSettings2, isCollaborationEnabledForCurrentPost: isCollaborationEnabledForCurrentPost2 } = unlock(select9(store));
        const { get } = select9(import_preferences37.store);
        const isRichEditingEnabled = getEditorSettings2().richEditingEnabled;
        const isDistractionFreeEnabled = get("core", "distractionFree");
        return {
          showBlockBreadcrumbsOption: !isDistractionFreeEnabled && isLargeViewport && isRichEditingEnabled,
          showCollaborationOptions: isCollaborationEnabledForCurrentPost2()
        };
      },
      [isLargeViewport]
    );
    const { setIsListViewOpened: setIsListViewOpened2, setIsInserterOpened: setIsInserterOpened2 } = (0, import_data277.useDispatch)(store);
    const { set: setPreference } = (0, import_data277.useDispatch)(import_preferences37.store);
    const sections = (0, import_element436.useMemo)(
      () => [
        {
          name: "general",
          tabLabel: (0, import_i18n370.__)("General"),
          content: /* @__PURE__ */ (0, import_jsx_runtime682.jsxs)(import_jsx_runtime682.Fragment, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime682.jsxs)(
              PreferencesModalSection,
              {
                title: (0, import_i18n370.__)("Interface"),
                children: [
                  /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                    PreferenceToggleControl,
                    {
                      scope: "core",
                      featureName: "showListViewByDefault",
                      help: (0, import_i18n370.__)(
                        "Opens the List View panel by default."
                      ),
                      label: (0, import_i18n370.__)("Always open List View")
                    }
                  ),
                  showBlockBreadcrumbsOption && /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                    PreferenceToggleControl,
                    {
                      scope: "core",
                      featureName: "showBlockBreadcrumbs",
                      help: (0, import_i18n370.__)(
                        "Display the block hierarchy trail at the bottom of the editor."
                      ),
                      label: (0, import_i18n370.__)("Show block breadcrumbs")
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                    PreferenceToggleControl,
                    {
                      scope: "core",
                      featureName: "allowRightClickOverrides",
                      help: (0, import_i18n370.__)(
                        "Allows contextual List View menus via right-click, overriding browser defaults."
                      ),
                      label: (0, import_i18n370.__)(
                        "Allow right-click contextual menus"
                      )
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                    PreferenceToggleControl,
                    {
                      scope: "core",
                      featureName: "enableChoosePatternModal",
                      help: (0, import_i18n370.__)(
                        "Pick from starter content when creating a new page."
                      ),
                      label: (0, import_i18n370.__)("Show starter patterns")
                    }
                  ),
                  showCollaborationOptions && /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                    PreferenceToggleControl,
                    {
                      scope: "core",
                      featureName: "showCollaborationCursor",
                      help: (0, import_i18n370.__)(
                        "Show your own avatar inside blocks during collaborative editing sessions."
                      ),
                      label: (0, import_i18n370.__)("Show avatar in blocks")
                    }
                  )
                ]
              }
            ),
            showCollaborationOptions && /* @__PURE__ */ (0, import_jsx_runtime682.jsxs)(
              PreferencesModalSection,
              {
                title: (0, import_i18n370.__)(
                  "Collaboration notifications"
                ),
                children: [
                  /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                    PreferenceToggleControl,
                    {
                      scope: "core",
                      featureName: "showCollaborationJoinNotifications",
                      help: (0, import_i18n370.__)(
                        "Show notifications when collaborators join the post."
                      ),
                      label: (0, import_i18n370.__)("Collaborator joined")
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                    PreferenceToggleControl,
                    {
                      scope: "core",
                      featureName: "showCollaborationLeaveNotifications",
                      help: (0, import_i18n370.__)(
                        "Show notifications when collaborators leave the post."
                      ),
                      label: (0, import_i18n370.__)("Collaborator left")
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                    PreferenceToggleControl,
                    {
                      scope: "core",
                      featureName: "showCollaborationPostSaveNotifications",
                      help: (0, import_i18n370.__)(
                        "Show notifications when collaborators save, update, or publish the post."
                      ),
                      label: (0, import_i18n370.__)("Post updated")
                    }
                  )
                ]
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime682.jsxs)(
              PreferencesModalSection,
              {
                title: (0, import_i18n370.__)("Document settings"),
                description: (0, import_i18n370.__)(
                  "Select what settings are shown in the document panel."
                ),
                children: [
                  /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(enable_plugin_document_setting_panel_default.Slot, {}),
                  /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                    post_taxonomies_default,
                    {
                      taxonomyWrapper: (content, taxonomy) => /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                        EnablePanelOption,
                        {
                          label: taxonomy.labels.menu_name,
                          panelName: `taxonomy-panel-${taxonomy.slug}`
                        }
                      )
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(check_default4, { children: /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                    EnablePanelOption,
                    {
                      label: (0, import_i18n370.__)("Featured image"),
                      panelName: "featured-image"
                    }
                  ) }),
                  /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(check_default3, { children: /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                    EnablePanelOption,
                    {
                      label: (0, import_i18n370.__)("Excerpt"),
                      panelName: "post-excerpt"
                    }
                  ) }),
                  /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                    post_type_support_check_default,
                    {
                      supportKeys: ["comments", "trackbacks"],
                      children: /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                        EnablePanelOption,
                        {
                          label: (0, import_i18n370.__)("Discussion"),
                          panelName: "discussion-panel"
                        }
                      )
                    }
                  ),
                  /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(check_default2, { children: /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                    EnablePanelOption,
                    {
                      label: (0, import_i18n370.__)("Page attributes"),
                      panelName: "page-attributes"
                    }
                  ) })
                ]
              }
            ),
            isLargeViewport && /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
              PreferencesModalSection,
              {
                title: (0, import_i18n370.__)("Publishing"),
                children: /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                  EnablePublishSidebarOption,
                  {
                    help: (0, import_i18n370.__)(
                      "Review settings, such as visibility and tags."
                    ),
                    label: (0, import_i18n370.__)(
                      "Enable pre-publish checks"
                    )
                  }
                )
              }
            ),
            extraSections?.general
          ] })
        },
        {
          name: "appearance",
          tabLabel: (0, import_i18n370.__)("Appearance"),
          content: /* @__PURE__ */ (0, import_jsx_runtime682.jsxs)(
            PreferencesModalSection,
            {
              title: (0, import_i18n370.__)("Appearance"),
              description: (0, import_i18n370.__)(
                "Customize the editor interface to suit your needs."
              ),
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                  PreferenceToggleControl,
                  {
                    scope: "core",
                    featureName: "fixedToolbar",
                    onToggle: () => setPreference(
                      "core",
                      "distractionFree",
                      false
                    ),
                    help: (0, import_i18n370.__)(
                      "Access all block and document tools in a single place."
                    ),
                    label: (0, import_i18n370.__)("Top toolbar")
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                  PreferenceToggleControl,
                  {
                    scope: "core",
                    featureName: "distractionFree",
                    onToggle: () => {
                      setPreference(
                        "core",
                        "fixedToolbar",
                        true
                      );
                      setIsInserterOpened2(false);
                      setIsListViewOpened2(false);
                    },
                    help: (0, import_i18n370.__)(
                      "Reduce visual distractions by hiding the toolbar and other elements to focus on writing."
                    ),
                    label: (0, import_i18n370.__)("Distraction free")
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                  PreferenceToggleControl,
                  {
                    scope: "core",
                    featureName: "focusMode",
                    help: (0, import_i18n370.__)(
                      "Highlights the current block and fades other content."
                    ),
                    label: (0, import_i18n370.__)("Spotlight mode")
                  }
                ),
                extraSections?.appearance
              ]
            }
          )
        },
        {
          name: "accessibility",
          tabLabel: (0, import_i18n370.__)("Accessibility"),
          content: /* @__PURE__ */ (0, import_jsx_runtime682.jsxs)(import_jsx_runtime682.Fragment, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
              PreferencesModalSection,
              {
                title: (0, import_i18n370.__)("Navigation"),
                description: (0, import_i18n370.__)(
                  "Optimize the editing experience for enhanced control."
                ),
                children: /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                  PreferenceToggleControl,
                  {
                    scope: "core",
                    featureName: "keepCaretInsideBlock",
                    help: (0, import_i18n370.__)(
                      "Keeps the text cursor within blocks while navigating with arrow keys, preventing it from moving to other blocks and enhancing accessibility for keyboard users."
                    ),
                    label: (0, import_i18n370.__)(
                      "Contain text cursor inside block"
                    )
                  }
                )
              }
            ),
            /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
              PreferencesModalSection,
              {
                title: (0, import_i18n370.__)("Interface"),
                children: /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                  PreferenceToggleControl,
                  {
                    scope: "core",
                    featureName: "showIconLabels",
                    label: (0, import_i18n370.__)("Show button text labels"),
                    help: (0, import_i18n370.__)(
                      "Show text instead of icons on buttons across the interface."
                    )
                  }
                )
              }
            )
          ] })
        },
        {
          name: "blocks",
          tabLabel: (0, import_i18n370.__)("Blocks"),
          content: /* @__PURE__ */ (0, import_jsx_runtime682.jsxs)(import_jsx_runtime682.Fragment, { children: [
            /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(PreferencesModalSection, { title: (0, import_i18n370.__)("Inserter"), children: /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
              PreferenceToggleControl,
              {
                scope: "core",
                featureName: "mostUsedBlocks",
                help: (0, import_i18n370.__)(
                  "Adds a category with the most frequently used blocks in the inserter."
                ),
                label: (0, import_i18n370.__)("Show most used blocks")
              }
            ) }),
            /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
              PreferencesModalSection,
              {
                title: (0, import_i18n370.__)("Manage block visibility"),
                description: (0, import_i18n370.__)(
                  "Disable blocks that you don't want to appear in the inserter. They can always be toggled back on later."
                ),
                children: /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(BlockVisibility, {})
              }
            )
          ] })
        },
        window.__clientSideMediaProcessing && {
          name: "media",
          tabLabel: (0, import_i18n370.__)("Media"),
          content: /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(import_jsx_runtime682.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime682.jsxs)(
            PreferencesModalSection,
            {
              title: (0, import_i18n370.__)("General"),
              description: (0, import_i18n370.__)(
                "Customize options related to the media upload flow."
              ),
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                  PreferenceToggleControl,
                  {
                    scope: "core/media",
                    featureName: "optimizeOnUpload",
                    help: (0, import_i18n370.__)(
                      "Compress media items before uploading to the server."
                    ),
                    label: (0, import_i18n370.__)("Pre-upload compression")
                  }
                ),
                /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(
                  PreferenceToggleControl,
                  {
                    scope: "core/media",
                    featureName: "requireApproval",
                    help: (0, import_i18n370.__)(
                      "Require approval step when optimizing existing media."
                    ),
                    label: (0, import_i18n370.__)("Approval step")
                  }
                )
              ]
            }
          ) })
        }
      ].filter(Boolean),
      [
        showBlockBreadcrumbsOption,
        showCollaborationOptions,
        extraSections,
        setIsInserterOpened2,
        setIsListViewOpened2,
        setPreference,
        isLargeViewport
      ]
    );
    return /* @__PURE__ */ (0, import_jsx_runtime682.jsx)(PreferencesModalTabs, { sections });
  }

  // packages/editor/build-module/components/site-export/index.mjs
  var import_i18n371 = __toESM(require_i18n(), 1);
  var import_api_fetch10 = __toESM(require_api_fetch(), 1);
  var import_data278 = __toESM(require_data(), 1);
  var import_blob4 = __toESM(require_blob(), 1);
  var import_core_data153 = __toESM(require_core_data(), 1);
  var import_notices38 = __toESM(require_notices(), 1);
  var import_jsx_runtime683 = __toESM(require_jsx_runtime(), 1);
  function SiteExport() {
    const canExport = (0, import_data278.useSelect)((select9) => {
      const postType2 = select9(store).getCurrentPostType();
      if (postType2 !== TEMPLATE_POST_TYPE && postType2 !== TEMPLATE_PART_POST_TYPE) {
        return false;
      }
      const targetHints = select9(import_core_data153.store).getCurrentTheme()?._links?.["wp:export-theme"]?.[0]?.targetHints ?? {};
      return !!targetHints.allow?.includes("GET");
    }, []);
    const { createErrorNotice } = (0, import_data278.useDispatch)(import_notices38.store);
    if (!canExport) {
      return null;
    }
    async function handleExport() {
      try {
        const response = await (0, import_api_fetch10.default)({
          path: "/wp-block-editor/v1/export",
          parse: false,
          headers: {
            Accept: "application/zip"
          }
        });
        const blob = await response.blob();
        const contentDisposition = response.headers.get(
          "content-disposition"
        );
        const contentDispositionMatches = contentDisposition.match(/=(.+)\.zip/);
        const fileName = contentDispositionMatches[1] ? contentDispositionMatches[1] : "edit-site-export";
        (0, import_blob4.downloadBlob)(fileName + ".zip", blob, "application/zip");
      } catch (errorResponse) {
        let error2 = {};
        try {
          error2 = await errorResponse.json();
        } catch {
        }
        const errorMessage = error2.message && error2.code !== "unknown_error" ? error2.message : (0, import_i18n371.__)("An error occurred while creating the site export.");
        createErrorNotice(errorMessage, { type: "snackbar" });
      }
    }
    return /* @__PURE__ */ (0, import_jsx_runtime683.jsx)(
      more_menu_item_default,
      {
        icon: download_default,
        onClick: handleExport,
        info: (0, import_i18n371.__)(
          "Download your theme with updated templates and styles."
        ),
        children: (0, import_i18n371._x)("Export", "site exporter menu item")
      }
    );
  }

  // packages/editor/build-module/bindings/api.mjs
  var import_blocks40 = __toESM(require_blocks(), 1);

  // packages/editor/build-module/bindings/pattern-overrides.mjs
  var import_block_editor112 = __toESM(require_block_editor(), 1);
  var CONTENT = "content";
  var pattern_overrides_default = {
    name: "core/pattern-overrides",
    getValues({ select: select9, clientId, context, bindings }) {
      const patternOverridesContent = context["pattern/overrides"];
      const { getBlockAttributes: getBlockAttributes2 } = select9(import_block_editor112.store);
      const currentBlockAttributes = getBlockAttributes2(clientId);
      const overridesValues = {};
      for (const attributeName of Object.keys(bindings)) {
        const overridableValue = patternOverridesContent?.[currentBlockAttributes?.metadata?.name]?.[attributeName];
        if (overridableValue === void 0) {
          overridesValues[attributeName] = currentBlockAttributes?.[attributeName];
          continue;
        } else {
          overridesValues[attributeName] = overridableValue === "" ? void 0 : overridableValue;
        }
      }
      return overridesValues;
    },
    setValues({ select: select9, dispatch: dispatch9, clientId, bindings }) {
      const { getBlockAttributes: getBlockAttributes2, getBlockParentsByBlockName, getBlocks: getBlocks2 } = select9(import_block_editor112.store);
      const currentBlockAttributes = getBlockAttributes2(clientId);
      const blockName = currentBlockAttributes?.metadata?.name;
      if (!blockName) {
        return;
      }
      const [patternClientId] = getBlockParentsByBlockName(
        clientId,
        "core/block",
        true
      );
      const attributes = Object.entries(bindings).reduce(
        (attrs, [key, { newValue }]) => {
          attrs[key] = newValue;
          return attrs;
        },
        {}
      );
      if (!patternClientId) {
        const syncBlocksWithSameName = (blocks) => {
          for (const block of blocks) {
            if (block.attributes?.metadata?.name === blockName) {
              dispatch9(import_block_editor112.store).updateBlockAttributes(
                block.clientId,
                attributes
              );
            }
            syncBlocksWithSameName(block.innerBlocks);
          }
        };
        syncBlocksWithSameName(getBlocks2());
        return;
      }
      const currentBindingValue = getBlockAttributes2(patternClientId)?.[CONTENT];
      dispatch9(import_block_editor112.store).updateBlockAttributes(patternClientId, {
        [CONTENT]: {
          ...currentBindingValue,
          [blockName]: {
            ...currentBindingValue?.[blockName],
            ...Object.entries(attributes).reduce(
              (acc, [key, value]) => {
                acc[key] = value === void 0 ? "" : value;
                return acc;
              },
              {}
            )
          }
        }
      });
    },
    canUserEditValue: () => true
  };

  // packages/editor/build-module/bindings/post-data.mjs
  var import_i18n372 = __toESM(require_i18n(), 1);
  var import_core_data154 = __toESM(require_core_data(), 1);
  var import_block_editor113 = __toESM(require_block_editor(), 1);
  var NAVIGATION_BLOCK_TYPES = [
    "core/navigation-link",
    "core/navigation-submenu"
  ];
  var postDataFields = [
    {
      label: (0, import_i18n372.__)("Post Date"),
      args: { field: "date" },
      type: "string"
    },
    {
      label: (0, import_i18n372.__)("Post Modified Date"),
      args: { field: "modified" },
      type: "string"
    },
    {
      label: (0, import_i18n372.__)("Post Link"),
      args: { field: "link" },
      type: "string"
    }
  ];
  var post_data_default = {
    name: "core/post-data",
    getValues({ select: select9, context, bindings, clientId }) {
      const { getBlockAttributes: getBlockAttributes2, getBlockName: getBlockName2 } = select9(import_block_editor113.store);
      const blockName = getBlockName2(clientId);
      const isNavigationBlock = NAVIGATION_BLOCK_TYPES.includes(blockName);
      let postId2, postType2;
      if (isNavigationBlock) {
        const blockAttributes = getBlockAttributes2(clientId);
        postId2 = blockAttributes?.id;
        postType2 = blockAttributes?.type;
      } else {
        postId2 = context?.postId;
        postType2 = context?.postType;
      }
      const { getEditedEntityRecord } = select9(import_core_data154.store);
      const entityDataValues = getEditedEntityRecord(
        "postType",
        postType2,
        postId2
      );
      const newValues = {};
      for (const [attributeName, binding] of Object.entries(bindings)) {
        const postDataField = postDataFields.find(
          (field) => field.args.field === binding.args.field
        );
        if (!postDataField) {
          newValues[attributeName] = binding.args.field;
        } else if (!entityDataValues) {
          newValues[attributeName] = postDataField.label;
        } else {
          newValues[attributeName] = entityDataValues[binding.args.field];
        }
      }
      return newValues;
    },
    setValues({ dispatch: dispatch9, context, bindings, clientId, select: select9 }) {
      const { getBlockName: getBlockName2 } = select9(import_block_editor113.store);
      const blockName = getBlockName2(clientId);
      if (NAVIGATION_BLOCK_TYPES.includes(blockName)) {
        return false;
      }
      const newData = {};
      Object.values(bindings).forEach(({ args, newValue }) => {
        newData[args.field] = newValue;
      });
      dispatch9(import_core_data154.store).editEntityRecord(
        "postType",
        context?.postType,
        context?.postId,
        newData
      );
    },
    canUserEditValue({ select: select9, context }) {
      const { getBlockName: getBlockName2, getSelectedBlockClientId: getSelectedBlockClientId2 } = select9(import_block_editor113.store);
      const clientId = getSelectedBlockClientId2();
      const blockName = getBlockName2(clientId);
      if (NAVIGATION_BLOCK_TYPES.includes(blockName)) {
        return false;
      }
      if (context?.query || context?.queryId) {
        return false;
      }
      if (!context?.postType) {
        return false;
      }
      const canUserEdit = select9(import_core_data154.store).canUser("update", {
        kind: "postType",
        name: context?.postType,
        id: context?.postId
      });
      if (!canUserEdit) {
        return false;
      }
      return true;
    },
    getFieldsList({ context, select: select9 }) {
      const selectedBlock = select9(import_block_editor113.store).getSelectedBlock();
      if (selectedBlock?.name !== "core/post-date") {
        return [];
      }
      if (!context || !context.postId || !context.postType) {
        return [];
      }
      return postDataFields;
    }
  };

  // packages/editor/build-module/bindings/post-meta.mjs
  var import_core_data155 = __toESM(require_core_data(), 1);
  function getPostMetaFields(select9, context) {
    const { getRegisteredPostMeta } = unlock(select9(import_core_data155.store));
    const registeredFields = getRegisteredPostMeta(context?.postType);
    const metaFields = [];
    Object.entries(registeredFields).forEach(([key, props]) => {
      if (key === "footnotes" || key.charAt(0) === "_") {
        return;
      }
      metaFields.push({
        label: props.title || key,
        args: { key },
        default: props.default,
        type: props.type
      });
    });
    return metaFields;
  }
  function getValue2({ select: select9, context, args }) {
    const metaFields = getPostMetaFields(select9, context);
    const metaField = metaFields.find(
      (field) => field.args.key === args.key
    );
    if (!metaField) {
      return args.key;
    }
    if (!context?.postId) {
      return metaField.default || metaField.label || args.key;
    }
    const { getEditedEntityRecord } = select9(import_core_data155.store);
    const entityMetaValues = getEditedEntityRecord(
      "postType",
      context?.postType,
      context?.postId
    ).meta;
    return entityMetaValues?.[args.key] ?? metaField?.label ?? args.key;
  }
  var post_meta_default = {
    name: "core/post-meta",
    getValues({ select: select9, context, bindings }) {
      const newValues = {};
      for (const [attributeName, binding] of Object.entries(bindings)) {
        newValues[attributeName] = getValue2({
          select: select9,
          context,
          args: binding.args
        });
      }
      return newValues;
    },
    setValues({ dispatch: dispatch9, context, bindings }) {
      const newMeta = {};
      Object.values(bindings).forEach(({ args, newValue }) => {
        newMeta[args.key] = newValue;
      });
      dispatch9(import_core_data155.store).editEntityRecord(
        "postType",
        context?.postType,
        context?.postId,
        {
          meta: newMeta
        }
      );
    },
    canUserEditValue({ select: select9, context, args }) {
      if (context?.query || context?.queryId) {
        return false;
      }
      if (!context?.postType) {
        return false;
      }
      const metaFields = getPostMetaFields(select9, context);
      const hasMatchingMetaField = metaFields.some(
        (field) => field.args.key === args.key
      );
      if (!hasMatchingMetaField) {
        return false;
      }
      const areCustomFieldsEnabled = select9(store).getEditorSettings().enableCustomFields;
      if (areCustomFieldsEnabled) {
        return false;
      }
      const canUserEdit = select9(import_core_data155.store).canUser("update", {
        kind: "postType",
        name: context?.postType,
        id: context?.postId
      });
      if (!canUserEdit) {
        return false;
      }
      return true;
    },
    getFieldsList({ select: select9, context }) {
      const metaFields = getPostMetaFields(select9, context);
      return metaFields.map(
        ({ default: defaultProp, ...otherProps }) => ({
          ...otherProps
        })
      );
    }
  };

  // packages/editor/build-module/bindings/term-data.mjs
  var import_i18n373 = __toESM(require_i18n(), 1);
  var import_core_data156 = __toESM(require_core_data(), 1);
  var import_block_editor114 = __toESM(require_block_editor(), 1);
  var NAVIGATION_BLOCK_TYPES2 = [
    "core/navigation-link",
    "core/navigation-submenu"
  ];
  var termDataFields = [
    {
      label: (0, import_i18n373.__)("Term ID"),
      args: { field: "id" },
      type: "string"
    },
    {
      label: (0, import_i18n373.__)("Name"),
      args: { field: "name" },
      type: "string"
    },
    {
      label: (0, import_i18n373.__)("Slug"),
      args: { field: "slug" },
      type: "string"
    },
    {
      label: (0, import_i18n373.__)("Link"),
      args: { field: "link" },
      type: "string"
    },
    {
      label: (0, import_i18n373.__)("Description"),
      args: { field: "description" },
      type: "string"
    },
    {
      label: (0, import_i18n373.__)("Parent ID"),
      args: { field: "parent" },
      type: "string"
    },
    {
      label: (0, import_i18n373.__)("Count"),
      args: { field: "count" },
      type: "string"
    }
  ];
  var term_data_default = {
    name: "core/term-data",
    usesContext: ["taxonomy", "termId", "termData"],
    getValues({ select: select9, context, bindings, clientId }) {
      const { getEntityRecord } = select9(import_core_data156.store);
      const { getBlockAttributes: getBlockAttributes2, getBlockName: getBlockName2 } = select9(import_block_editor114.store);
      const blockName = getBlockName2(clientId);
      const isNavigationBlock = NAVIGATION_BLOCK_TYPES2.includes(blockName);
      let termDataValues;
      if (isNavigationBlock) {
        const blockAttributes = getBlockAttributes2(clientId);
        const typeFromAttributes = blockAttributes?.type;
        const taxonomy = typeFromAttributes === "tag" ? "post_tag" : typeFromAttributes;
        termDataValues = getEntityRecord(
          "taxonomy",
          taxonomy,
          blockAttributes?.id
        );
      } else if (context.termId && context.taxonomy) {
        termDataValues = getEntityRecord(
          "taxonomy",
          context.taxonomy,
          context.termId
        );
      }
      if (!termDataValues && context?.termData && !isNavigationBlock) {
        termDataValues = context.termData;
      }
      const newValues = {};
      for (const [attributeName, binding] of Object.entries(bindings)) {
        const termDataField = termDataFields.find(
          (field) => field.args.field === binding.args.field
        );
        if (!termDataField) {
          newValues[attributeName] = binding.args.field;
        } else if (!termDataValues || termDataValues[binding.args.field] === void 0) {
          newValues[attributeName] = termDataField.label;
        } else if (binding.args.field === "count") {
          newValues[attributeName] = "(" + termDataValues[binding.args.field] + ")";
        } else {
          newValues[attributeName] = termDataValues[binding.args.field];
        }
      }
      return newValues;
    },
    // eslint-disable-next-line no-unused-vars
    setValues({ dispatch: dispatch9, context, bindings }) {
      return false;
    },
    canUserEditValue({ select: select9, context }) {
      const { getBlockName: getBlockName2, getSelectedBlockClientId: getSelectedBlockClientId2 } = select9(import_block_editor114.store);
      const clientId = getSelectedBlockClientId2();
      const blockName = getBlockName2(clientId);
      if (NAVIGATION_BLOCK_TYPES2.includes(blockName)) {
        return false;
      }
      if (context?.termQuery) {
        return false;
      }
      if (!context?.taxonomy || !context?.termId) {
        return false;
      }
      return false;
    },
    getFieldsList({ context, select: select9 }) {
      const { getBlockAttributes: getBlockAttributes2, getBlockName: getBlockName2, getSelectedBlockClientId: getSelectedBlockClientId2 } = select9(import_block_editor114.store);
      const clientId = getSelectedBlockClientId2();
      const blockName = getBlockName2(clientId);
      if (NAVIGATION_BLOCK_TYPES2.includes(blockName)) {
        const blockAttributes = getBlockAttributes2(clientId);
        if (!blockAttributes || !blockAttributes.id || !blockAttributes.type) {
          return [];
        }
        return termDataFields;
      }
      if (!context) {
        return [];
      }
      if (context.taxonomy && context.termId || context.termData) {
        return termDataFields;
      }
      return [];
    }
  };

  // packages/editor/build-module/bindings/api.mjs
  function registerCoreBlockBindingsSources() {
    (0, import_blocks40.registerBlockBindingsSource)(pattern_overrides_default);
    (0, import_blocks40.registerBlockBindingsSource)(post_data_default);
    (0, import_blocks40.registerBlockBindingsSource)(post_meta_default);
    (0, import_blocks40.registerBlockBindingsSource)(term_data_default);
  }

  // packages/editor/build-module/components/upload-progress-snackbar/index.mjs
  var import_data279 = __toESM(require_data(), 1);
  var import_element437 = __toESM(require_element(), 1);
  var import_i18n374 = __toESM(require_i18n(), 1);
  var import_a11y18 = __toESM(require_a11y(), 1);
  var import_upload_media3 = __toESM(require_upload_media(), 1);
  var import_notices39 = __toESM(require_notices(), 1);
  var import_components277 = __toESM(require_components(), 1);
  var import_jsx_runtime684 = __toESM(require_jsx_runtime(), 1);
  var NOTICE_ID = "upload-progress";
  var COMPLETION_DISPLAY_MS = 3e3;
  var MAX_FILENAME_LENGTH = 40;
  function truncateFilename(filename) {
    if (filename.length <= MAX_FILENAME_LENGTH) {
      return filename;
    }
    const ellipsis = "\u2026";
    const visible = MAX_FILENAME_LENGTH - ellipsis.length;
    const front = Math.ceil(visible / 2);
    const back = Math.floor(visible / 2);
    return filename.slice(0, front) + ellipsis + filename.slice(filename.length - back);
  }
  var UPLOAD_SPINNER = /* @__PURE__ */ (0, import_jsx_runtime684.jsx)(
    "span",
    {
      className: "editor-upload-progress-snackbar__spinner",
      "aria-hidden": "true",
      children: /* @__PURE__ */ (0, import_jsx_runtime684.jsx)(import_components277.Spinner, {})
    }
  );
  var UPLOAD_DONE = /* @__PURE__ */ (0, import_jsx_runtime684.jsx)("span", { className: "editor-upload-progress-snackbar__check", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime684.jsx)(import_components277.Icon, { icon: check_default }) });
  function UploadProgressSnackbar() {
    const { items, csmFailureCount } = (0, import_data279.useSelect)((select9) => {
      const { getItems } = select9(import_upload_media3.store);
      const { getFailureCount: getFailureCount2 } = unlock(select9(import_upload_media3.store));
      return {
        items: getItems(),
        csmFailureCount: getFailureCount2()
      };
    }, []);
    const tracker = useTracker();
    const csmOriginals = (0, import_element437.useMemo)(
      () => items.filter((item) => !item.parentId),
      [items]
    );
    const csmRemaining = csmOriginals.length;
    const trackedRemaining = tracker ? tracker.total - tracker.completed : 0;
    const remaining = csmRemaining + trackedRemaining;
    const sessionTotal = csmRemaining + (tracker ? tracker.total : 0);
    const peakRef = (0, import_element437.useRef)(0);
    const { createNotice, removeNotice } = (0, import_data279.useDispatch)(import_notices39.store);
    const dismissedRef = (0, import_element437.useRef)(false);
    const wasUploadingRef = (0, import_element437.useRef)(false);
    const failuresAtStartRef = (0, import_element437.useRef)(0);
    const completionTimeoutRef = (0, import_element437.useRef)(null);
    (0, import_element437.useEffect)(() => {
      return () => {
        if (completionTimeoutRef.current) {
          clearTimeout(completionTimeoutRef.current);
        }
      };
    }, []);
    (0, import_element437.useEffect)(() => {
      const isUploading = remaining > 0;
      const failures = csmFailureCount + getFailureCount();
      if (isUploading && !wasUploadingRef.current) {
        dismissedRef.current = false;
        failuresAtStartRef.current = failures;
        (0, import_a11y18.speak)((0, import_i18n374.__)("Media upload started"), "polite");
        if (completionTimeoutRef.current) {
          clearTimeout(completionTimeoutRef.current);
          completionTimeoutRef.current = null;
          peakRef.current = 0;
        }
      } else if (!isUploading && wasUploadingRef.current) {
        const total2 = peakRef.current;
        const failed = Math.min(
          total2,
          failures - failuresAtStartRef.current
        );
        const uploaded = total2 - failed;
        if (uploaded === 0) {
          (0, import_a11y18.speak)((0, import_i18n374.__)("Media upload failed"), "polite");
          removeNotice(NOTICE_ID);
          peakRef.current = 0;
        } else {
          const isFullSuccess = failed === 0;
          const content2 = isFullSuccess ? (0, import_i18n374.__)("Upload complete") : (0, import_i18n374.sprintf)(
            /* translators: 1: number of files uploaded, 2: number of files in the batch. */
            (0, import_i18n374.__)("Uploaded %1$d of %2$d"),
            uploaded,
            total2
          );
          (0, import_a11y18.speak)(
            isFullSuccess ? (0, import_i18n374.__)("Media upload complete") : content2,
            "polite"
          );
          if (!dismissedRef.current) {
            createNotice("info", content2, {
              id: NOTICE_ID,
              type: "snackbar",
              isDismissible: false,
              explicitDismiss: false,
              speak: false,
              // No checkmark on a partial batch — some of it failed.
              icon: isFullSuccess ? UPLOAD_DONE : void 0,
              onDismiss: () => {
                dismissedRef.current = true;
              }
            });
            completionTimeoutRef.current = setTimeout(() => {
              removeNotice(NOTICE_ID);
              completionTimeoutRef.current = null;
              peakRef.current = 0;
            }, COMPLETION_DISPLAY_MS);
          } else {
            peakRef.current = 0;
          }
        }
      }
      wasUploadingRef.current = isUploading;
      if (!isUploading || dismissedRef.current) {
        return;
      }
      if (sessionTotal > peakRef.current) {
        peakRef.current = sessionTotal;
      }
      const total = peakRef.current;
      const current = total - remaining + 1;
      const filename = truncateFilename(
        csmOriginals[0]?.sourceFile?.name || tracker?.pending[0] || (0, import_i18n374.__)("Uploading")
      );
      const content = total === 1 ? (0, import_i18n374.sprintf)(
        /* translators: %s: filename. */
        (0, import_i18n374.__)("Uploading \u2014 %s"),
        filename
      ) : (0, import_i18n374.sprintf)(
        /* translators: 1: current upload number, 2: total uploads, 3: filename. */
        (0, import_i18n374.__)("Uploading %1$d of %2$d \u2014 %3$s"),
        current,
        total,
        filename
      );
      createNotice("info", content, {
        id: NOTICE_ID,
        type: "snackbar",
        isDismissible: false,
        explicitDismiss: true,
        speak: false,
        icon: UPLOAD_SPINNER,
        onDismiss: () => {
          dismissedRef.current = true;
        }
      });
    }, [
      remaining,
      sessionTotal,
      csmOriginals,
      csmFailureCount,
      tracker,
      createNotice,
      removeNotice
    ]);
    return null;
  }

  // packages/editor/build-module/private-apis.mjs
  var { store: interfaceStore, ...remainingInterfaceApis } = build_module_exports;
  var privateApis9 = {};
  lock(privateApis9, {
    CreateTemplatePartModal,
    patternTitleField: pattern_title_default,
    templateTitleField: template_title_default,
    BackButton: back_button_default,
    Editor: editor_default,
    PluginPostExcerpt: plugin_default,
    PostCardPanel,
    PreferencesModal: EditorPreferencesModal,
    usePostActions,
    usePostFields: post_fields_default,
    MoreMenuItem: more_menu_item_default,
    MoreMenuPreferenceItem,
    ToolsMoreMenuGroup: tools_more_menu_group_default,
    SiteExport,
    ViewMoreMenuGroup: view_more_menu_group_default,
    ResizableEditor: resizable_editor_default,
    UploadProgressSnackbar,
    registerCoreBlockBindingsSources,
    // Global Styles
    GlobalStylesUIWrapper,
    GlobalStylesActionMenu,
    StyleBookPreview,
    useGlobalStyles,
    useStyle: useStyle2,
    // This is a temporary private API while we're updating the site editor to use EditorProvider.
    interfaceStore,
    ...remainingInterfaceApis
  });

  // packages/editor/build-module/dataviews/api.mjs
  var import_data280 = __toESM(require_data(), 1);
  function registerEntityAction2(kind, name2, config2) {
    const { registerEntityAction: _registerEntityAction } = unlock(
      (0, import_data280.dispatch)(store)
    );
    if (true) {
      _registerEntityAction(kind, name2, config2);
    }
  }
  function unregisterEntityAction2(kind, name2, actionId) {
    const { unregisterEntityAction: _unregisterEntityAction } = unlock(
      (0, import_data280.dispatch)(store)
    );
    if (true) {
      _unregisterEntityAction(kind, name2, actionId);
    }
  }
  function registerEntityField2(kind, name2, config2) {
    const { registerEntityField: _registerEntityField } = unlock(
      (0, import_data280.dispatch)(store)
    );
    if (true) {
      _registerEntityField(kind, name2, config2);
    }
  }
  function unregisterEntityField2(kind, name2, fieldId) {
    const { unregisterEntityField: _unregisterEntityField } = unlock(
      (0, import_data280.dispatch)(store)
    );
    if (true) {
      _unregisterEntityField(kind, name2, fieldId);
    }
  }

  // packages/editor/build-module/index.mjs
  var import_block_editor115 = __toESM(require_block_editor(), 1);
  return __toCommonJS(index_exports);
})();
/*! Bundled license information:

use-sync-external-store/cjs/use-sync-external-store-shim.development.js:
  (**
   * @license React
   * use-sync-external-store-shim.development.js
   *
   * Copyright (c) Meta Platforms, Inc. and affiliates.
   *
   * This source code is licensed under the MIT license found in the
   * LICENSE file in the root directory of this source tree.
   *)

use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js:
  (**
   * @license React
   * use-sync-external-store-shim/with-selector.development.js
   *
   * Copyright (c) Meta Platforms, Inc. and affiliates.
   *
   * This source code is licensed under the MIT license found in the
   * LICENSE file in the root directory of this source tree.
   *)

is-plain-object/dist/is-plain-object.mjs:
  (*!
   * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
   *
   * Copyright (c) 2014-2017, Jon Schlinkert.
   * Released under the MIT License.
   *)
*/
(window.wp ||= {}).editor = wp.editor;
})();
//# sourceMappingURL=index.js.map

```
