[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/js/dist/ -> format-library.js (source)

   1  var wp;
   2  (wp ||= {}).formatLibrary = (() => {
   3    var __create = Object.create;
   4    var __defProp = Object.defineProperty;
   5    var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
   6    var __getOwnPropNames = Object.getOwnPropertyNames;
   7    var __getProtoOf = Object.getPrototypeOf;
   8    var __hasOwnProp = Object.prototype.hasOwnProperty;
   9    var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
  10      get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
  11    }) : x)(function(x) {
  12      if (typeof require !== "undefined") return require.apply(this, arguments);
  13      throw Error('Dynamic require of "' + x + '" is not supported');
  14    });
  15    var __commonJS = (cb, mod) => function __require2() {
  16      return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
  17    };
  18    var __export = (target, all) => {
  19      for (var name16 in all)
  20        __defProp(target, name16, { get: all[name16], enumerable: true });
  21    };
  22    var __copyProps = (to, from, except, desc) => {
  23      if (from && typeof from === "object" || typeof from === "function") {
  24        for (let key of __getOwnPropNames(from))
  25          if (!__hasOwnProp.call(to, key) && key !== except)
  26            __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  27      }
  28      return to;
  29    };
  30    var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  31      // If the importer is in node compatibility mode or this is not an ESM
  32      // file that has been converted to a CommonJS file using a Babel-
  33      // compatible transform (i.e. "__esModule" has not been set), then set
  34      // "default" to the CommonJS "module.exports" for node compatibility.
  35      isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  36      mod
  37    ));
  38  
  39    // package-external:@wordpress/rich-text
  40    var require_rich_text = __commonJS({
  41      "package-external:@wordpress/rich-text"(exports, module) {
  42        module.exports = window.wp.richText;
  43      }
  44    });
  45  
  46    // package-external:@wordpress/i18n
  47    var require_i18n = __commonJS({
  48      "package-external:@wordpress/i18n"(exports, module) {
  49        module.exports = window.wp.i18n;
  50      }
  51    });
  52  
  53    // package-external:@wordpress/block-editor
  54    var require_block_editor = __commonJS({
  55      "package-external:@wordpress/block-editor"(exports, module) {
  56        module.exports = window.wp.blockEditor;
  57      }
  58    });
  59  
  60    // package-external:@wordpress/element
  61    var require_element = __commonJS({
  62      "package-external:@wordpress/element"(exports, module) {
  63        module.exports = window.wp.element;
  64      }
  65    });
  66  
  67    // package-external:@wordpress/primitives
  68    var require_primitives = __commonJS({
  69      "package-external:@wordpress/primitives"(exports, module) {
  70        module.exports = window.wp.primitives;
  71      }
  72    });
  73  
  74    // vendor-external:react/jsx-runtime
  75    var require_jsx_runtime = __commonJS({
  76      "vendor-external:react/jsx-runtime"(exports, module) {
  77        module.exports = window.ReactJSXRuntime;
  78      }
  79    });
  80  
  81    // package-external:@wordpress/components
  82    var require_components = __commonJS({
  83      "package-external:@wordpress/components"(exports, module) {
  84        module.exports = window.wp.components;
  85      }
  86    });
  87  
  88    // vendor-external:react
  89    var require_react = __commonJS({
  90      "vendor-external:react"(exports, module) {
  91        module.exports = window.React;
  92      }
  93    });
  94  
  95    // vendor-external:react-dom
  96    var require_react_dom = __commonJS({
  97      "vendor-external:react-dom"(exports, module) {
  98        module.exports = window.ReactDOM;
  99      }
 100    });
 101  
 102    // node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js
 103    var require_use_sync_external_store_shim_development = __commonJS({
 104      "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) {
 105        "use strict";
 106        (function() {
 107          function is(x, y) {
 108            return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y;
 109          }
 110          function useSyncExternalStore$2(subscribe2, getSnapshot2) {
 111            didWarnOld18Alpha || void 0 === React31.startTransition || (didWarnOld18Alpha = true, console.error(
 112              "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."
 113            ));
 114            var value = getSnapshot2();
 115            if (!didWarnUncachedGetSnapshot) {
 116              var cachedValue = getSnapshot2();
 117              objectIs(value, cachedValue) || (console.error(
 118                "The result of getSnapshot should be cached to avoid an infinite loop"
 119              ), didWarnUncachedGetSnapshot = true);
 120            }
 121            cachedValue = useState17({
 122              inst: { value, getSnapshot: getSnapshot2 }
 123            });
 124            var inst = cachedValue[0].inst, forceUpdate = cachedValue[1];
 125            useLayoutEffect3(
 126              function() {
 127                inst.value = value;
 128                inst.getSnapshot = getSnapshot2;
 129                checkIfSnapshotChanged(inst) && forceUpdate({ inst });
 130              },
 131              [subscribe2, value, getSnapshot2]
 132            );
 133            useEffect12(
 134              function() {
 135                checkIfSnapshotChanged(inst) && forceUpdate({ inst });
 136                return subscribe2(function() {
 137                  checkIfSnapshotChanged(inst) && forceUpdate({ inst });
 138                });
 139              },
 140              [subscribe2]
 141            );
 142            useDebugValue(value);
 143            return value;
 144          }
 145          function checkIfSnapshotChanged(inst) {
 146            var latestGetSnapshot = inst.getSnapshot;
 147            inst = inst.value;
 148            try {
 149              var nextValue = latestGetSnapshot();
 150              return !objectIs(inst, nextValue);
 151            } catch (error2) {
 152              return true;
 153            }
 154          }
 155          function useSyncExternalStore$1(subscribe2, getSnapshot2) {
 156            return getSnapshot2();
 157          }
 158          "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
 159          var React31 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState17 = React31.useState, useEffect12 = React31.useEffect, useLayoutEffect3 = React31.useLayoutEffect, useDebugValue = React31.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2;
 160          exports.useSyncExternalStore = void 0 !== React31.useSyncExternalStore ? React31.useSyncExternalStore : shim;
 161          "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
 162        })();
 163      }
 164    });
 165  
 166    // node_modules/use-sync-external-store/shim/index.js
 167    var require_shim = __commonJS({
 168      "node_modules/use-sync-external-store/shim/index.js"(exports, module) {
 169        "use strict";
 170        if (false) {
 171          module.exports = null;
 172        } else {
 173          module.exports = require_use_sync_external_store_shim_development();
 174        }
 175      }
 176    });
 177  
 178    // package-external:@wordpress/a11y
 179    var require_a11y = __commonJS({
 180      "package-external:@wordpress/a11y"(exports, module) {
 181        module.exports = window.wp.a11y;
 182      }
 183    });
 184  
 185    // package-external:@wordpress/compose
 186    var require_compose = __commonJS({
 187      "package-external:@wordpress/compose"(exports, module) {
 188        module.exports = window.wp.compose;
 189      }
 190    });
 191  
 192    // package-external:@wordpress/private-apis
 193    var require_private_apis = __commonJS({
 194      "package-external:@wordpress/private-apis"(exports, module) {
 195        module.exports = window.wp.privateApis;
 196      }
 197    });
 198  
 199    // package-external:@wordpress/url
 200    var require_url = __commonJS({
 201      "package-external:@wordpress/url"(exports, module) {
 202        module.exports = window.wp.url;
 203      }
 204    });
 205  
 206    // package-external:@wordpress/html-entities
 207    var require_html_entities = __commonJS({
 208      "package-external:@wordpress/html-entities"(exports, module) {
 209        module.exports = window.wp.htmlEntities;
 210      }
 211    });
 212  
 213    // package-external:@wordpress/data
 214    var require_data = __commonJS({
 215      "package-external:@wordpress/data"(exports, module) {
 216        module.exports = window.wp.data;
 217      }
 218    });
 219  
 220    // packages/format-library/build-module/index.mjs
 221    var import_rich_text18 = __toESM(require_rich_text(), 1);
 222  
 223    // packages/format-library/build-module/bold/index.mjs
 224    var import_i18n = __toESM(require_i18n(), 1);
 225    var import_rich_text = __toESM(require_rich_text(), 1);
 226    var import_block_editor = __toESM(require_block_editor(), 1);
 227  
 228    // packages/icons/build-module/icon/index.mjs
 229    var import_element = __toESM(require_element(), 1);
 230    var icon_default = (0, import_element.forwardRef)(
 231      ({ icon, size = 24, ...props }, ref) => {
 232        return (0, import_element.cloneElement)(icon, {
 233          width: size,
 234          height: size,
 235          ...props,
 236          ref
 237        });
 238      }
 239    );
 240  
 241    // packages/icons/build-module/library/button.mjs
 242    var import_primitives = __toESM(require_primitives(), 1);
 243    var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
 244    var button_default = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.Path, { d: "M8 12.5h8V11H8v1.5Z M19 6.5H5a2 2 0 0 0-2 2V15a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8.5a2 2 0 0 0-2-2ZM5 8h14a.5.5 0 0 1 .5.5V15a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V8.5A.5.5 0 0 1 5 8Z" }) });
 245  
 246    // packages/icons/build-module/library/chevron-right.mjs
 247    var import_primitives2 = __toESM(require_primitives(), 1);
 248    var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
 249    var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.Path, { d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z" }) });
 250  
 251    // packages/icons/build-module/library/code.mjs
 252    var import_primitives3 = __toESM(require_primitives(), 1);
 253    var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
 254    var code_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.Path, { d: "M20.8 10.7l-4.3-4.3-1.1 1.1 4.3 4.3c.1.1.1.3 0 .4l-4.3 4.3 1.1 1.1 4.3-4.3c.7-.8.7-1.9 0-2.6zM4.2 11.8l4.3-4.3-1-1-4.3 4.3c-.7.7-.7 1.8 0 2.5l4.3 4.3 1.1-1.1-4.3-4.3c-.2-.1-.2-.3-.1-.4z" }) });
 255  
 256    // packages/icons/build-module/library/color.mjs
 257    var import_primitives4 = __toESM(require_primitives(), 1);
 258    var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);
 259    var color_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.Path, { d: "M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3zm-5.1 7.6c-2.5 0-4.6-2.1-4.6-4.6 0-.3.1-1 .8-2.3.5-.9 1.1-1.9 2-3.1.7-.9 1.3-1.7 1.8-2.3.7.8 1.3 1.6 1.8 2.3.8 1.1 1.5 2.2 2 3.1.7 1.3.8 2 .8 2.3 0 2.5-2.1 4.6-4.6 4.6z" }) });
 260  
 261    // packages/icons/build-module/library/format-bold.mjs
 262    var import_primitives5 = __toESM(require_primitives(), 1);
 263    var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);
 264    var format_bold_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.Path, { d: "M14.7 11.3c1-.6 1.5-1.6 1.5-3 0-2.3-1.3-3.4-4-3.4H7v14h5.8c1.4 0 2.5-.3 3.3-1 .8-.7 1.2-1.7 1.2-2.9.1-1.9-.8-3.1-2.6-3.7zm-5.1-4h2.3c.6 0 1.1.1 1.4.4.3.3.5.7.5 1.2s-.2 1-.5 1.2c-.3.3-.8.4-1.4.4H9.6V7.3zm4.6 9c-.4.3-1 .4-1.7.4H9.6v-3.9h2.9c.7 0 1.3.2 1.7.5.4.3.6.8.6 1.5s-.2 1.2-.6 1.5z" }) });
 265  
 266    // packages/icons/build-module/library/format-italic.mjs
 267    var import_primitives6 = __toESM(require_primitives(), 1);
 268    var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);
 269    var format_italic_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.Path, { d: "M12.5 5L10 19h1.9l2.5-14z" }) });
 270  
 271    // packages/icons/build-module/library/format-strikethrough.mjs
 272    var import_primitives7 = __toESM(require_primitives(), 1);
 273    var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);
 274    var format_strikethrough_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M9.1 9v-.5c0-.6.2-1.1.7-1.4.5-.3 1.2-.5 2-.5.7 0 1.4.1 2.1.3.7.2 1.4.5 2.1.9l.2-1.9c-.6-.3-1.2-.5-1.9-.7-.8-.1-1.6-.2-2.4-.2-1.5 0-2.7.3-3.6 1-.8.7-1.2 1.5-1.2 2.6V9h2zM20 12H4v1h8.3c.3.1.6.2.8.3.5.2.9.5 1.1.8.3.3.4.7.4 1.2 0 .7-.2 1.1-.8 1.5-.5.3-1.2.5-2.1.5-.8 0-1.6-.1-2.4-.3-.8-.2-1.5-.5-2.2-.8L7 18.1c.5.2 1.2.4 2 .6.8.2 1.6.3 2.4.3 1.7 0 3-.3 3.9-1 .9-.7 1.3-1.6 1.3-2.8 0-.9-.2-1.7-.7-2.2H20v-1z" }) });
 275  
 276    // packages/icons/build-module/library/help.mjs
 277    var import_primitives8 = __toESM(require_primitives(), 1);
 278    var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
 279    var help_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.Path, { d: "M12 4a8 8 0 1 1 .001 16.001A8 8 0 0 1 12 4Zm0 1.5a6.5 6.5 0 1 0-.001 13.001A6.5 6.5 0 0 0 12 5.5Zm.75 11h-1.5V15h1.5v1.5Zm-.445-9.234a3 3 0 0 1 .445 5.89V14h-1.5v-1.25c0-.57.452-.958.917-1.01A1.5 1.5 0 0 0 12 8.75a1.5 1.5 0 0 0-1.5 1.5H9a3 3 0 0 1 3.305-2.984Z" }) });
 280  
 281    // packages/icons/build-module/library/language.mjs
 282    var import_primitives9 = __toESM(require_primitives(), 1);
 283    var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);
 284    var language_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.Path, { d: "M17.5 10h-1.7l-3.7 10.5h1.7l.9-2.6h3.9l.9 2.6h1.7L17.5 10zm-2.2 6.3 1.4-4 1.4 4h-2.8zm-4.8-3.8c1.6-1.8 2.9-3.6 3.7-5.7H16V5.2h-5.8V3H8.8v2.2H3v1.5h9.6c-.7 1.6-1.8 3.1-3.1 4.6C8.6 10.2 7.8 9 7.2 8H5.6c.6 1.4 1.7 2.9 2.9 4.4l-2.4 2.4c-.3.4-.7.8-1.1 1.2l1 1 1.2-1.2c.8-.8 1.6-1.5 2.3-2.3.8.9 1.7 1.7 2.5 2.5l.6-1.5c-.7-.6-1.4-1.3-2.1-2z" }) });
 285  
 286    // packages/icons/build-module/library/link.mjs
 287    var import_primitives10 = __toESM(require_primitives(), 1);
 288    var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);
 289    var link_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.Path, { d: "M10 17.389H8.444A5.194 5.194 0 1 1 8.444 7H10v1.5H8.444a3.694 3.694 0 0 0 0 7.389H10v1.5ZM14 7h1.556a5.194 5.194 0 0 1 0 10.39H14v-1.5h1.556a3.694 3.694 0 0 0 0-7.39H14V7Zm-4.5 6h5v-1.5h-5V13Z" }) });
 290  
 291    // packages/icons/build-module/library/math.mjs
 292    var import_primitives11 = __toESM(require_primitives(), 1);
 293    var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
 294    var math_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.Path, { d: "M11.2 6.8c-.7 0-1.4.5-1.6 1.1l-2.8 7.5-1.2-1.8c-.1-.2-.4-.3-.6-.3H3v1.5h1.6l1.2 1.8c.6.9 1.9.7 2.2-.3l2.9-7.9s.1-.2.2-.2h7.8V6.7h-7.8Zm5.3 3.4-1.9 1.9-1.9-1.9-1.1 1.1 1.9 1.9-1.9 1.9 1.1 1.1 1.9-1.9 1.9 1.9 1.1-1.1-1.9-1.9 1.9-1.9-1.1-1.1Z" }) });
 295  
 296    // packages/icons/build-module/library/subscript.mjs
 297    var import_primitives12 = __toESM(require_primitives(), 1);
 298    var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
 299    var subscript_default = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.Path, { d: "M16.9 18.3l.8-1.2c.4-.6.7-1.2.9-1.6.2-.4.3-.8.3-1.2 0-.3-.1-.7-.2-1-.1-.3-.4-.5-.6-.7-.3-.2-.6-.3-1-.3s-.8.1-1.1.2c-.3.1-.7.3-1 .6l.2 1.3c.3-.3.5-.5.8-.6s.6-.2.9-.2c.3 0 .5.1.7.2.2.2.2.4.2.7 0 .3-.1.5-.2.8-.1.3-.4.7-.8 1.3L15 19.4h4.3v-1.2h-2.4zM14.1 7.2h-2L9.5 11 6.9 7.2h-2l3.6 5.3L4.7 18h2l2.7-4 2.7 4h2l-3.8-5.5 3.8-5.3z" }) });
 300  
 301    // packages/icons/build-module/library/superscript.mjs
 302    var import_primitives13 = __toESM(require_primitives(), 1);
 303    var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
 304    var superscript_default = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.Path, { d: "M16.9 10.3l.8-1.3c.4-.6.7-1.2.9-1.6.2-.4.3-.8.3-1.2 0-.3-.1-.7-.2-1-.2-.2-.4-.4-.7-.6-.3-.2-.6-.3-1-.3s-.8.1-1.1.2c-.3.1-.7.3-1 .6l.1 1.3c.3-.3.5-.5.8-.6s.6-.2.9-.2c.3 0 .5.1.7.2.2.2.2.4.2.7 0 .3-.1.5-.2.8-.1.3-.4.7-.8 1.3l-1.8 2.8h4.3v-1.2h-2.2zm-2.8-3.1h-2L9.5 11 6.9 7.2h-2l3.6 5.3L4.7 18h2l2.7-4 2.7 4h2l-3.8-5.5 3.8-5.3z" }) });
 305  
 306    // packages/icons/build-module/library/text-color.mjs
 307    var import_primitives14 = __toESM(require_primitives(), 1);
 308    var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
 309    var text_color_default = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.Path, { d: "M12.9 6h-2l-4 11h1.9l1.1-3h4.2l1.1 3h1.9L12.9 6zm-2.5 6.5l1.5-4.9 1.7 4.9h-3.2z" }) });
 310  
 311    // packages/format-library/build-module/bold/index.mjs
 312    var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
 313    var name = "core/bold";
 314    var title = (0, import_i18n.__)("Bold");
 315    var bold = {
 316      name,
 317      title,
 318      tagName: "strong",
 319      className: null,
 320      edit({ isActive, value, onChange, onFocus, isVisible = true }) {
 321        function onToggle() {
 322          onChange((0, import_rich_text.toggleFormat)(value, { type: name, title }));
 323        }
 324        function onClick() {
 325          onChange((0, import_rich_text.toggleFormat)(value, { type: name }));
 326          onFocus();
 327        }
 328        return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
 329          /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
 330            import_block_editor.RichTextShortcut,
 331            {
 332              type: "primary",
 333              character: "b",
 334              onUse: onToggle
 335            }
 336          ),
 337          isVisible && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
 338            import_block_editor.RichTextToolbarButton,
 339            {
 340              name: "bold",
 341              icon: format_bold_default,
 342              title,
 343              onClick,
 344              isActive,
 345              shortcutType: "primary",
 346              shortcutCharacter: "b"
 347            }
 348          ),
 349          /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
 350            import_block_editor.__unstableRichTextInputEvent,
 351            {
 352              inputType: "formatBold",
 353              onInput: onToggle
 354            }
 355          )
 356        ] });
 357      }
 358    };
 359  
 360    // packages/format-library/build-module/code/index.mjs
 361    var import_i18n2 = __toESM(require_i18n(), 1);
 362    var import_rich_text2 = __toESM(require_rich_text(), 1);
 363    var import_block_editor2 = __toESM(require_block_editor(), 1);
 364    var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);
 365    var name2 = "core/code";
 366    var title2 = (0, import_i18n2.__)("Inline code");
 367    var code = {
 368      name: name2,
 369      title: title2,
 370      tagName: "code",
 371      className: null,
 372      __unstableInputRule(value) {
 373        const BACKTICK = "`";
 374        const { start, text } = value;
 375        const characterBefore = text[start - 1];
 376        if (characterBefore !== BACKTICK) {
 377          return value;
 378        }
 379        if (start - 2 < 0) {
 380          return value;
 381        }
 382        const indexBefore = text.lastIndexOf(BACKTICK, start - 2);
 383        if (indexBefore === -1) {
 384          return value;
 385        }
 386        const startIndex = indexBefore;
 387        const endIndex = start - 2;
 388        if (startIndex === endIndex) {
 389          return value;
 390        }
 391        value = (0, import_rich_text2.remove)(value, startIndex, startIndex + 1);
 392        value = (0, import_rich_text2.remove)(value, endIndex, endIndex + 1);
 393        value = (0, import_rich_text2.applyFormat)(value, { type: name2 }, startIndex, endIndex);
 394        return value;
 395      },
 396      edit({ value, onChange, onFocus, isActive }) {
 397        function onClick() {
 398          onChange((0, import_rich_text2.toggleFormat)(value, { type: name2, title: title2 }));
 399          onFocus();
 400        }
 401        return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
 402          /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
 403            import_block_editor2.RichTextShortcut,
 404            {
 405              type: "access",
 406              character: "x",
 407              onUse: onClick
 408            }
 409          ),
 410          /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
 411            import_block_editor2.RichTextToolbarButton,
 412            {
 413              icon: code_default,
 414              title: title2,
 415              onClick,
 416              isActive,
 417              role: "menuitemcheckbox"
 418            }
 419          )
 420        ] });
 421      }
 422    };
 423  
 424    // packages/format-library/build-module/image/index.mjs
 425    var import_components = __toESM(require_components(), 1);
 426  
 427    // node_modules/clsx/dist/clsx.mjs
 428    function r(e) {
 429      var t, f, n = "";
 430      if ("string" == typeof e || "number" == typeof e) n += e;
 431      else if ("object" == typeof e) if (Array.isArray(e)) {
 432        var o = e.length;
 433        for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
 434      } else for (f in e) e[f] && (n && (n += " "), n += f);
 435      return n;
 436    }
 437    function clsx() {
 438      for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
 439      return n;
 440    }
 441    var clsx_default = clsx;
 442  
 443    // node_modules/@base-ui/utils/useControlled.mjs
 444    var React = __toESM(require_react(), 1);
 445  
 446    // node_modules/@base-ui/utils/error.mjs
 447    var set;
 448    if (true) {
 449      set = /* @__PURE__ */ new Set();
 450    }
 451    function error(...messages) {
 452      if (true) {
 453        const messageKey = messages.join(" ");
 454        if (!set.has(messageKey)) {
 455          set.add(messageKey);
 456          console.error(`Base UI: $messageKey}`);
 457        }
 458      }
 459    }
 460  
 461    // node_modules/@base-ui/utils/useControlled.mjs
 462    function useControlled({
 463      controlled,
 464      default: defaultProp,
 465      name: name16,
 466      state = "value"
 467    }) {
 468      const {
 469        current: isControlled
 470      } = React.useRef(controlled !== void 0);
 471      const [valueState, setValue] = React.useState(defaultProp);
 472      const value = isControlled ? controlled : valueState;
 473      if (true) {
 474        React.useEffect(() => {
 475          if (isControlled !== (controlled !== void 0)) {
 476            error([`A component is changing the $isControlled ? "" : "un"}controlled $state} state of $name16} to be $isControlled ? "un" : ""}controlled.`, "Elements should not switch from uncontrolled to controlled (or vice versa).", `Decide between using a controlled or uncontrolled $name16} 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"));
 477          }
 478        }, [state, name16, controlled]);
 479        const {
 480          current: defaultValue
 481        } = React.useRef(defaultProp);
 482        React.useEffect(() => {
 483          if (!isControlled && serializeToDevModeString(defaultValue) !== serializeToDevModeString(defaultProp)) {
 484            error([`A component is changing the default $state} state of an uncontrolled $name16} after being initialized. To suppress this warning opt to use a controlled $name16}.`].join("\n"));
 485          }
 486        }, [defaultProp]);
 487      }
 488      const setValueIfUncontrolled = React.useCallback((newValue) => {
 489        if (!isControlled) {
 490          setValue(newValue);
 491        }
 492      }, []);
 493      return [value, setValueIfUncontrolled];
 494    }
 495    function serializeToDevModeString(input) {
 496      let nextId = 0;
 497      const seen = /* @__PURE__ */ new WeakMap();
 498      try {
 499        const result = JSON.stringify(input, function replacer(key, value) {
 500          if (key === "_owner" && this != null && typeof this === "object" && "$$typeof" in this) {
 501            return void 0;
 502          }
 503          if (typeof value === "bigint") {
 504            return `__bigint__:$value}`;
 505          }
 506          if (value !== null && typeof value === "object") {
 507            const id = seen.get(value);
 508            if (id !== void 0) {
 509              return `__object__:$id}`;
 510            }
 511            seen.set(value, nextId);
 512            nextId += 1;
 513          }
 514          return value;
 515        });
 516        return result ?? `__top__:$typeof input}`;
 517      } catch {
 518        return "__unserializable__";
 519      }
 520    }
 521  
 522    // node_modules/@base-ui/utils/safeReact.mjs
 523    var React2 = __toESM(require_react(), 1);
 524    var SafeReact = {
 525      ...React2
 526    };
 527  
 528    // node_modules/@base-ui/utils/useRefWithInit.mjs
 529    var React3 = __toESM(require_react(), 1);
 530    var UNINITIALIZED = {};
 531    function useRefWithInit(init, initArg) {
 532      const ref = React3.useRef(UNINITIALIZED);
 533      if (ref.current === UNINITIALIZED) {
 534        ref.current = init(initArg);
 535      }
 536      return ref;
 537    }
 538  
 539    // node_modules/@base-ui/utils/useStableCallback.mjs
 540    var useInsertionEffect = SafeReact.useInsertionEffect;
 541    var useSafeInsertionEffect = (
 542      // React 17 doesn't have useInsertionEffect.
 543      useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late.
 544      useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn()
 545    );
 546    function useStableCallback(callback) {
 547      const stable = useRefWithInit(createStableCallback).current;
 548      stable.next = callback;
 549      useSafeInsertionEffect(stable.effect);
 550      return stable.trampoline;
 551    }
 552    function createStableCallback() {
 553      const stable = {
 554        next: void 0,
 555        callback: assertNotCalled,
 556        trampoline: (...args) => stable.callback?.(...args),
 557        effect: () => {
 558          stable.callback = stable.next;
 559        }
 560      };
 561      return stable;
 562    }
 563    function assertNotCalled() {
 564      if (true) {
 565        throw (
 566          /* minify-error-disabled */
 567          new Error("Base UI: Cannot call an event handler while rendering.")
 568        );
 569      }
 570    }
 571  
 572    // node_modules/@base-ui/utils/useIsoLayoutEffect.mjs
 573    var React4 = __toESM(require_react(), 1);
 574    var noop = () => {
 575    };
 576    var useIsoLayoutEffect = typeof document !== "undefined" ? React4.useLayoutEffect : noop;
 577  
 578    // node_modules/@base-ui/utils/warn.mjs
 579    var set2;
 580    if (true) {
 581      set2 = /* @__PURE__ */ new Set();
 582    }
 583    function warn(...messages) {
 584      if (true) {
 585        const messageKey = messages.join(" ");
 586        if (!set2.has(messageKey)) {
 587          set2.add(messageKey);
 588          console.warn(`Base UI: $messageKey}`);
 589        }
 590      }
 591    }
 592  
 593    // node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs
 594    var React6 = __toESM(require_react(), 1);
 595  
 596    // node_modules/@base-ui/react/internals/composite/list/CompositeListContext.mjs
 597    var React5 = __toESM(require_react(), 1);
 598    var CompositeListContext = /* @__PURE__ */ React5.createContext({
 599      register: () => {
 600      },
 601      unregister: () => {
 602      },
 603      subscribeMapChange: () => {
 604        return () => {
 605        };
 606      },
 607      elementsRef: {
 608        current: []
 609      },
 610      nextIndexRef: {
 611        current: 0
 612      }
 613    });
 614    if (true) CompositeListContext.displayName = "CompositeListContext";
 615    function useCompositeListContext() {
 616      return React5.useContext(CompositeListContext);
 617    }
 618  
 619    // node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs
 620    var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1);
 621    function CompositeList(props) {
 622      const {
 623        children,
 624        elementsRef,
 625        labelsRef,
 626        onMapChange: onMapChangeProp
 627      } = props;
 628      const onMapChange = useStableCallback(onMapChangeProp);
 629      const nextIndexRef = React6.useRef(0);
 630      const listeners = useRefWithInit(createListeners).current;
 631      const map = useRefWithInit(createMap).current;
 632      const [mapTick, setMapTick] = React6.useState(0);
 633      const lastTickRef = React6.useRef(mapTick);
 634      const register = useStableCallback((node, metadata) => {
 635        map.set(node, metadata ?? null);
 636        lastTickRef.current += 1;
 637        setMapTick(lastTickRef.current);
 638      });
 639      const unregister = useStableCallback((node) => {
 640        map.delete(node);
 641        lastTickRef.current += 1;
 642        setMapTick(lastTickRef.current);
 643      });
 644      const sortedMap = React6.useMemo(() => {
 645        disableEslintWarning(mapTick);
 646        const newMap = /* @__PURE__ */ new Map();
 647        const sortedNodes = Array.from(map.keys()).filter((node) => node.isConnected).sort(sortByDocumentPosition);
 648        sortedNodes.forEach((node, index) => {
 649          const metadata = map.get(node) ?? {};
 650          newMap.set(node, {
 651            ...metadata,
 652            index
 653          });
 654        });
 655        return newMap;
 656      }, [map, mapTick]);
 657      useIsoLayoutEffect(() => {
 658        if (typeof MutationObserver !== "function" || sortedMap.size === 0) {
 659          return void 0;
 660        }
 661        const mutationObserver = new MutationObserver((entries) => {
 662          const diff = /* @__PURE__ */ new Set();
 663          const updateDiff = (node) => diff.has(node) ? diff.delete(node) : diff.add(node);
 664          entries.forEach((entry) => {
 665            entry.removedNodes.forEach(updateDiff);
 666            entry.addedNodes.forEach(updateDiff);
 667          });
 668          if (diff.size === 0) {
 669            lastTickRef.current += 1;
 670            setMapTick(lastTickRef.current);
 671          }
 672        });
 673        sortedMap.forEach((_, node) => {
 674          if (node.parentElement) {
 675            mutationObserver.observe(node.parentElement, {
 676              childList: true
 677            });
 678          }
 679        });
 680        return () => {
 681          mutationObserver.disconnect();
 682        };
 683      }, [sortedMap]);
 684      useIsoLayoutEffect(() => {
 685        const shouldUpdateLengths = lastTickRef.current === mapTick;
 686        if (shouldUpdateLengths) {
 687          if (elementsRef.current.length !== sortedMap.size) {
 688            elementsRef.current.length = sortedMap.size;
 689          }
 690          if (labelsRef && labelsRef.current.length !== sortedMap.size) {
 691            labelsRef.current.length = sortedMap.size;
 692          }
 693          nextIndexRef.current = sortedMap.size;
 694        }
 695        onMapChange(sortedMap);
 696      }, [onMapChange, sortedMap, elementsRef, labelsRef, mapTick]);
 697      useIsoLayoutEffect(() => {
 698        return () => {
 699          elementsRef.current = [];
 700        };
 701      }, [elementsRef]);
 702      useIsoLayoutEffect(() => {
 703        return () => {
 704          if (labelsRef) {
 705            labelsRef.current = [];
 706          }
 707        };
 708      }, [labelsRef]);
 709      const subscribeMapChange = useStableCallback((fn) => {
 710        listeners.add(fn);
 711        return () => {
 712          listeners.delete(fn);
 713        };
 714      });
 715      useIsoLayoutEffect(() => {
 716        listeners.forEach((l) => l(sortedMap));
 717      }, [listeners, sortedMap]);
 718      const contextValue = React6.useMemo(() => ({
 719        register,
 720        unregister,
 721        subscribeMapChange,
 722        elementsRef,
 723        labelsRef,
 724        nextIndexRef
 725      }), [register, unregister, subscribeMapChange, elementsRef, labelsRef, nextIndexRef]);
 726      return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CompositeListContext.Provider, {
 727        value: contextValue,
 728        children
 729      });
 730    }
 731    function createMap() {
 732      return /* @__PURE__ */ new Map();
 733    }
 734    function createListeners() {
 735      return /* @__PURE__ */ new Set();
 736    }
 737    function sortByDocumentPosition(a, b) {
 738      const position = a.compareDocumentPosition(b);
 739      if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {
 740        return -1;
 741      }
 742      if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {
 743        return 1;
 744      }
 745      return 0;
 746    }
 747    function disableEslintWarning(_) {
 748    }
 749  
 750    // node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs
 751    var React7 = __toESM(require_react(), 1);
 752    var DirectionContext = /* @__PURE__ */ React7.createContext(void 0);
 753    if (true) DirectionContext.displayName = "DirectionContext";
 754    function useDirection() {
 755      const context = React7.useContext(DirectionContext);
 756      return context?.direction ?? "ltr";
 757    }
 758  
 759    // node_modules/@base-ui/react/internals/useRenderElement.mjs
 760    var React10 = __toESM(require_react(), 1);
 761  
 762    // node_modules/@base-ui/utils/useMergedRefs.mjs
 763    function useMergedRefs(a, b, c, d) {
 764      const forkRef = useRefWithInit(createForkRef).current;
 765      if (didChange(forkRef, a, b, c, d)) {
 766        update(forkRef, [a, b, c, d]);
 767      }
 768      return forkRef.callback;
 769    }
 770    function useMergedRefsN(refs) {
 771      const forkRef = useRefWithInit(createForkRef).current;
 772      if (didChangeN(forkRef, refs)) {
 773        update(forkRef, refs);
 774      }
 775      return forkRef.callback;
 776    }
 777    function createForkRef() {
 778      return {
 779        callback: null,
 780        cleanup: null,
 781        refs: []
 782      };
 783    }
 784    function didChange(forkRef, a, b, c, d) {
 785      return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d;
 786    }
 787    function didChangeN(forkRef, newRefs) {
 788      return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index) => ref !== newRefs[index]);
 789    }
 790    function update(forkRef, refs) {
 791      forkRef.refs = refs;
 792      if (refs.every((ref) => ref == null)) {
 793        forkRef.callback = null;
 794        return;
 795      }
 796      forkRef.callback = (instance) => {
 797        if (forkRef.cleanup) {
 798          forkRef.cleanup();
 799          forkRef.cleanup = null;
 800        }
 801        if (instance != null) {
 802          const cleanupCallbacks = Array(refs.length).fill(null);
 803          for (let i = 0; i < refs.length; i += 1) {
 804            const ref = refs[i];
 805            if (ref == null) {
 806              continue;
 807            }
 808            switch (typeof ref) {
 809              case "function": {
 810                const refCleanup = ref(instance);
 811                if (typeof refCleanup === "function") {
 812                  cleanupCallbacks[i] = refCleanup;
 813                }
 814                break;
 815              }
 816              case "object": {
 817                ref.current = instance;
 818                break;
 819              }
 820              default:
 821            }
 822          }
 823          forkRef.cleanup = () => {
 824            for (let i = 0; i < refs.length; i += 1) {
 825              const ref = refs[i];
 826              if (ref == null) {
 827                continue;
 828              }
 829              switch (typeof ref) {
 830                case "function": {
 831                  const cleanupCallback = cleanupCallbacks[i];
 832                  if (typeof cleanupCallback === "function") {
 833                    cleanupCallback();
 834                  } else {
 835                    ref(null);
 836                  }
 837                  break;
 838                }
 839                case "object": {
 840                  ref.current = null;
 841                  break;
 842                }
 843                default:
 844              }
 845            }
 846          };
 847        }
 848      };
 849    }
 850  
 851    // node_modules/@base-ui/utils/getReactElementRef.mjs
 852    var React9 = __toESM(require_react(), 1);
 853  
 854    // node_modules/@base-ui/utils/reactVersion.mjs
 855    var React8 = __toESM(require_react(), 1);
 856    var majorVersion = parseInt(React8.version, 10);
 857    function isReactVersionAtLeast(reactVersionToCheck) {
 858      return majorVersion >= reactVersionToCheck;
 859    }
 860  
 861    // node_modules/@base-ui/utils/getReactElementRef.mjs
 862    function getReactElementRef(element) {
 863      if (!/* @__PURE__ */ React9.isValidElement(element)) {
 864        return null;
 865      }
 866      const reactElement = element;
 867      const propsWithRef = reactElement.props;
 868      return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null;
 869    }
 870  
 871    // node_modules/@base-ui/utils/mergeObjects.mjs
 872    function mergeObjects(a, b) {
 873      if (a && !b) {
 874        return a;
 875      }
 876      if (!a && b) {
 877        return b;
 878      }
 879      if (a || b) {
 880        return {
 881          ...a,
 882          ...b
 883        };
 884      }
 885      return void 0;
 886    }
 887  
 888    // node_modules/@base-ui/utils/empty.mjs
 889    function NOOP() {
 890    }
 891    var EMPTY_ARRAY = Object.freeze([]);
 892    var EMPTY_OBJECT = Object.freeze({});
 893  
 894    // node_modules/@base-ui/react/internals/getStateAttributesProps.mjs
 895    function getStateAttributesProps(state, customMapping) {
 896      const props = {};
 897      for (const key in state) {
 898        const value = state[key];
 899        if (customMapping?.hasOwnProperty(key)) {
 900          const customProps = customMapping[key](value);
 901          if (customProps != null) {
 902            Object.assign(props, customProps);
 903          }
 904          continue;
 905        }
 906        if (value === true) {
 907          props[`data-$key.toLowerCase()}`] = "";
 908        } else if (value) {
 909          props[`data-$key.toLowerCase()}`] = value.toString();
 910        }
 911      }
 912      return props;
 913    }
 914  
 915    // node_modules/@base-ui/react/utils/resolveClassName.mjs
 916    function resolveClassName(className, state) {
 917      return typeof className === "function" ? className(state) : className;
 918    }
 919  
 920    // node_modules/@base-ui/react/utils/resolveStyle.mjs
 921    function resolveStyle(style, state) {
 922      return typeof style === "function" ? style(state) : style;
 923    }
 924  
 925    // node_modules/@base-ui/react/merge-props/mergeProps.mjs
 926    var EMPTY_PROPS = {};
 927    function mergeProps(a, b, c, d, e) {
 928      if (!c && !d && !e && !a) {
 929        return createInitialMergedProps(b);
 930      }
 931      let merged = createInitialMergedProps(a);
 932      if (b) {
 933        merged = mergeInto(merged, b);
 934      }
 935      if (c) {
 936        merged = mergeInto(merged, c);
 937      }
 938      if (d) {
 939        merged = mergeInto(merged, d);
 940      }
 941      if (e) {
 942        merged = mergeInto(merged, e);
 943      }
 944      return merged;
 945    }
 946    function mergePropsN(props) {
 947      if (props.length === 0) {
 948        return EMPTY_PROPS;
 949      }
 950      if (props.length === 1) {
 951        return createInitialMergedProps(props[0]);
 952      }
 953      let merged = createInitialMergedProps(props[0]);
 954      for (let i = 1; i < props.length; i += 1) {
 955        merged = mergeInto(merged, props[i]);
 956      }
 957      return merged;
 958    }
 959    function createInitialMergedProps(inputProps) {
 960      if (isPropsGetter(inputProps)) {
 961        return {
 962          ...resolvePropsGetter(inputProps, EMPTY_PROPS)
 963        };
 964      }
 965      return copyInitialProps(inputProps);
 966    }
 967    function mergeInto(merged, inputProps) {
 968      if (isPropsGetter(inputProps)) {
 969        return resolvePropsGetter(inputProps, merged);
 970      }
 971      return mutablyMergeInto(merged, inputProps);
 972    }
 973    function copyInitialProps(inputProps) {
 974      const copiedProps = {
 975        ...inputProps
 976      };
 977      for (const propName in copiedProps) {
 978        const propValue = copiedProps[propName];
 979        if (isEventHandler(propName, propValue)) {
 980          copiedProps[propName] = wrapEventHandler(propValue);
 981        }
 982      }
 983      return copiedProps;
 984    }
 985    function mutablyMergeInto(mergedProps, externalProps) {
 986      if (!externalProps) {
 987        return mergedProps;
 988      }
 989      for (const propName in externalProps) {
 990        const externalPropValue = externalProps[propName];
 991        switch (propName) {
 992          case "style": {
 993            mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue);
 994            break;
 995          }
 996          case "className": {
 997            mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue);
 998            break;
 999          }
1000          default: {
1001            if (isEventHandler(propName, externalPropValue)) {
1002              mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue);
1003            } else {
1004              mergedProps[propName] = externalPropValue;
1005            }
1006          }
1007        }
1008      }
1009      return mergedProps;
1010    }
1011    function isEventHandler(key, value) {
1012      const code0 = key.charCodeAt(0);
1013      const code1 = key.charCodeAt(1);
1014      const code2 = key.charCodeAt(2);
1015      return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined");
1016    }
1017    function isPropsGetter(inputProps) {
1018      return typeof inputProps === "function";
1019    }
1020    function resolvePropsGetter(inputProps, previousProps) {
1021      if (isPropsGetter(inputProps)) {
1022        return inputProps(previousProps);
1023      }
1024      return inputProps ?? EMPTY_PROPS;
1025    }
1026    function mergeEventHandlers(ourHandler, theirHandler) {
1027      if (!theirHandler) {
1028        return ourHandler;
1029      }
1030      if (!ourHandler) {
1031        return wrapEventHandler(theirHandler);
1032      }
1033      return (...args) => {
1034        const event = args[0];
1035        if (isSyntheticEvent(event)) {
1036          const baseUIEvent = event;
1037          makeEventPreventable(baseUIEvent);
1038          const result2 = theirHandler(...args);
1039          if (!baseUIEvent.baseUIHandlerPrevented) {
1040            ourHandler?.(...args);
1041          }
1042          return result2;
1043        }
1044        const result = theirHandler(...args);
1045        ourHandler?.(...args);
1046        return result;
1047      };
1048    }
1049    function wrapEventHandler(handler) {
1050      if (!handler) {
1051        return handler;
1052      }
1053      return (...args) => {
1054        const event = args[0];
1055        if (isSyntheticEvent(event)) {
1056          makeEventPreventable(event);
1057        }
1058        return handler(...args);
1059      };
1060    }
1061    function makeEventPreventable(event) {
1062      event.preventBaseUIHandler = () => {
1063        event.baseUIHandlerPrevented = true;
1064      };
1065      return event;
1066    }
1067    function mergeClassNames(ourClassName, theirClassName) {
1068      if (theirClassName) {
1069        if (ourClassName) {
1070          return theirClassName + " " + ourClassName;
1071        }
1072        return theirClassName;
1073      }
1074      return ourClassName;
1075    }
1076    function isSyntheticEvent(event) {
1077      return event != null && typeof event === "object" && "nativeEvent" in event;
1078    }
1079  
1080    // node_modules/@base-ui/react/internals/useRenderElement.mjs
1081    var import_react = __toESM(require_react(), 1);
1082    function useRenderElement(element, componentProps, params = {}) {
1083      const renderProp = componentProps.render;
1084      const outProps = useRenderElementProps(componentProps, params);
1085      if (params.enabled === false) {
1086        return null;
1087      }
1088      const state = params.state ?? EMPTY_OBJECT;
1089      return evaluateRenderProp(element, renderProp, outProps, state);
1090    }
1091    function useRenderElementProps(componentProps, params = {}) {
1092      const {
1093        className: classNameProp,
1094        style: styleProp,
1095        render: renderProp
1096      } = componentProps;
1097      const {
1098        state = EMPTY_OBJECT,
1099        ref,
1100        props,
1101        stateAttributesMapping: stateAttributesMapping3,
1102        enabled = true
1103      } = params;
1104      const className = enabled ? resolveClassName(classNameProp, state) : void 0;
1105      const style = enabled ? resolveStyle(styleProp, state) : void 0;
1106      const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping3) : EMPTY_OBJECT;
1107      const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0;
1108      const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT;
1109      if (typeof document !== "undefined") {
1110        if (!enabled) {
1111          useMergedRefs(null, null);
1112        } else if (Array.isArray(ref)) {
1113          outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]);
1114        } else {
1115          outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref);
1116        }
1117      }
1118      if (!enabled) {
1119        return EMPTY_OBJECT;
1120      }
1121      if (className !== void 0) {
1122        outProps.className = mergeClassNames(outProps.className, className);
1123      }
1124      if (style !== void 0) {
1125        outProps.style = mergeObjects(outProps.style, style);
1126      }
1127      return outProps;
1128    }
1129    function resolveRenderFunctionProps(props) {
1130      if (Array.isArray(props)) {
1131        return mergePropsN(props);
1132      }
1133      return mergeProps(void 0, props);
1134    }
1135    var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy");
1136    var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/;
1137    var LOWERCASE_CHARACTER_PATTERN = /[a-z]/;
1138    function evaluateRenderProp(element, render, props, state) {
1139      if (render) {
1140        if (typeof render === "function") {
1141          if (true) {
1142            warnIfRenderPropLooksLikeComponent(render);
1143          }
1144          return render(props, state);
1145        }
1146        const mergedProps = mergeProps(props, render.props);
1147        mergedProps.ref = props.ref;
1148        let newElement = render;
1149        if (newElement?.$$typeof === REACT_LAZY_TYPE) {
1150          const children = React10.Children.toArray(render);
1151          newElement = children[0];
1152        }
1153        if (true) {
1154          if (!/* @__PURE__ */ React10.isValidElement(newElement)) {
1155            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"));
1156          }
1157        }
1158        return /* @__PURE__ */ React10.cloneElement(newElement, mergedProps);
1159      }
1160      if (element) {
1161        if (typeof element === "string") {
1162          return renderTag(element, props);
1163        }
1164      }
1165      throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage_default(8));
1166    }
1167    function warnIfRenderPropLooksLikeComponent(renderFn) {
1168      const functionName = renderFn.name;
1169      if (functionName.length === 0) {
1170        return;
1171      }
1172      if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) {
1173        return;
1174      }
1175      if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) {
1176        return;
1177      }
1178      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");
1179    }
1180    function renderTag(Tag, props) {
1181      if (Tag === "button") {
1182        return /* @__PURE__ */ (0, import_react.createElement)("button", {
1183          type: "button",
1184          ...props,
1185          key: props.key
1186        });
1187      }
1188      if (Tag === "img") {
1189        return /* @__PURE__ */ (0, import_react.createElement)("img", {
1190          alt: "",
1191          ...props,
1192          key: props.key
1193        });
1194      }
1195      return /* @__PURE__ */ React10.createElement(Tag, props);
1196    }
1197  
1198    // node_modules/@base-ui/utils/useId.mjs
1199    var React11 = __toESM(require_react(), 1);
1200    var globalId = 0;
1201    function useGlobalId(idOverride, prefix = "mui") {
1202      const [defaultId, setDefaultId] = React11.useState(idOverride);
1203      const id = idOverride || defaultId;
1204      React11.useEffect(() => {
1205        if (defaultId == null) {
1206          globalId += 1;
1207          setDefaultId(`$prefix}-$globalId}`);
1208        }
1209      }, [defaultId, prefix]);
1210      return id;
1211    }
1212    var maybeReactUseId = SafeReact.useId;
1213    function useId(idOverride, prefix) {
1214      if (maybeReactUseId !== void 0) {
1215        const reactId = maybeReactUseId();
1216        return idOverride ?? (prefix ? `$prefix}-$reactId}` : reactId);
1217      }
1218      return useGlobalId(idOverride, prefix);
1219    }
1220  
1221    // node_modules/@base-ui/react/internals/useBaseUiId.mjs
1222    function useBaseUiId(idOverride) {
1223      return useId(idOverride, "base-ui");
1224    }
1225  
1226    // node_modules/@base-ui/react/internals/reason-parts.mjs
1227    var reason_parts_exports = {};
1228    __export(reason_parts_exports, {
1229      cancelOpen: () => cancelOpen,
1230      chipRemovePress: () => chipRemovePress,
1231      clearPress: () => clearPress,
1232      closePress: () => closePress,
1233      closeWatcher: () => closeWatcher,
1234      decrementPress: () => decrementPress,
1235      disabled: () => disabled,
1236      drag: () => drag,
1237      escapeKey: () => escapeKey,
1238      focusOut: () => focusOut,
1239      imperativeAction: () => imperativeAction,
1240      incrementPress: () => incrementPress,
1241      initial: () => initial,
1242      inputBlur: () => inputBlur,
1243      inputChange: () => inputChange,
1244      inputClear: () => inputClear,
1245      inputPaste: () => inputPaste,
1246      inputPress: () => inputPress,
1247      itemPress: () => itemPress,
1248      keyboard: () => keyboard,
1249      linkPress: () => linkPress,
1250      listNavigation: () => listNavigation,
1251      missing: () => missing,
1252      none: () => none,
1253      outsidePress: () => outsidePress,
1254      pointer: () => pointer,
1255      scrub: () => scrub,
1256      siblingOpen: () => siblingOpen,
1257      swipe: () => swipe,
1258      trackPress: () => trackPress,
1259      triggerFocus: () => triggerFocus,
1260      triggerHover: () => triggerHover,
1261      triggerPress: () => triggerPress,
1262      wheel: () => wheel,
1263      windowResize: () => windowResize
1264    });
1265    var none = "none";
1266    var triggerPress = "trigger-press";
1267    var triggerHover = "trigger-hover";
1268    var triggerFocus = "trigger-focus";
1269    var outsidePress = "outside-press";
1270    var itemPress = "item-press";
1271    var closePress = "close-press";
1272    var linkPress = "link-press";
1273    var clearPress = "clear-press";
1274    var chipRemovePress = "chip-remove-press";
1275    var trackPress = "track-press";
1276    var incrementPress = "increment-press";
1277    var decrementPress = "decrement-press";
1278    var inputChange = "input-change";
1279    var inputClear = "input-clear";
1280    var inputBlur = "input-blur";
1281    var inputPaste = "input-paste";
1282    var inputPress = "input-press";
1283    var focusOut = "focus-out";
1284    var escapeKey = "escape-key";
1285    var closeWatcher = "close-watcher";
1286    var listNavigation = "list-navigation";
1287    var keyboard = "keyboard";
1288    var pointer = "pointer";
1289    var drag = "drag";
1290    var wheel = "wheel";
1291    var scrub = "scrub";
1292    var cancelOpen = "cancel-open";
1293    var siblingOpen = "sibling-open";
1294    var disabled = "disabled";
1295    var missing = "missing";
1296    var initial = "initial";
1297    var imperativeAction = "imperative-action";
1298    var swipe = "swipe";
1299    var windowResize = "window-resize";
1300  
1301    // node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs
1302    function createChangeEventDetails(reason, event, trigger, customProperties) {
1303      let canceled = false;
1304      let allowPropagation = false;
1305      const custom = customProperties ?? EMPTY_OBJECT;
1306      const details = {
1307        reason,
1308        event: event ?? new Event("base-ui"),
1309        cancel() {
1310          canceled = true;
1311        },
1312        allowPropagation() {
1313          allowPropagation = true;
1314        },
1315        get isCanceled() {
1316          return canceled;
1317        },
1318        get isPropagationAllowed() {
1319          return allowPropagation;
1320        },
1321        trigger,
1322        ...custom
1323      };
1324      return details;
1325    }
1326  
1327    // node_modules/@base-ui/react/internals/useTransitionStatus.mjs
1328    var React13 = __toESM(require_react(), 1);
1329  
1330    // node_modules/@base-ui/utils/useOnMount.mjs
1331    var React12 = __toESM(require_react(), 1);
1332    var EMPTY = [];
1333    function useOnMount(fn) {
1334      React12.useEffect(fn, EMPTY);
1335    }
1336  
1337    // node_modules/@base-ui/utils/useAnimationFrame.mjs
1338    var EMPTY2 = null;
1339    var LAST_RAF = globalThis.requestAnimationFrame;
1340    var Scheduler = class {
1341      /* This implementation uses an array as a backing data-structure for frame callbacks.
1342       * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it
1343       * never calls the native `cancelAnimationFrame` if there are no frames left. This can
1344       * be much more efficient if there is a call pattern that alterns as
1345       * "request-cancel-request-cancel-…".
1346       * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation
1347       * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */
1348      callbacks = [];
1349      callbacksCount = 0;
1350      nextId = 1;
1351      startId = 1;
1352      isScheduled = false;
1353      tick = (timestamp) => {
1354        this.isScheduled = false;
1355        const currentCallbacks = this.callbacks;
1356        const currentCallbacksCount = this.callbacksCount;
1357        this.callbacks = [];
1358        this.callbacksCount = 0;
1359        this.startId = this.nextId;
1360        if (currentCallbacksCount > 0) {
1361          for (let i = 0; i < currentCallbacks.length; i += 1) {
1362            currentCallbacks[i]?.(timestamp);
1363          }
1364        }
1365      };
1366      request(fn) {
1367        const id = this.nextId;
1368        this.nextId += 1;
1369        this.callbacks.push(fn);
1370        this.callbacksCount += 1;
1371        const didRAFChange = LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true);
1372        if (!this.isScheduled || didRAFChange) {
1373          requestAnimationFrame(this.tick);
1374          this.isScheduled = true;
1375        }
1376        return id;
1377      }
1378      cancel(id) {
1379        const index = id - this.startId;
1380        if (index < 0 || index >= this.callbacks.length) {
1381          return;
1382        }
1383        this.callbacks[index] = null;
1384        this.callbacksCount -= 1;
1385      }
1386    };
1387    var scheduler = new Scheduler();
1388    var AnimationFrame = class _AnimationFrame {
1389      static create() {
1390        return new _AnimationFrame();
1391      }
1392      static request(fn) {
1393        return scheduler.request(fn);
1394      }
1395      static cancel(id) {
1396        return scheduler.cancel(id);
1397      }
1398      currentId = EMPTY2;
1399      /**
1400       * Executes `fn` after `delay`, clearing any previously scheduled call.
1401       */
1402      request(fn) {
1403        this.cancel();
1404        this.currentId = scheduler.request(() => {
1405          this.currentId = EMPTY2;
1406          fn();
1407        });
1408      }
1409      cancel = () => {
1410        if (this.currentId !== EMPTY2) {
1411          scheduler.cancel(this.currentId);
1412          this.currentId = EMPTY2;
1413        }
1414      };
1415      disposeEffect = () => {
1416        return this.cancel;
1417      };
1418    };
1419    function useAnimationFrame() {
1420      const timeout = useRefWithInit(AnimationFrame.create).current;
1421      useOnMount(timeout.disposeEffect);
1422      return timeout;
1423    }
1424  
1425    // node_modules/@base-ui/react/internals/useTransitionStatus.mjs
1426    function useTransitionStatus(open, enableIdleState = false, deferEndingState = false) {
1427      const [transitionStatus, setTransitionStatus] = React13.useState(open && enableIdleState ? "idle" : void 0);
1428      const [mounted, setMounted] = React13.useState(open);
1429      if (open && !mounted) {
1430        setMounted(true);
1431        setTransitionStatus("starting");
1432      }
1433      if (!open && mounted && transitionStatus !== "ending" && !deferEndingState) {
1434        setTransitionStatus("ending");
1435      }
1436      if (!open && !mounted && transitionStatus === "ending") {
1437        setTransitionStatus(void 0);
1438      }
1439      useIsoLayoutEffect(() => {
1440        if (!open && mounted && transitionStatus !== "ending" && deferEndingState) {
1441          const frame = AnimationFrame.request(() => {
1442            setTransitionStatus("ending");
1443          });
1444          return () => {
1445            AnimationFrame.cancel(frame);
1446          };
1447        }
1448        return void 0;
1449      }, [open, mounted, transitionStatus, deferEndingState]);
1450      useIsoLayoutEffect(() => {
1451        if (!open || enableIdleState) {
1452          return void 0;
1453        }
1454        const frame = AnimationFrame.request(() => {
1455          setTransitionStatus(void 0);
1456        });
1457        return () => {
1458          AnimationFrame.cancel(frame);
1459        };
1460      }, [enableIdleState, open]);
1461      useIsoLayoutEffect(() => {
1462        if (!open || !enableIdleState) {
1463          return void 0;
1464        }
1465        if (open && mounted && transitionStatus !== "idle") {
1466          setTransitionStatus("starting");
1467        }
1468        const frame = AnimationFrame.request(() => {
1469          setTransitionStatus("idle");
1470        });
1471        return () => {
1472          AnimationFrame.cancel(frame);
1473        };
1474      }, [enableIdleState, open, mounted, transitionStatus]);
1475      return {
1476        mounted,
1477        setMounted,
1478        transitionStatus
1479      };
1480    }
1481  
1482    // node_modules/@base-ui/react/internals/composite/list/useCompositeListItem.mjs
1483    var React14 = __toESM(require_react(), 1);
1484    var IndexGuessBehavior = /* @__PURE__ */ (function(IndexGuessBehavior2) {
1485      IndexGuessBehavior2[IndexGuessBehavior2["None"] = 0] = "None";
1486      IndexGuessBehavior2[IndexGuessBehavior2["GuessFromOrder"] = 1] = "GuessFromOrder";
1487      return IndexGuessBehavior2;
1488    })({});
1489    function useCompositeListItem(params = {}) {
1490      const {
1491        label,
1492        metadata,
1493        textRef,
1494        indexGuessBehavior,
1495        index: externalIndex
1496      } = params;
1497      const {
1498        register,
1499        unregister,
1500        subscribeMapChange,
1501        elementsRef,
1502        labelsRef,
1503        nextIndexRef
1504      } = useCompositeListContext();
1505      const indexRef = React14.useRef(-1);
1506      const [index, setIndex] = React14.useState(externalIndex ?? (indexGuessBehavior === IndexGuessBehavior.GuessFromOrder ? () => {
1507        if (indexRef.current === -1) {
1508          const newIndex = nextIndexRef.current;
1509          nextIndexRef.current += 1;
1510          indexRef.current = newIndex;
1511        }
1512        return indexRef.current;
1513      } : -1));
1514      const componentRef = React14.useRef(null);
1515      const ref = React14.useCallback((node) => {
1516        componentRef.current = node;
1517        if (index !== -1 && node !== null) {
1518          elementsRef.current[index] = node;
1519          if (labelsRef) {
1520            const isLabelDefined = label !== void 0;
1521            labelsRef.current[index] = isLabelDefined ? label : textRef?.current?.textContent ?? node.textContent;
1522          }
1523        }
1524      }, [index, elementsRef, labelsRef, label, textRef]);
1525      useIsoLayoutEffect(() => {
1526        if (externalIndex != null) {
1527          return void 0;
1528        }
1529        const node = componentRef.current;
1530        if (node) {
1531          register(node, metadata);
1532          return () => {
1533            unregister(node);
1534          };
1535        }
1536        return void 0;
1537      }, [externalIndex, register, unregister, metadata]);
1538      useIsoLayoutEffect(() => {
1539        if (externalIndex != null) {
1540          return void 0;
1541        }
1542        return subscribeMapChange((map) => {
1543          const i = componentRef.current ? map.get(componentRef.current)?.index : null;
1544          if (i != null) {
1545            setIndex(i);
1546          }
1547        });
1548      }, [externalIndex, subscribeMapChange, setIndex]);
1549      return {
1550        ref,
1551        index
1552      };
1553    }
1554  
1555    // node_modules/@base-ui/react/internals/stateAttributesMapping.mjs
1556    var TransitionStatusDataAttributes = /* @__PURE__ */ (function(TransitionStatusDataAttributes2) {
1557      TransitionStatusDataAttributes2["startingStyle"] = "data-starting-style";
1558      TransitionStatusDataAttributes2["endingStyle"] = "data-ending-style";
1559      return TransitionStatusDataAttributes2;
1560    })({});
1561    var STARTING_HOOK = {
1562      [TransitionStatusDataAttributes.startingStyle]: ""
1563    };
1564    var ENDING_HOOK = {
1565      [TransitionStatusDataAttributes.endingStyle]: ""
1566    };
1567    var transitionStatusMapping = {
1568      transitionStatus(value) {
1569        if (value === "starting") {
1570          return STARTING_HOOK;
1571        }
1572        if (value === "ending") {
1573          return ENDING_HOOK;
1574        }
1575        return null;
1576      }
1577    };
1578  
1579    // node_modules/@base-ui/react/internals/use-button/useButton.mjs
1580    var React17 = __toESM(require_react(), 1);
1581  
1582    // node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
1583    function hasWindow() {
1584      return typeof window !== "undefined";
1585    }
1586    function getWindow(node) {
1587      var _node$ownerDocument;
1588      return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
1589    }
1590    function isHTMLElement(value) {
1591      if (!hasWindow()) {
1592        return false;
1593      }
1594      return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;
1595    }
1596    function isShadowRoot(value) {
1597      if (!hasWindow() || typeof ShadowRoot === "undefined") {
1598        return false;
1599      }
1600      return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
1601    }
1602    function getComputedStyle2(element) {
1603      return getWindow(element).getComputedStyle(element);
1604    }
1605  
1606    // node_modules/@base-ui/react/internals/composite/root/CompositeRootContext.mjs
1607    var React15 = __toESM(require_react(), 1);
1608    var CompositeRootContext = /* @__PURE__ */ React15.createContext(void 0);
1609    if (true) CompositeRootContext.displayName = "CompositeRootContext";
1610    function useCompositeRootContext(optional = false) {
1611      const context = React15.useContext(CompositeRootContext);
1612      if (context === void 0 && !optional) {
1613        throw new Error(true ? "Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>." : formatErrorMessage_default(16));
1614      }
1615      return context;
1616    }
1617  
1618    // node_modules/@base-ui/react/utils/useFocusableWhenDisabled.mjs
1619    var React16 = __toESM(require_react(), 1);
1620    function useFocusableWhenDisabled(parameters) {
1621      const {
1622        focusableWhenDisabled,
1623        disabled: disabled2,
1624        composite = false,
1625        tabIndex: tabIndexProp = 0,
1626        isNativeButton
1627      } = parameters;
1628      const isFocusableComposite = composite && focusableWhenDisabled !== false;
1629      const isNonFocusableComposite = composite && focusableWhenDisabled === false;
1630      const props = React16.useMemo(() => {
1631        const additionalProps = {
1632          // allow Tabbing away from focusableWhenDisabled elements
1633          onKeyDown(event) {
1634            if (disabled2 && focusableWhenDisabled && event.key !== "Tab") {
1635              event.preventDefault();
1636            }
1637          }
1638        };
1639        if (!composite) {
1640          additionalProps.tabIndex = tabIndexProp;
1641          if (!isNativeButton && disabled2) {
1642            additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1;
1643          }
1644        }
1645        if (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled2) {
1646          additionalProps["aria-disabled"] = disabled2;
1647        }
1648        if (isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite)) {
1649          additionalProps.disabled = disabled2;
1650        }
1651        return additionalProps;
1652      }, [composite, disabled2, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp]);
1653      return {
1654        props
1655      };
1656    }
1657  
1658    // node_modules/@base-ui/react/internals/use-button/useButton.mjs
1659    function useButton(parameters = {}) {
1660      const {
1661        disabled: disabled2 = false,
1662        focusableWhenDisabled,
1663        tabIndex = 0,
1664        native: isNativeButton = true,
1665        composite: compositeProp
1666      } = parameters;
1667      const elementRef = React17.useRef(null);
1668      const compositeRootContext = useCompositeRootContext(true);
1669      const isCompositeItem = compositeProp ?? compositeRootContext !== void 0;
1670      const {
1671        props: focusableWhenDisabledProps
1672      } = useFocusableWhenDisabled({
1673        focusableWhenDisabled,
1674        disabled: disabled2,
1675        composite: isCompositeItem,
1676        tabIndex,
1677        isNativeButton
1678      });
1679      if (true) {
1680        React17.useEffect(() => {
1681          if (!elementRef.current) {
1682            return;
1683          }
1684          const isButtonTag = isButtonElement(elementRef.current);
1685          if (isNativeButton) {
1686            if (!isButtonTag) {
1687              const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
1688              const message = "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`.";
1689              error(`$message}$ownerStackMessage}`);
1690            }
1691          } else if (isButtonTag) {
1692            const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
1693            const message = "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`.";
1694            error(`$message}$ownerStackMessage}`);
1695          }
1696        }, [isNativeButton]);
1697      }
1698      const updateDisabled = React17.useCallback(() => {
1699        const element = elementRef.current;
1700        if (!isButtonElement(element)) {
1701          return;
1702        }
1703        if (isCompositeItem && disabled2 && focusableWhenDisabledProps.disabled === void 0 && element.disabled) {
1704          element.disabled = false;
1705        }
1706      }, [disabled2, focusableWhenDisabledProps.disabled, isCompositeItem]);
1707      useIsoLayoutEffect(updateDisabled, [updateDisabled]);
1708      const getButtonProps = React17.useCallback((externalProps = {}) => {
1709        const {
1710          onClick: externalOnClick,
1711          onMouseDown: externalOnMouseDown,
1712          onKeyUp: externalOnKeyUp,
1713          onKeyDown: externalOnKeyDown,
1714          onPointerDown: externalOnPointerDown,
1715          ...otherExternalProps
1716        } = externalProps;
1717        return mergeProps({
1718          onClick(event) {
1719            if (disabled2) {
1720              event.preventDefault();
1721              return;
1722            }
1723            externalOnClick?.(event);
1724          },
1725          onMouseDown(event) {
1726            if (!disabled2) {
1727              externalOnMouseDown?.(event);
1728            }
1729          },
1730          onKeyDown(event) {
1731            if (disabled2) {
1732              return;
1733            }
1734            makeEventPreventable(event);
1735            externalOnKeyDown?.(event);
1736            if (event.baseUIHandlerPrevented) {
1737              return;
1738            }
1739            const isCurrentTarget = event.target === event.currentTarget;
1740            const currentTarget = event.currentTarget;
1741            const isButton = isButtonElement(currentTarget);
1742            const isLink = !isNativeButton && isValidLinkElement(currentTarget);
1743            const shouldClick = isCurrentTarget && (isNativeButton ? isButton : !isLink);
1744            const isEnterKey = event.key === "Enter";
1745            const isSpaceKey = event.key === " ";
1746            const role = currentTarget.getAttribute("role");
1747            const isTextNavigationRole = role?.startsWith("menuitem") || role === "option" || role === "gridcell";
1748            if (isCurrentTarget && isCompositeItem && isSpaceKey) {
1749              if (event.defaultPrevented && isTextNavigationRole) {
1750                return;
1751              }
1752              event.preventDefault();
1753              if (isLink || isNativeButton && isButton) {
1754                currentTarget.click();
1755                event.preventBaseUIHandler();
1756              } else if (shouldClick) {
1757                externalOnClick?.(event);
1758                event.preventBaseUIHandler();
1759              }
1760              return;
1761            }
1762            if (shouldClick) {
1763              if (!isNativeButton && (isSpaceKey || isEnterKey)) {
1764                event.preventDefault();
1765              }
1766              if (!isNativeButton && isEnterKey) {
1767                externalOnClick?.(event);
1768              }
1769            }
1770          },
1771          onKeyUp(event) {
1772            if (disabled2) {
1773              return;
1774            }
1775            makeEventPreventable(event);
1776            externalOnKeyUp?.(event);
1777            if (event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === " ") {
1778              event.preventDefault();
1779              return;
1780            }
1781            if (event.baseUIHandlerPrevented) {
1782              return;
1783            }
1784            if (event.target === event.currentTarget && !isNativeButton && !isCompositeItem && event.key === " ") {
1785              externalOnClick?.(event);
1786            }
1787          },
1788          onPointerDown(event) {
1789            if (disabled2) {
1790              event.preventDefault();
1791              return;
1792            }
1793            externalOnPointerDown?.(event);
1794          }
1795        }, isNativeButton ? {
1796          type: "button"
1797        } : {
1798          role: "button"
1799        }, focusableWhenDisabledProps, otherExternalProps);
1800      }, [disabled2, focusableWhenDisabledProps, isCompositeItem, isNativeButton]);
1801      const buttonRef = useStableCallback((element) => {
1802        elementRef.current = element;
1803        updateDisabled();
1804      });
1805      return {
1806        getButtonProps,
1807        buttonRef
1808      };
1809    }
1810    function isButtonElement(elem) {
1811      return isHTMLElement(elem) && elem.tagName === "BUTTON";
1812    }
1813    function isValidLinkElement(elem) {
1814      return Boolean(elem?.tagName === "A" && elem?.href);
1815    }
1816  
1817    // node_modules/@base-ui/utils/owner.mjs
1818    function ownerDocument(node) {
1819      return node?.ownerDocument || document;
1820    }
1821  
1822    // node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs
1823    var React18 = __toESM(require_react(), 1);
1824  
1825    // node_modules/@base-ui/react/internals/useAnimationsFinished.mjs
1826    var ReactDOM = __toESM(require_react_dom(), 1);
1827  
1828    // node_modules/@base-ui/react/utils/resolveRef.mjs
1829    function resolveRef(maybeRef) {
1830      if (maybeRef == null) {
1831        return maybeRef;
1832      }
1833      return "current" in maybeRef ? maybeRef.current : maybeRef;
1834    }
1835  
1836    // node_modules/@base-ui/react/internals/useAnimationsFinished.mjs
1837    function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, treatAbortedAsFinished = true) {
1838      const frame = useAnimationFrame();
1839      return useStableCallback((fnToExecute, signal = null) => {
1840        frame.cancel();
1841        const element = resolveRef(elementOrRef);
1842        if (element == null) {
1843          return;
1844        }
1845        const resolvedElement = element;
1846        const done = () => {
1847          ReactDOM.flushSync(fnToExecute);
1848        };
1849        if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) {
1850          fnToExecute();
1851          return;
1852        }
1853        function exec() {
1854          Promise.all(resolvedElement.getAnimations().map((animation) => animation.finished)).then(() => {
1855            if (!signal?.aborted) {
1856              done();
1857            }
1858          }).catch(() => {
1859            if (treatAbortedAsFinished) {
1860              if (!signal?.aborted) {
1861                done();
1862              }
1863              return;
1864            }
1865            const currentAnimations = resolvedElement.getAnimations();
1866            if (!signal?.aborted && currentAnimations.length > 0 && currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) {
1867              exec();
1868            }
1869          });
1870        }
1871        if (waitForStartingStyleRemoved) {
1872          const startingStyleAttribute = TransitionStatusDataAttributes.startingStyle;
1873          if (!resolvedElement.hasAttribute(startingStyleAttribute)) {
1874            frame.request(exec);
1875            return;
1876          }
1877          const attributeObserver = new MutationObserver(() => {
1878            if (!resolvedElement.hasAttribute(startingStyleAttribute)) {
1879              attributeObserver.disconnect();
1880              exec();
1881            }
1882          });
1883          attributeObserver.observe(resolvedElement, {
1884            attributes: true,
1885            attributeFilter: [startingStyleAttribute]
1886          });
1887          signal?.addEventListener("abort", () => attributeObserver.disconnect(), {
1888            once: true
1889          });
1890          return;
1891        }
1892        frame.request(exec);
1893      });
1894    }
1895  
1896    // node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs
1897    function useOpenChangeComplete(parameters) {
1898      const {
1899        enabled = true,
1900        open,
1901        ref,
1902        onComplete: onCompleteParam
1903      } = parameters;
1904      const onComplete = useStableCallback(onCompleteParam);
1905      const runOnceAnimationsFinish = useAnimationsFinished(ref, open, false);
1906      React18.useEffect(() => {
1907        if (!enabled) {
1908          return void 0;
1909        }
1910        const abortController = new AbortController();
1911        runOnceAnimationsFinish(onComplete, abortController.signal);
1912        return () => {
1913          abortController.abort();
1914        };
1915      }, [enabled, open, onComplete, runOnceAnimationsFinish]);
1916    }
1917  
1918    // node_modules/@base-ui/react/internals/shadowDom.mjs
1919    function activeElement(doc) {
1920      let element = doc.activeElement;
1921      while (element?.shadowRoot?.activeElement != null) {
1922        element = element.shadowRoot.activeElement;
1923      }
1924      return element;
1925    }
1926    function contains(parent, child) {
1927      if (!parent || !child) {
1928        return false;
1929      }
1930      const rootNode = child.getRootNode?.();
1931      if (parent.contains(child)) {
1932        return true;
1933      }
1934      if (rootNode && isShadowRoot(rootNode)) {
1935        let next = child;
1936        while (next) {
1937          if (parent === next) {
1938            return true;
1939          }
1940          next = next.parentNode || next.host;
1941        }
1942      }
1943      return false;
1944    }
1945    function getTarget(event) {
1946      if ("composedPath" in event) {
1947        return event.composedPath()[0];
1948      }
1949      return event.target;
1950    }
1951  
1952    // node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
1953    var round = Math.round;
1954  
1955    // node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs
1956    function isIndexOutOfListBounds(list, index) {
1957      return index < 0 || index >= list.length;
1958    }
1959    function getMinListIndex(listRef, disabledIndices) {
1960      return findNonDisabledListIndex(listRef.current, {
1961        disabledIndices
1962      });
1963    }
1964    function getMaxListIndex(listRef, disabledIndices) {
1965      return findNonDisabledListIndex(listRef.current, {
1966        decrement: true,
1967        startingIndex: listRef.current.length,
1968        disabledIndices
1969      });
1970    }
1971    function findNonDisabledListIndex(list, {
1972      startingIndex = -1,
1973      decrement = false,
1974      disabledIndices,
1975      amount = 1
1976    } = {}) {
1977      let index = startingIndex;
1978      do {
1979        index += decrement ? -amount : amount;
1980      } while (index >= 0 && index <= list.length - 1 && isListIndexDisabled(list, index, disabledIndices));
1981      return index;
1982    }
1983    function isListIndexDisabled(list, index, disabledIndices) {
1984      const isExplicitlyDisabled = typeof disabledIndices === "function" ? disabledIndices(index) : disabledIndices?.includes(index) ?? false;
1985      if (isExplicitlyDisabled) {
1986        return true;
1987      }
1988      const element = list[index];
1989      if (!element) {
1990        return false;
1991      }
1992      if (!isElementVisible(element)) {
1993        return true;
1994      }
1995      return !disabledIndices && (element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true");
1996    }
1997    function isHiddenByStyles(styles) {
1998      return styles.visibility === "hidden" || styles.visibility === "collapse";
1999    }
2000    function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) {
2001      if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) {
2002        return false;
2003      }
2004      if (typeof element.checkVisibility === "function") {
2005        return element.checkVisibility();
2006      }
2007      return styles.display !== "none" && styles.display !== "contents";
2008    }
2009  
2010    // node_modules/@base-ui/utils/useForcedRerendering.mjs
2011    var React19 = __toESM(require_react(), 1);
2012    function useForcedRerendering() {
2013      const [, setState] = React19.useState({});
2014      return React19.useCallback(() => {
2015        setState({});
2016      }, []);
2017    }
2018  
2019    // node_modules/@base-ui/react/internals/composite/composite.mjs
2020    var ARROW_UP = "ArrowUp";
2021    var ARROW_DOWN = "ArrowDown";
2022    var ARROW_LEFT = "ArrowLeft";
2023    var ARROW_RIGHT = "ArrowRight";
2024    var HOME = "Home";
2025    var END = "End";
2026    var HORIZONTAL_KEYS = /* @__PURE__ */ new Set([ARROW_LEFT, ARROW_RIGHT]);
2027    var HORIZONTAL_KEYS_WITH_EXTRA_KEYS = /* @__PURE__ */ new Set([ARROW_LEFT, ARROW_RIGHT, HOME, END]);
2028    var VERTICAL_KEYS = /* @__PURE__ */ new Set([ARROW_UP, ARROW_DOWN]);
2029    var VERTICAL_KEYS_WITH_EXTRA_KEYS = /* @__PURE__ */ new Set([ARROW_UP, ARROW_DOWN, HOME, END]);
2030    var ARROW_KEYS = /* @__PURE__ */ new Set([...HORIZONTAL_KEYS, ...VERTICAL_KEYS]);
2031    var COMPOSITE_KEYS = /* @__PURE__ */ new Set([...ARROW_KEYS, HOME, END]);
2032    var SHIFT = "Shift";
2033    var CONTROL = "Control";
2034    var ALT = "Alt";
2035    var META = "Meta";
2036    var MODIFIER_KEYS = /* @__PURE__ */ new Set([SHIFT, CONTROL, ALT, META]);
2037    function isInputElement(element) {
2038      return isHTMLElement(element) && element.tagName === "INPUT";
2039    }
2040    function isNativeInput(element) {
2041      if (isInputElement(element) && element.selectionStart != null) {
2042        return true;
2043      }
2044      if (isHTMLElement(element) && element.tagName === "TEXTAREA") {
2045        return true;
2046      }
2047      return false;
2048    }
2049    function scrollIntoViewIfNeeded(scrollContainer, element, direction, orientation) {
2050      if (!scrollContainer || !element || !element.scrollTo) {
2051        return;
2052      }
2053      let targetX = scrollContainer.scrollLeft;
2054      let targetY = scrollContainer.scrollTop;
2055      const isOverflowingX = scrollContainer.clientWidth < scrollContainer.scrollWidth;
2056      const isOverflowingY = scrollContainer.clientHeight < scrollContainer.scrollHeight;
2057      if (isOverflowingX && orientation !== "vertical") {
2058        const elementOffsetLeft = getOffset(scrollContainer, element, "left");
2059        const containerStyles = getStyles(scrollContainer);
2060        const elementStyles = getStyles(element);
2061        if (direction === "ltr") {
2062          if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) {
2063            targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;
2064          } else if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) {
2065            targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;
2066          }
2067        }
2068        if (direction === "rtl") {
2069          if (elementOffsetLeft - elementStyles.scrollMarginRight < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) {
2070            targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;
2071          } else if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) {
2072            targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;
2073          }
2074        }
2075      }
2076      if (isOverflowingY && orientation !== "horizontal") {
2077        const elementOffsetTop = getOffset(scrollContainer, element, "top");
2078        const containerStyles = getStyles(scrollContainer);
2079        const elementStyles = getStyles(element);
2080        if (elementOffsetTop - elementStyles.scrollMarginTop < scrollContainer.scrollTop + containerStyles.scrollPaddingTop) {
2081          targetY = elementOffsetTop - elementStyles.scrollMarginTop - containerStyles.scrollPaddingTop;
2082        } else if (elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom > scrollContainer.scrollTop + scrollContainer.clientHeight - containerStyles.scrollPaddingBottom) {
2083          targetY = elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom - scrollContainer.clientHeight + containerStyles.scrollPaddingBottom;
2084        }
2085      }
2086      scrollContainer.scrollTo({
2087        left: targetX,
2088        top: targetY,
2089        behavior: "auto"
2090      });
2091    }
2092    function getOffset(ancestor, element, side) {
2093      const propName = side === "left" ? "offsetLeft" : "offsetTop";
2094      let result = 0;
2095      while (element.offsetParent) {
2096        result += element[propName];
2097        if (element.offsetParent === ancestor) {
2098          break;
2099        }
2100        element = element.offsetParent;
2101      }
2102      return result;
2103    }
2104    function getStyles(element) {
2105      const styles = getComputedStyle(element);
2106      return {
2107        scrollMarginTop: parseFloat(styles.scrollMarginTop) || 0,
2108        scrollMarginRight: parseFloat(styles.scrollMarginRight) || 0,
2109        scrollMarginBottom: parseFloat(styles.scrollMarginBottom) || 0,
2110        scrollMarginLeft: parseFloat(styles.scrollMarginLeft) || 0,
2111        scrollPaddingTop: parseFloat(styles.scrollPaddingTop) || 0,
2112        scrollPaddingRight: parseFloat(styles.scrollPaddingRight) || 0,
2113        scrollPaddingBottom: parseFloat(styles.scrollPaddingBottom) || 0,
2114        scrollPaddingLeft: parseFloat(styles.scrollPaddingLeft) || 0
2115      };
2116    }
2117  
2118    // node_modules/@base-ui/utils/inertValue.mjs
2119    function inertValue(value) {
2120      if (isReactVersionAtLeast(19)) {
2121        return value;
2122      }
2123      return value ? "true" : void 0;
2124    }
2125  
2126    // node_modules/@base-ui/react/internals/composite/item/useCompositeItem.mjs
2127    var React20 = __toESM(require_react(), 1);
2128    function useCompositeItem(params = {}) {
2129      const {
2130        highlightItemOnHover,
2131        highlightedIndex,
2132        onHighlightedIndexChange
2133      } = useCompositeRootContext();
2134      const {
2135        ref,
2136        index
2137      } = useCompositeListItem(params);
2138      const isHighlighted = highlightedIndex === index;
2139      const itemRef = React20.useRef(null);
2140      const mergedRef = useMergedRefs(ref, itemRef);
2141      const compositeProps = {
2142        tabIndex: isHighlighted ? 0 : -1,
2143        onFocus() {
2144          onHighlightedIndexChange(index);
2145        },
2146        onMouseMove() {
2147          const item = itemRef.current;
2148          if (!highlightItemOnHover || !item) {
2149            return;
2150          }
2151          const disabled2 = item.hasAttribute("disabled") || item.ariaDisabled === "true";
2152          if (!isHighlighted && !disabled2) {
2153            item.focus();
2154          }
2155        }
2156      };
2157      return {
2158        compositeProps,
2159        compositeRef: mergedRef,
2160        index
2161      };
2162    }
2163  
2164    // node_modules/@base-ui/react/utils/getCssDimensions.mjs
2165    function getCssDimensions(element) {
2166      const css = getComputedStyle2(element);
2167      let width = parseFloat(css.width) || 0;
2168      let height = parseFloat(css.height) || 0;
2169      const hasOffset = isHTMLElement(element);
2170      const offsetWidth = hasOffset ? element.offsetWidth : width;
2171      const offsetHeight = hasOffset ? element.offsetHeight : height;
2172      const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
2173      if (shouldFallback) {
2174        width = offsetWidth;
2175        height = offsetHeight;
2176      }
2177      return {
2178        width,
2179        height
2180      };
2181    }
2182  
2183    // node_modules/@base-ui/utils/isElementDisabled.mjs
2184    function isElementDisabled(element) {
2185      return element == null || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true";
2186    }
2187  
2188    // node_modules/@base-ui/react/internals/csp-context/CSPContext.mjs
2189    var React21 = __toESM(require_react(), 1);
2190    var CSPContext = /* @__PURE__ */ React21.createContext(void 0);
2191    if (true) CSPContext.displayName = "CSPContext";
2192    var DEFAULT_CSP_CONTEXT_VALUE = {
2193      disableStyleElements: false
2194    };
2195    function useCSPContext() {
2196      return React21.useContext(CSPContext) ?? DEFAULT_CSP_CONTEXT_VALUE;
2197    }
2198  
2199    // node_modules/@base-ui/react/internals/composite/root/CompositeRoot.mjs
2200    var React23 = __toESM(require_react(), 1);
2201  
2202    // node_modules/@base-ui/react/internals/composite/root/useCompositeRoot.mjs
2203    var React22 = __toESM(require_react(), 1);
2204  
2205    // node_modules/@base-ui/react/internals/composite/constants.mjs
2206    var ACTIVE_COMPOSITE_ITEM = "data-composite-item-active";
2207  
2208    // node_modules/@base-ui/react/internals/composite/root/useCompositeRoot.mjs
2209    var EMPTY_ARRAY2 = [];
2210    function useCompositeRoot(params) {
2211      const {
2212        loopFocus = true,
2213        orientation = "both",
2214        grid,
2215        onLoop,
2216        direction,
2217        highlightedIndex: externalHighlightedIndex,
2218        onHighlightedIndexChange: externalSetHighlightedIndex,
2219        rootRef: externalRef,
2220        enableHomeAndEndKeys = false,
2221        stopEventPropagation = false,
2222        disabledIndices,
2223        modifierKeys = EMPTY_ARRAY2
2224      } = params;
2225      const [internalHighlightedIndex, internalSetHighlightedIndex] = React22.useState(0);
2226      const isGrid = grid != null;
2227      const rootRef = React22.useRef(null);
2228      const mergedRef = useMergedRefs(rootRef, externalRef);
2229      const elementsRef = React22.useRef([]);
2230      const hasSetDefaultIndexRef = React22.useRef(false);
2231      const highlightedIndex = externalHighlightedIndex ?? internalHighlightedIndex;
2232      const onHighlightedIndexChange = useStableCallback((index, shouldScrollIntoView = false) => {
2233        (externalSetHighlightedIndex ?? internalSetHighlightedIndex)(index);
2234        if (shouldScrollIntoView) {
2235          const newActiveItem = elementsRef.current[index];
2236          scrollIntoViewIfNeeded(rootRef.current, newActiveItem, direction, orientation);
2237        }
2238      });
2239      const onMapChange = useStableCallback((map) => {
2240        if (map.size === 0 || hasSetDefaultIndexRef.current) {
2241          return;
2242        }
2243        hasSetDefaultIndexRef.current = true;
2244        const sortedElements = Array.from(map.keys());
2245        const activeItem = sortedElements.find((compositeElement) => compositeElement?.hasAttribute(ACTIVE_COMPOSITE_ITEM)) ?? null;
2246        const activeIndex = activeItem ? sortedElements.indexOf(activeItem) : -1;
2247        if (activeIndex !== -1) {
2248          onHighlightedIndexChange(activeIndex);
2249        } else if (isListIndexDisabled(sortedElements, highlightedIndex, disabledIndices)) {
2250          const firstEnabledIndex = findNonDisabledListIndex(sortedElements, {
2251            disabledIndices
2252          });
2253          if (!isIndexOutOfListBounds(sortedElements, firstEnabledIndex)) {
2254            onHighlightedIndexChange(firstEnabledIndex);
2255          }
2256        }
2257        scrollIntoViewIfNeeded(rootRef.current, activeItem, direction, orientation);
2258      });
2259      useIsoLayoutEffect(() => {
2260        if (disabledIndices == null || externalHighlightedIndex != null || !hasSetDefaultIndexRef.current) {
2261          return;
2262        }
2263        const elements = elementsRef.current;
2264        if (isListIndexDisabled(elements, highlightedIndex, disabledIndices)) {
2265          const firstEnabledIndex = findNonDisabledListIndex(elements, {
2266            disabledIndices
2267          });
2268          if (!isIndexOutOfListBounds(elements, firstEnabledIndex)) {
2269            onHighlightedIndexChange(firstEnabledIndex);
2270          }
2271        }
2272      }, [disabledIndices, externalHighlightedIndex, highlightedIndex, elementsRef, onHighlightedIndexChange]);
2273      const wrappedOnLoop = useStableCallback((event, prevIndex, nextIndex) => {
2274        if (!onLoop) {
2275          return nextIndex;
2276        }
2277        return onLoop(event, prevIndex, nextIndex, elementsRef);
2278      });
2279      const onKeyDown = useStableCallback((event) => {
2280        const RELEVANT_KEYS = enableHomeAndEndKeys ? COMPOSITE_KEYS : ARROW_KEYS;
2281        if (!RELEVANT_KEYS.has(event.key)) {
2282          return;
2283        }
2284        if (isModifierKeySet(event, modifierKeys)) {
2285          return;
2286        }
2287        const element = rootRef.current;
2288        if (!element) {
2289          return;
2290        }
2291        const isRtl = direction === "rtl";
2292        const horizontalForwardKey = isRtl ? ARROW_LEFT : ARROW_RIGHT;
2293        const forwardKey = {
2294          horizontal: horizontalForwardKey,
2295          vertical: ARROW_DOWN,
2296          both: horizontalForwardKey
2297        }[orientation];
2298        const horizontalBackwardKey = isRtl ? ARROW_RIGHT : ARROW_LEFT;
2299        const backwardKey = {
2300          horizontal: horizontalBackwardKey,
2301          vertical: ARROW_UP,
2302          both: horizontalBackwardKey
2303        }[orientation];
2304        const target = getTarget(event.nativeEvent);
2305        if (target != null && isNativeInput(target) && !isElementDisabled(target)) {
2306          const selectionStart = target.selectionStart;
2307          const selectionEnd = target.selectionEnd;
2308          const textContent = target.value ?? "";
2309          if (selectionStart == null || event.shiftKey || selectionStart !== selectionEnd) {
2310            return;
2311          }
2312          if (event.key !== backwardKey && selectionStart < textContent.length) {
2313            return;
2314          }
2315          if (event.key !== forwardKey && selectionStart > 0) {
2316            return;
2317          }
2318        }
2319        let nextIndex = highlightedIndex;
2320        const minIndex = getMinListIndex(elementsRef, disabledIndices);
2321        const maxIndex = getMaxListIndex(elementsRef, disabledIndices);
2322        if (grid != null) {
2323          nextIndex = grid({
2324            disabledIndices,
2325            elementsRef,
2326            event,
2327            highlightedIndex,
2328            loopFocus,
2329            maxIndex,
2330            minIndex,
2331            onLoop: wrappedOnLoop,
2332            orientation,
2333            rtl: isRtl
2334          });
2335        }
2336        const forwardKeys = {
2337          horizontal: [horizontalForwardKey],
2338          vertical: [ARROW_DOWN],
2339          both: [horizontalForwardKey, ARROW_DOWN]
2340        }[orientation];
2341        const backwardKeys = {
2342          horizontal: [horizontalBackwardKey],
2343          vertical: [ARROW_UP],
2344          both: [horizontalBackwardKey, ARROW_UP]
2345        }[orientation];
2346        const preventedKeys = isGrid ? RELEVANT_KEYS : {
2347          horizontal: enableHomeAndEndKeys ? HORIZONTAL_KEYS_WITH_EXTRA_KEYS : HORIZONTAL_KEYS,
2348          vertical: enableHomeAndEndKeys ? VERTICAL_KEYS_WITH_EXTRA_KEYS : VERTICAL_KEYS,
2349          both: RELEVANT_KEYS
2350        }[orientation];
2351        if (enableHomeAndEndKeys) {
2352          if (event.key === HOME) {
2353            nextIndex = minIndex;
2354          } else if (event.key === END) {
2355            nextIndex = maxIndex;
2356          }
2357        }
2358        if (nextIndex === highlightedIndex && (forwardKeys.includes(event.key) || backwardKeys.includes(event.key))) {
2359          if (loopFocus && nextIndex === maxIndex && forwardKeys.includes(event.key)) {
2360            nextIndex = minIndex;
2361            if (onLoop) {
2362              nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef);
2363            }
2364          } else if (loopFocus && nextIndex === minIndex && backwardKeys.includes(event.key)) {
2365            nextIndex = maxIndex;
2366            if (onLoop) {
2367              nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef);
2368            }
2369          } else {
2370            nextIndex = findNonDisabledListIndex(elementsRef.current, {
2371              startingIndex: nextIndex,
2372              decrement: backwardKeys.includes(event.key),
2373              disabledIndices
2374            });
2375          }
2376        }
2377        if (nextIndex !== highlightedIndex && !isIndexOutOfListBounds(elementsRef.current, nextIndex)) {
2378          if (stopEventPropagation) {
2379            event.stopPropagation();
2380          }
2381          if (preventedKeys.has(event.key)) {
2382            event.preventDefault();
2383          }
2384          onHighlightedIndexChange(nextIndex, true);
2385          queueMicrotask(() => {
2386            elementsRef.current[nextIndex]?.focus();
2387          });
2388        }
2389      });
2390      const props = {
2391        ref: mergedRef,
2392        onFocus(event) {
2393          const element = rootRef.current;
2394          const target = getTarget(event.nativeEvent);
2395          if (!element || target == null || !isNativeInput(target)) {
2396            return;
2397          }
2398          target.setSelectionRange(0, target.value.length ?? 0);
2399        },
2400        onKeyDown
2401      };
2402      return {
2403        props,
2404        highlightedIndex,
2405        onHighlightedIndexChange,
2406        elementsRef,
2407        disabledIndices,
2408        onMapChange,
2409        relayKeyboardEvent: onKeyDown
2410      };
2411    }
2412    function isModifierKeySet(event, ignoredModifierKeys) {
2413      for (const key of MODIFIER_KEYS.values()) {
2414        if (ignoredModifierKeys.includes(key)) {
2415          continue;
2416        }
2417        if (event.getModifierState(key)) {
2418          return true;
2419        }
2420      }
2421      return false;
2422    }
2423  
2424    // node_modules/@base-ui/react/internals/composite/root/CompositeRoot.mjs
2425    var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1);
2426    function CompositeRoot(componentProps) {
2427      const {
2428        render,
2429        className,
2430        style,
2431        refs = EMPTY_ARRAY,
2432        props = EMPTY_ARRAY,
2433        state = EMPTY_OBJECT,
2434        stateAttributesMapping: stateAttributesMapping3,
2435        highlightedIndex: highlightedIndexProp,
2436        onHighlightedIndexChange: onHighlightedIndexChangeProp,
2437        orientation,
2438        grid,
2439        loopFocus,
2440        onLoop,
2441        enableHomeAndEndKeys,
2442        onMapChange: onMapChangeProp,
2443        stopEventPropagation = true,
2444        rootRef,
2445        disabledIndices,
2446        modifierKeys,
2447        highlightItemOnHover = false,
2448        tag = "div",
2449        ...elementProps
2450      } = componentProps;
2451      const direction = useDirection();
2452      const {
2453        props: defaultProps,
2454        highlightedIndex,
2455        onHighlightedIndexChange,
2456        elementsRef,
2457        onMapChange: onMapChangeUnwrapped,
2458        relayKeyboardEvent
2459      } = useCompositeRoot({
2460        grid,
2461        loopFocus,
2462        onLoop,
2463        orientation,
2464        highlightedIndex: highlightedIndexProp,
2465        onHighlightedIndexChange: onHighlightedIndexChangeProp,
2466        rootRef,
2467        stopEventPropagation,
2468        enableHomeAndEndKeys,
2469        direction,
2470        disabledIndices,
2471        modifierKeys
2472      });
2473      const element = useRenderElement(tag, componentProps, {
2474        state,
2475        ref: refs,
2476        props: [defaultProps, ...props, elementProps],
2477        stateAttributesMapping: stateAttributesMapping3
2478      });
2479      const contextValue = React23.useMemo(() => ({
2480        highlightedIndex,
2481        onHighlightedIndexChange,
2482        highlightItemOnHover,
2483        relayKeyboardEvent
2484      }), [highlightedIndex, onHighlightedIndexChange, highlightItemOnHover, relayKeyboardEvent]);
2485      return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(CompositeRootContext.Provider, {
2486        value: contextValue,
2487        children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(CompositeList, {
2488          elementsRef,
2489          onMapChange: (newMap) => {
2490            onMapChangeProp?.(newMap);
2491            onMapChangeUnwrapped(newMap);
2492          },
2493          children: element
2494        })
2495      });
2496    }
2497  
2498    // node_modules/@base-ui/react/utils/useIsHydrating.mjs
2499    var import_shim = __toESM(require_shim(), 1);
2500    function subscribe() {
2501      return NOOP;
2502    }
2503    function getSnapshot() {
2504      return false;
2505    }
2506    function getServerSnapshot() {
2507      return true;
2508    }
2509    function useIsHydrating() {
2510      return (0, import_shim.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
2511    }
2512  
2513    // node_modules/@base-ui/react/tabs/index.parts.mjs
2514    var index_parts_exports = {};
2515    __export(index_parts_exports, {
2516      Indicator: () => TabsIndicator,
2517      List: () => TabsList,
2518      Panel: () => TabsPanel,
2519      Root: () => TabsRoot,
2520      Tab: () => TabsTab
2521    });
2522  
2523    // node_modules/@base-ui/react/tabs/root/TabsRoot.mjs
2524    var React25 = __toESM(require_react(), 1);
2525  
2526    // node_modules/@base-ui/react/tabs/root/TabsRootContext.mjs
2527    var React24 = __toESM(require_react(), 1);
2528    var TabsRootContext = /* @__PURE__ */ React24.createContext(void 0);
2529    if (true) TabsRootContext.displayName = "TabsRootContext";
2530    function useTabsRootContext() {
2531      const context = React24.useContext(TabsRootContext);
2532      if (context === void 0) {
2533        throw new Error(true ? "Base UI: TabsRootContext is missing. Tabs parts must be placed within <Tabs.Root>." : formatErrorMessage_default(64));
2534      }
2535      return context;
2536    }
2537  
2538    // node_modules/@base-ui/react/tabs/root/TabsRootDataAttributes.mjs
2539    var TabsRootDataAttributes = /* @__PURE__ */ (function(TabsRootDataAttributes2) {
2540      TabsRootDataAttributes2["activationDirection"] = "data-activation-direction";
2541      TabsRootDataAttributes2["orientation"] = "data-orientation";
2542      return TabsRootDataAttributes2;
2543    })({});
2544  
2545    // node_modules/@base-ui/react/tabs/root/stateAttributesMapping.mjs
2546    var tabsStateAttributesMapping = {
2547      tabActivationDirection: (dir) => ({
2548        [TabsRootDataAttributes.activationDirection]: dir
2549      })
2550    };
2551  
2552    // node_modules/@base-ui/react/tabs/root/TabsRoot.mjs
2553    var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);
2554    var TabsRoot = /* @__PURE__ */ React25.forwardRef(function TabsRoot2(componentProps, forwardedRef) {
2555      const {
2556        className,
2557        defaultValue: defaultValueProp = 0,
2558        onValueChange: onValueChangeProp,
2559        orientation = "horizontal",
2560        render,
2561        value: valueProp,
2562        style,
2563        ...elementProps
2564      } = componentProps;
2565      const hasExplicitDefaultValueProp = componentProps.defaultValue !== void 0;
2566      const tabPanelRefs = React25.useRef([]);
2567      const [mountedTabPanels, setMountedTabPanels] = React25.useState(() => /* @__PURE__ */ new Map());
2568      const [value, setValue] = useControlled({
2569        controlled: valueProp,
2570        default: defaultValueProp,
2571        name: "Tabs",
2572        state: "value"
2573      });
2574      const isControlled = valueProp !== void 0;
2575      const [tabMap, setTabMap] = React25.useState(() => /* @__PURE__ */ new Map());
2576      const lastKnownTabElementRef = React25.useRef(void 0);
2577      const getTabElementBySelectedValue = React25.useCallback((selectedValue) => {
2578        if (selectedValue === void 0) {
2579          return null;
2580        }
2581        for (const [tabElement, tabMetadata] of tabMap.entries()) {
2582          if (tabMetadata != null && selectedValue === (tabMetadata.value ?? tabMetadata.index)) {
2583            return tabElement;
2584          }
2585        }
2586        return null;
2587      }, [tabMap]);
2588      const [activationDirectionState, setActivationDirectionState] = React25.useState(() => ({
2589        previousValue: value,
2590        tabActivationDirection: "none"
2591      }));
2592      const {
2593        previousValue,
2594        tabActivationDirection: committedTabActivationDirection
2595      } = activationDirectionState;
2596      let tabActivationDirection = committedTabActivationDirection;
2597      let directionComputationIncomplete = false;
2598      if (previousValue !== value) {
2599        tabActivationDirection = computeActivationDirection(previousValue, value, orientation, tabMap);
2600        directionComputationIncomplete = previousValue != null && value != null && getTabElementBySelectedValue(value) == null;
2601      }
2602      const nextPreviousValue = directionComputationIncomplete ? previousValue : value;
2603      const shouldSyncActivationDirectionState = previousValue !== nextPreviousValue || committedTabActivationDirection !== tabActivationDirection;
2604      useIsoLayoutEffect(() => {
2605        if (!shouldSyncActivationDirectionState) {
2606          return;
2607        }
2608        setActivationDirectionState({
2609          previousValue: nextPreviousValue,
2610          tabActivationDirection
2611        });
2612      }, [nextPreviousValue, shouldSyncActivationDirectionState, tabActivationDirection]);
2613      const onValueChange = useStableCallback((newValue, eventDetails) => {
2614        const activationDirection = computeActivationDirection(value, newValue, orientation, tabMap);
2615        eventDetails.activationDirection = activationDirection;
2616        onValueChangeProp?.(newValue, eventDetails);
2617        if (eventDetails.isCanceled) {
2618          return;
2619        }
2620        setValue(newValue);
2621      });
2622      const notifyAutomaticValueChange = useStableCallback((nextValue, reason) => {
2623        onValueChangeProp?.(nextValue, createChangeEventDetails(reason, void 0, void 0, {
2624          activationDirection: "none"
2625        }));
2626      });
2627      const registerMountedTabPanel = useStableCallback((panelValue, panelId) => {
2628        setMountedTabPanels((prev) => {
2629          if (prev.get(panelValue) === panelId) {
2630            return prev;
2631          }
2632          const next = new Map(prev);
2633          next.set(panelValue, panelId);
2634          return next;
2635        });
2636      });
2637      const unregisterMountedTabPanel = useStableCallback((panelValue, panelId) => {
2638        setMountedTabPanels((prev) => {
2639          if (!prev.has(panelValue) || prev.get(panelValue) !== panelId) {
2640            return prev;
2641          }
2642          const next = new Map(prev);
2643          next.delete(panelValue);
2644          return next;
2645        });
2646      });
2647      const getTabPanelIdByValue = React25.useCallback((tabValue) => {
2648        return mountedTabPanels.get(tabValue);
2649      }, [mountedTabPanels]);
2650      const getTabIdByPanelValue = React25.useCallback((tabPanelValue) => {
2651        for (const tabMetadata of tabMap.values()) {
2652          if (tabPanelValue === tabMetadata?.value) {
2653            return tabMetadata?.id;
2654          }
2655        }
2656        return void 0;
2657      }, [tabMap]);
2658      const tabsContextValue = React25.useMemo(() => ({
2659        getTabElementBySelectedValue,
2660        getTabIdByPanelValue,
2661        getTabPanelIdByValue,
2662        onValueChange,
2663        orientation,
2664        registerMountedTabPanel,
2665        setTabMap,
2666        unregisterMountedTabPanel,
2667        tabActivationDirection,
2668        value
2669      }), [getTabElementBySelectedValue, getTabIdByPanelValue, getTabPanelIdByValue, onValueChange, orientation, registerMountedTabPanel, setTabMap, unregisterMountedTabPanel, tabActivationDirection, value]);
2670      const selectedTabMetadata = React25.useMemo(() => {
2671        for (const tabMetadata of tabMap.values()) {
2672          if (tabMetadata != null && tabMetadata.value === value) {
2673            return tabMetadata;
2674          }
2675        }
2676        return void 0;
2677      }, [tabMap, value]);
2678      const firstEnabledTabValue = React25.useMemo(() => {
2679        for (const tabMetadata of tabMap.values()) {
2680          if (tabMetadata != null && !tabMetadata.disabled) {
2681            return tabMetadata.value;
2682          }
2683        }
2684        return void 0;
2685      }, [tabMap]);
2686      const shouldNotifyInitialValueChangeRef = React25.useRef(!hasExplicitDefaultValueProp);
2687      const initialDefaultValueRef = React25.useRef(defaultValueProp);
2688      const shouldHonorDisabledDefaultValueRef = React25.useRef(hasExplicitDefaultValueProp);
2689      const didRegisterTabsRef = React25.useRef(false);
2690      useIsoLayoutEffect(() => {
2691        if (isControlled) {
2692          return;
2693        }
2694        function commitAutomaticValueChange(fallbackValue, fallbackReason) {
2695          setValue(fallbackValue);
2696          setActivationDirectionState((prev) => {
2697            if (prev.previousValue === fallbackValue && prev.tabActivationDirection === "none") {
2698              return prev;
2699            }
2700            return {
2701              previousValue: fallbackValue,
2702              tabActivationDirection: "none"
2703            };
2704          });
2705          notifyAutomaticValueChange(fallbackValue, fallbackReason);
2706          shouldNotifyInitialValueChangeRef.current = false;
2707        }
2708        if (tabMap.size === 0) {
2709          if (didRegisterTabsRef.current && value !== null && !lastKnownTabElementRef.current?.isConnected) {
2710            commitAutomaticValueChange(null, reason_parts_exports.missing);
2711          }
2712          return;
2713        }
2714        didRegisterTabsRef.current = true;
2715        lastKnownTabElementRef.current = tabMap.keys().next().value;
2716        const selectionIsDisabled = selectedTabMetadata?.disabled;
2717        const selectionIsMissing = selectedTabMetadata == null && value !== null;
2718        if (!selectionIsDisabled && value === initialDefaultValueRef.current) {
2719          shouldHonorDisabledDefaultValueRef.current = false;
2720        }
2721        if (shouldHonorDisabledDefaultValueRef.current && selectionIsDisabled && value === initialDefaultValueRef.current) {
2722          return;
2723        }
2724        const shouldNotifyInitialValueChange = shouldNotifyInitialValueChangeRef.current;
2725        if (selectionIsDisabled || selectionIsMissing) {
2726          const fallbackValue = firstEnabledTabValue ?? null;
2727          if (value === fallbackValue) {
2728            shouldNotifyInitialValueChangeRef.current = false;
2729            return;
2730          }
2731          let fallbackReason = reason_parts_exports.missing;
2732          if (shouldNotifyInitialValueChange) {
2733            fallbackReason = reason_parts_exports.initial;
2734          } else if (selectionIsDisabled) {
2735            fallbackReason = reason_parts_exports.disabled;
2736          }
2737          commitAutomaticValueChange(fallbackValue, fallbackReason);
2738          return;
2739        }
2740        if (shouldNotifyInitialValueChange && selectedTabMetadata != null) {
2741          notifyAutomaticValueChange(value, reason_parts_exports.initial);
2742          shouldNotifyInitialValueChangeRef.current = false;
2743        }
2744      }, [firstEnabledTabValue, isControlled, notifyAutomaticValueChange, selectedTabMetadata, setValue, tabMap, value]);
2745      const state = {
2746        orientation,
2747        tabActivationDirection
2748      };
2749      const element = useRenderElement("div", componentProps, {
2750        state,
2751        ref: forwardedRef,
2752        props: elementProps,
2753        stateAttributesMapping: tabsStateAttributesMapping
2754      });
2755      return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(TabsRootContext.Provider, {
2756        value: tabsContextValue,
2757        children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CompositeList, {
2758          elementsRef: tabPanelRefs,
2759          children: element
2760        })
2761      });
2762    });
2763    if (true) TabsRoot.displayName = "TabsRoot";
2764    function computeActivationDirection(oldValue, newValue, orientation, tabMap) {
2765      if (oldValue == null || newValue == null) {
2766        return "none";
2767      }
2768      let oldTab = null;
2769      let newTab = null;
2770      for (const [tabElement, tabMetadata] of tabMap.entries()) {
2771        if (tabMetadata == null) {
2772          continue;
2773        }
2774        const tabValue = tabMetadata.value ?? tabMetadata.index;
2775        if (oldValue === tabValue) {
2776          oldTab = tabElement;
2777        }
2778        if (newValue === tabValue) {
2779          newTab = tabElement;
2780        }
2781        if (oldTab != null && newTab != null) {
2782          break;
2783        }
2784      }
2785      if (oldTab == null || newTab == null) {
2786        if (oldTab !== newTab && (typeof oldValue === "number" || typeof oldValue === "string") && typeof oldValue === typeof newValue) {
2787          if (orientation === "horizontal") {
2788            return newValue > oldValue ? "right" : "left";
2789          }
2790          return newValue > oldValue ? "down" : "up";
2791        }
2792        return "none";
2793      }
2794      const oldRect = oldTab.getBoundingClientRect();
2795      const newRect = newTab.getBoundingClientRect();
2796      if (orientation === "horizontal") {
2797        if (newRect.left < oldRect.left) {
2798          return "left";
2799        }
2800        if (newRect.left > oldRect.left) {
2801          return "right";
2802        }
2803      } else {
2804        if (newRect.top < oldRect.top) {
2805          return "up";
2806        }
2807        if (newRect.top > oldRect.top) {
2808          return "down";
2809        }
2810      }
2811      return "none";
2812    }
2813  
2814    // node_modules/@base-ui/react/tabs/tab/TabsTab.mjs
2815    var React27 = __toESM(require_react(), 1);
2816  
2817    // node_modules/@base-ui/react/tabs/list/TabsListContext.mjs
2818    var React26 = __toESM(require_react(), 1);
2819    var TabsListContext = /* @__PURE__ */ React26.createContext(void 0);
2820    if (true) TabsListContext.displayName = "TabsListContext";
2821    function useTabsListContext() {
2822      const context = React26.useContext(TabsListContext);
2823      if (context === void 0) {
2824        throw new Error(true ? "Base UI: TabsListContext is missing. TabsList parts must be placed within <Tabs.List>." : formatErrorMessage_default(65));
2825      }
2826      return context;
2827    }
2828  
2829    // node_modules/@base-ui/react/tabs/tab/TabsTab.mjs
2830    var TabsTab = /* @__PURE__ */ React27.forwardRef(function TabsTab2(componentProps, forwardedRef) {
2831      const {
2832        className,
2833        disabled: disabled2 = false,
2834        render,
2835        value,
2836        id: idProp,
2837        nativeButton = true,
2838        style,
2839        ...elementProps
2840      } = componentProps;
2841      const {
2842        value: activeTabValue,
2843        getTabPanelIdByValue,
2844        orientation,
2845        tabActivationDirection
2846      } = useTabsRootContext();
2847      const {
2848        activateOnFocus,
2849        highlightedTabIndex,
2850        onTabActivation,
2851        registerTabResizeObserverElement,
2852        setHighlightedTabIndex,
2853        tabsListElement
2854      } = useTabsListContext();
2855      const id = useBaseUiId(idProp);
2856      const tabMetadata = React27.useMemo(() => ({
2857        disabled: disabled2,
2858        id,
2859        value
2860      }), [disabled2, id, value]);
2861      const {
2862        compositeProps,
2863        compositeRef,
2864        index
2865        // hook is used instead of the CompositeItem component
2866        // because the index is needed for Tab internals
2867      } = useCompositeItem({
2868        metadata: tabMetadata
2869      });
2870      const active = value === activeTabValue;
2871      const isNavigatingRef = React27.useRef(false);
2872      const tabElementRef = React27.useRef(null);
2873      useIsoLayoutEffect(() => {
2874        const tabElement = tabElementRef.current;
2875        if (!tabElement) {
2876          return void 0;
2877        }
2878        return registerTabResizeObserverElement(tabElement);
2879      }, [registerTabResizeObserverElement]);
2880      useIsoLayoutEffect(() => {
2881        if (isNavigatingRef.current) {
2882          isNavigatingRef.current = false;
2883          return;
2884        }
2885        if (!(active && index > -1 && highlightedTabIndex !== index)) {
2886          return;
2887        }
2888        const listElement = tabsListElement;
2889        if (listElement != null) {
2890          const activeEl = activeElement(ownerDocument(listElement));
2891          if (activeEl && contains(listElement, activeEl)) {
2892            return;
2893          }
2894        }
2895        if (!disabled2) {
2896          setHighlightedTabIndex(index);
2897        }
2898      }, [active, index, highlightedTabIndex, setHighlightedTabIndex, disabled2, tabsListElement]);
2899      const {
2900        getButtonProps,
2901        buttonRef
2902      } = useButton({
2903        disabled: disabled2,
2904        native: nativeButton,
2905        focusableWhenDisabled: true
2906      });
2907      const tabPanelId = getTabPanelIdByValue(value);
2908      const isPressingRef = React27.useRef(false);
2909      const isMainButtonRef = React27.useRef(false);
2910      function onClick(event) {
2911        if (active || disabled2) {
2912          return;
2913        }
2914        onTabActivation(value, createChangeEventDetails(reason_parts_exports.none, event.nativeEvent, void 0, {
2915          activationDirection: "none"
2916        }));
2917      }
2918      function onFocus(event) {
2919        if (active) {
2920          return;
2921        }
2922        if (index > -1 && !disabled2) {
2923          setHighlightedTabIndex(index);
2924        }
2925        if (disabled2) {
2926          return;
2927        }
2928        if (activateOnFocus && (!isPressingRef.current || // keyboard or touch focus
2929        isPressingRef.current && isMainButtonRef.current)) {
2930          onTabActivation(value, createChangeEventDetails(reason_parts_exports.none, event.nativeEvent, void 0, {
2931            activationDirection: "none"
2932          }));
2933        }
2934      }
2935      function onPointerDown(event) {
2936        if (active || disabled2) {
2937          return;
2938        }
2939        isPressingRef.current = true;
2940        function handlePointerUp() {
2941          isPressingRef.current = false;
2942          isMainButtonRef.current = false;
2943        }
2944        if (!event.button || event.button === 0) {
2945          isMainButtonRef.current = true;
2946          const doc = ownerDocument(event.currentTarget);
2947          doc.addEventListener("pointerup", handlePointerUp, {
2948            once: true
2949          });
2950        }
2951      }
2952      const state = {
2953        disabled: disabled2,
2954        active,
2955        orientation,
2956        tabActivationDirection
2957      };
2958      const element = useRenderElement("button", componentProps, {
2959        state,
2960        ref: [forwardedRef, buttonRef, compositeRef, tabElementRef],
2961        props: [compositeProps, {
2962          role: "tab",
2963          "aria-controls": tabPanelId,
2964          "aria-selected": active,
2965          id,
2966          onClick,
2967          onFocus,
2968          onPointerDown,
2969          [ACTIVE_COMPOSITE_ITEM]: active ? "" : void 0,
2970          onKeyDownCapture() {
2971            isNavigatingRef.current = true;
2972          }
2973        }, elementProps, getButtonProps],
2974        stateAttributesMapping: tabsStateAttributesMapping
2975      });
2976      return element;
2977    });
2978    if (true) TabsTab.displayName = "TabsTab";
2979  
2980    // node_modules/@base-ui/react/tabs/indicator/TabsIndicator.mjs
2981    var React28 = __toESM(require_react(), 1);
2982  
2983    // node_modules/@base-ui/react/tabs/indicator/prehydrationScript.min.mjs
2984    var script = '!function(){const t=document.currentScript.previousElementSibling;if(!t)return;const e=t.closest(\'[role="tablist"]\');if(!e)return;const i=e.querySelector("[data-active]");if(!i)return;if(0===i.offsetWidth||0===e.offsetWidth)return;let o=0,n=0,h=0,l=0,r=0,f=0;function s(t){const e=getComputedStyle(t);let i=parseFloat(e.width)||0,o=parseFloat(e.height)||0;return(Math.round(i)!==t.offsetWidth||Math.round(o)!==t.offsetHeight)&&(i=t.offsetWidth,o=t.offsetHeight),{width:i,height:o}}if(null!=i&&null!=e){const{width:t,height:c}=s(i),{width:u,height:d}=s(e),a=i.getBoundingClientRect(),g=e.getBoundingClientRect(),p=u>0?g.width/u:1,b=d>0?g.height/d:1;if(Math.abs(p)>Number.EPSILON&&Math.abs(b)>Number.EPSILON){const t=a.left-g.left,i=a.top-g.top;o=t/p+e.scrollLeft-e.clientLeft,h=i/b+e.scrollTop-e.clientTop}else o=i.offsetLeft,h=i.offsetTop;r=t,f=c,n=e.scrollWidth-o-r,l=e.scrollHeight-h-f}function c(e,i){t.style.setProperty(`--active-tab-$e}`,`$i}px`)}c("left",o),c("right",n),c("top",h),c("bottom",l),c("width",r),c("height",f),r>0&&f>0&&t.removeAttribute("hidden")}();';
2985  
2986    // node_modules/@base-ui/react/tabs/indicator/TabsIndicatorCssVars.mjs
2987    var TabsIndicatorCssVars = /* @__PURE__ */ (function(TabsIndicatorCssVars2) {
2988      TabsIndicatorCssVars2["activeTabLeft"] = "--active-tab-left";
2989      TabsIndicatorCssVars2["activeTabRight"] = "--active-tab-right";
2990      TabsIndicatorCssVars2["activeTabTop"] = "--active-tab-top";
2991      TabsIndicatorCssVars2["activeTabBottom"] = "--active-tab-bottom";
2992      TabsIndicatorCssVars2["activeTabWidth"] = "--active-tab-width";
2993      TabsIndicatorCssVars2["activeTabHeight"] = "--active-tab-height";
2994      return TabsIndicatorCssVars2;
2995    })({});
2996  
2997    // node_modules/@base-ui/react/tabs/indicator/TabsIndicator.mjs
2998    var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1);
2999    var stateAttributesMapping = {
3000      ...tabsStateAttributesMapping,
3001      activeTabPosition: () => null,
3002      activeTabSize: () => null
3003    };
3004    var TabsIndicator = /* @__PURE__ */ React28.forwardRef(function TabsIndicator2(componentProps, forwardedRef) {
3005      const {
3006        className,
3007        render,
3008        renderBeforeHydration = false,
3009        style: styleProp,
3010        ...elementProps
3011      } = componentProps;
3012      const {
3013        nonce
3014      } = useCSPContext();
3015      const {
3016        getTabElementBySelectedValue,
3017        orientation,
3018        tabActivationDirection,
3019        value
3020      } = useTabsRootContext();
3021      const {
3022        tabsListElement,
3023        registerIndicatorUpdateListener
3024      } = useTabsListContext();
3025      const isHydrating = useIsHydrating();
3026      const rerender = useForcedRerendering();
3027      React28.useEffect(() => {
3028        return registerIndicatorUpdateListener(rerender);
3029      }, [registerIndicatorUpdateListener, rerender]);
3030      let left = 0;
3031      let right = 0;
3032      let top = 0;
3033      let bottom = 0;
3034      let width = 0;
3035      let height = 0;
3036      let isTabSelected = false;
3037      if (value != null && tabsListElement != null) {
3038        const activeTab = getTabElementBySelectedValue(value);
3039        if (activeTab != null) {
3040          isTabSelected = true;
3041          const {
3042            width: computedWidth,
3043            height: computedHeight
3044          } = getCssDimensions(activeTab);
3045          const {
3046            width: tabListWidth,
3047            height: tabListHeight
3048          } = getCssDimensions(tabsListElement);
3049          const tabRect = activeTab.getBoundingClientRect();
3050          const tabsListRect = tabsListElement.getBoundingClientRect();
3051          const scaleX = tabListWidth > 0 ? tabsListRect.width / tabListWidth : 1;
3052          const scaleY = tabListHeight > 0 ? tabsListRect.height / tabListHeight : 1;
3053          const hasNonZeroScale = Math.abs(scaleX) > Number.EPSILON && Math.abs(scaleY) > Number.EPSILON;
3054          if (hasNonZeroScale) {
3055            const tabLeftDelta = tabRect.left - tabsListRect.left;
3056            const tabTopDelta = tabRect.top - tabsListRect.top;
3057            left = tabLeftDelta / scaleX + tabsListElement.scrollLeft - tabsListElement.clientLeft;
3058            top = tabTopDelta / scaleY + tabsListElement.scrollTop - tabsListElement.clientTop;
3059          } else {
3060            left = activeTab.offsetLeft;
3061            top = activeTab.offsetTop;
3062          }
3063          width = computedWidth;
3064          height = computedHeight;
3065          right = tabsListElement.scrollWidth - left - width;
3066          bottom = tabsListElement.scrollHeight - top - height;
3067        }
3068      }
3069      const activeTabPosition = isTabSelected ? {
3070        left,
3071        right,
3072        top,
3073        bottom
3074      } : null;
3075      const activeTabSize = isTabSelected ? {
3076        width,
3077        height
3078      } : null;
3079      const style = isTabSelected ? {
3080        [TabsIndicatorCssVars.activeTabLeft]: `$left}px`,
3081        [TabsIndicatorCssVars.activeTabRight]: `$right}px`,
3082        [TabsIndicatorCssVars.activeTabTop]: `$top}px`,
3083        [TabsIndicatorCssVars.activeTabBottom]: `$bottom}px`,
3084        [TabsIndicatorCssVars.activeTabWidth]: `$width}px`,
3085        [TabsIndicatorCssVars.activeTabHeight]: `$height}px`
3086      } : void 0;
3087      const displayIndicator = isTabSelected && width > 0 && height > 0;
3088      const state = {
3089        orientation,
3090        activeTabPosition,
3091        activeTabSize,
3092        tabActivationDirection
3093      };
3094      const element = useRenderElement("span", componentProps, {
3095        state,
3096        ref: forwardedRef,
3097        props: [{
3098          role: "presentation",
3099          style,
3100          hidden: !displayIndicator
3101          // do not display the indicator before the layout is settled
3102        }, elementProps, {
3103          suppressHydrationWarning: true
3104        }],
3105        stateAttributesMapping
3106      });
3107      if (value == null) {
3108        return null;
3109      }
3110      return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(React28.Fragment, {
3111        children: [element, isHydrating && renderBeforeHydration && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("script", {
3112          nonce,
3113          dangerouslySetInnerHTML: {
3114            __html: script
3115          },
3116          suppressHydrationWarning: true
3117        })]
3118      });
3119    });
3120    if (true) TabsIndicator.displayName = "TabsIndicator";
3121  
3122    // node_modules/@base-ui/react/tabs/panel/TabsPanel.mjs
3123    var React29 = __toESM(require_react(), 1);
3124  
3125    // node_modules/@base-ui/react/tabs/panel/TabsPanelDataAttributes.mjs
3126    var TabsPanelDataAttributes = (function(TabsPanelDataAttributes2) {
3127      TabsPanelDataAttributes2["index"] = "data-index";
3128      TabsPanelDataAttributes2["activationDirection"] = "data-activation-direction";
3129      TabsPanelDataAttributes2["orientation"] = "data-orientation";
3130      TabsPanelDataAttributes2["hidden"] = "data-hidden";
3131      TabsPanelDataAttributes2[TabsPanelDataAttributes2["startingStyle"] = TransitionStatusDataAttributes.startingStyle] = "startingStyle";
3132      TabsPanelDataAttributes2[TabsPanelDataAttributes2["endingStyle"] = TransitionStatusDataAttributes.endingStyle] = "endingStyle";
3133      return TabsPanelDataAttributes2;
3134    })({});
3135  
3136    // node_modules/@base-ui/react/tabs/panel/TabsPanel.mjs
3137    var stateAttributesMapping2 = {
3138      ...tabsStateAttributesMapping,
3139      ...transitionStatusMapping
3140    };
3141    var TabsPanel = /* @__PURE__ */ React29.forwardRef(function TabsPanel2(componentProps, forwardedRef) {
3142      const {
3143        className,
3144        value,
3145        render,
3146        keepMounted = false,
3147        style,
3148        ...elementProps
3149      } = componentProps;
3150      const {
3151        value: selectedValue,
3152        getTabIdByPanelValue,
3153        orientation,
3154        tabActivationDirection,
3155        registerMountedTabPanel,
3156        unregisterMountedTabPanel
3157      } = useTabsRootContext();
3158      const id = useBaseUiId();
3159      const metadata = React29.useMemo(() => ({
3160        id,
3161        value
3162      }), [id, value]);
3163      const {
3164        ref: listItemRef,
3165        index
3166      } = useCompositeListItem({
3167        metadata
3168      });
3169      const open = value === selectedValue;
3170      const {
3171        mounted,
3172        transitionStatus,
3173        setMounted
3174      } = useTransitionStatus(open);
3175      const hidden = !mounted;
3176      const correspondingTabId = getTabIdByPanelValue(value);
3177      const state = {
3178        hidden,
3179        orientation,
3180        tabActivationDirection,
3181        transitionStatus
3182      };
3183      const panelRef = React29.useRef(null);
3184      const element = useRenderElement("div", componentProps, {
3185        state,
3186        ref: [forwardedRef, listItemRef, panelRef],
3187        props: [{
3188          "aria-labelledby": correspondingTabId,
3189          hidden,
3190          id,
3191          role: "tabpanel",
3192          tabIndex: open ? 0 : -1,
3193          inert: inertValue(!open),
3194          [TabsPanelDataAttributes.index]: index
3195        }, elementProps],
3196        stateAttributesMapping: stateAttributesMapping2
3197      });
3198      useOpenChangeComplete({
3199        open,
3200        ref: panelRef,
3201        onComplete() {
3202          if (!open) {
3203            setMounted(false);
3204          }
3205        }
3206      });
3207      useIsoLayoutEffect(() => {
3208        if (hidden && !keepMounted) {
3209          return void 0;
3210        }
3211        if (id == null) {
3212          return void 0;
3213        }
3214        registerMountedTabPanel(value, id);
3215        return () => {
3216          unregisterMountedTabPanel(value, id);
3217        };
3218      }, [hidden, keepMounted, value, id, registerMountedTabPanel, unregisterMountedTabPanel]);
3219      const shouldRender = keepMounted || mounted;
3220      if (!shouldRender) {
3221        return null;
3222      }
3223      return element;
3224    });
3225    if (true) TabsPanel.displayName = "TabsPanel";
3226  
3227    // node_modules/@base-ui/react/tabs/list/TabsList.mjs
3228    var React30 = __toESM(require_react(), 1);
3229    var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1);
3230    var TabsList = /* @__PURE__ */ React30.forwardRef(function TabsList2(componentProps, forwardedRef) {
3231      const {
3232        activateOnFocus = false,
3233        className,
3234        loopFocus = true,
3235        render,
3236        style,
3237        ...elementProps
3238      } = componentProps;
3239      const {
3240        onValueChange,
3241        orientation,
3242        value,
3243        setTabMap,
3244        tabActivationDirection
3245      } = useTabsRootContext();
3246      const [highlightedTabIndex, setHighlightedTabIndex] = React30.useState(0);
3247      const [tabsListElement, setTabsListElement] = React30.useState(null);
3248      const indicatorUpdateListenersRef = React30.useRef(/* @__PURE__ */ new Set());
3249      const tabResizeObserverElementsRef = React30.useRef(/* @__PURE__ */ new Set());
3250      const resizeObserverRef = React30.useRef(null);
3251      useIsoLayoutEffect(() => {
3252        if (typeof ResizeObserver === "undefined") {
3253          return void 0;
3254        }
3255        const resizeObserver = new ResizeObserver(() => {
3256          indicatorUpdateListenersRef.current.forEach((listener) => {
3257            listener();
3258          });
3259        });
3260        resizeObserverRef.current = resizeObserver;
3261        if (tabsListElement) {
3262          resizeObserver.observe(tabsListElement);
3263        }
3264        tabResizeObserverElementsRef.current.forEach((element) => {
3265          resizeObserver.observe(element);
3266        });
3267        return () => {
3268          resizeObserver.disconnect();
3269          resizeObserverRef.current = null;
3270        };
3271      }, [tabsListElement]);
3272      const registerIndicatorUpdateListener = useStableCallback((listener) => {
3273        indicatorUpdateListenersRef.current.add(listener);
3274        return () => {
3275          indicatorUpdateListenersRef.current.delete(listener);
3276        };
3277      });
3278      const registerTabResizeObserverElement = useStableCallback((element) => {
3279        tabResizeObserverElementsRef.current.add(element);
3280        resizeObserverRef.current?.observe(element);
3281        return () => {
3282          tabResizeObserverElementsRef.current.delete(element);
3283          resizeObserverRef.current?.unobserve(element);
3284        };
3285      });
3286      const onTabActivation = useStableCallback((newValue, eventDetails) => {
3287        if (newValue !== value) {
3288          onValueChange(newValue, eventDetails);
3289        }
3290      });
3291      const state = {
3292        orientation,
3293        tabActivationDirection
3294      };
3295      const defaultProps = {
3296        "aria-orientation": orientation === "vertical" ? "vertical" : void 0,
3297        role: "tablist"
3298      };
3299      const tabsListContextValue = React30.useMemo(() => ({
3300        activateOnFocus,
3301        highlightedTabIndex,
3302        registerIndicatorUpdateListener,
3303        registerTabResizeObserverElement,
3304        onTabActivation,
3305        setHighlightedTabIndex,
3306        tabsListElement
3307      }), [activateOnFocus, highlightedTabIndex, registerIndicatorUpdateListener, registerTabResizeObserverElement, onTabActivation, setHighlightedTabIndex, tabsListElement]);
3308      return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(TabsListContext.Provider, {
3309        value: tabsListContextValue,
3310        children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(CompositeRoot, {
3311          render,
3312          className,
3313          style,
3314          state,
3315          refs: [forwardedRef, setTabsListElement],
3316          props: [defaultProps, elementProps],
3317          stateAttributesMapping: tabsStateAttributesMapping,
3318          highlightedIndex: highlightedTabIndex,
3319          enableHomeAndEndKeys: true,
3320          loopFocus,
3321          orientation,
3322          onHighlightedIndexChange: setHighlightedTabIndex,
3323          onMapChange: setTabMap,
3324          disabledIndices: EMPTY_ARRAY
3325        })
3326      });
3327    });
3328    if (true) TabsList.displayName = "TabsList";
3329  
3330    // node_modules/@base-ui/react/use-render/useRender.mjs
3331    function useRender(params) {
3332      return useRenderElement(params.defaultTagName ?? "div", params, params);
3333    }
3334  
3335    // packages/ui/build-module/icon/icon.mjs
3336    var import_element2 = __toESM(require_element(), 1);
3337    var import_primitives15 = __toESM(require_primitives(), 1);
3338    var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);
3339    var Icon = (0, import_element2.forwardRef)(function Icon2({ icon, size = 24, ...restProps }, ref) {
3340      return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3341        import_primitives15.SVG,
3342        {
3343          ref,
3344          ...icon.props,
3345          ...restProps,
3346          width: size,
3347          height: size
3348        }
3349      );
3350    });
3351  
3352    // packages/ui/build-module/stack/stack.mjs
3353    var import_element3 = __toESM(require_element(), 1);
3354    var STYLE_HASH_ATTRIBUTE = "data-wp-hash";
3355    function getRuntime() {
3356      const globalScope = globalThis;
3357      if (globalScope.__wpStyleRuntime) {
3358        return globalScope.__wpStyleRuntime;
3359      }
3360      globalScope.__wpStyleRuntime = {
3361        documents: /* @__PURE__ */ new Map(),
3362        styles: /* @__PURE__ */ new Map(),
3363        injectedStyles: /* @__PURE__ */ new WeakMap()
3364      };
3365      if (typeof document !== "undefined") {
3366        registerDocument(document);
3367      }
3368      return globalScope.__wpStyleRuntime;
3369    }
3370    function documentContainsStyleHash(targetDocument, hash) {
3371      if (!targetDocument.head) {
3372        return false;
3373      }
3374      for (const style of targetDocument.head.querySelectorAll(
3375        `style[$STYLE_HASH_ATTRIBUTE}]`
3376      )) {
3377        if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) {
3378          return true;
3379        }
3380      }
3381      return false;
3382    }
3383    function injectStyle(targetDocument, hash, css) {
3384      if (!targetDocument.head) {
3385        return;
3386      }
3387      const runtime = getRuntime();
3388      let injectedStyles = runtime.injectedStyles.get(targetDocument);
3389      if (!injectedStyles) {
3390        injectedStyles = /* @__PURE__ */ new Set();
3391        runtime.injectedStyles.set(targetDocument, injectedStyles);
3392      }
3393      if (injectedStyles.has(hash)) {
3394        return;
3395      }
3396      if (documentContainsStyleHash(targetDocument, hash)) {
3397        injectedStyles.add(hash);
3398        return;
3399      }
3400      const style = targetDocument.createElement("style");
3401      style.setAttribute(STYLE_HASH_ATTRIBUTE, hash);
3402      style.appendChild(targetDocument.createTextNode(css));
3403      targetDocument.head.appendChild(style);
3404      injectedStyles.add(hash);
3405    }
3406    function registerDocument(targetDocument) {
3407      const runtime = getRuntime();
3408      runtime.documents.set(
3409        targetDocument,
3410        (runtime.documents.get(targetDocument) ?? 0) + 1
3411      );
3412      for (const [hash, css] of runtime.styles) {
3413        injectStyle(targetDocument, hash, css);
3414      }
3415      return () => {
3416        const count = runtime.documents.get(targetDocument);
3417        if (count === void 0) {
3418          return;
3419        }
3420        if (count <= 1) {
3421          runtime.documents.delete(targetDocument);
3422          return;
3423        }
3424        runtime.documents.set(targetDocument, count - 1);
3425      };
3426    }
3427    function registerStyle(hash, css) {
3428      const runtime = getRuntime();
3429      runtime.styles.set(hash, css);
3430      for (const targetDocument of runtime.documents.keys()) {
3431        injectStyle(targetDocument, hash, css);
3432      }
3433    }
3434    if (typeof process === "undefined" || true) {
3435      registerStyle("32aba35fe1", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._19ce0419607e1896__stack{display:flex}}}");
3436    }
3437    var style_default = { "stack": "_19ce0419607e1896__stack" };
3438    var gapTokens = {
3439      xs: "var(--wpds-dimension-gap-xs, 4px)",
3440      sm: "var(--wpds-dimension-gap-sm, 8px)",
3441      md: "var(--wpds-dimension-gap-md, 12px)",
3442      lg: "var(--wpds-dimension-gap-lg, 16px)",
3443      xl: "var(--wpds-dimension-gap-xl, 24px)",
3444      "2xl": "var(--wpds-dimension-gap-2xl, 32px)",
3445      "3xl": "var(--wpds-dimension-gap-3xl, 40px)"
3446    };
3447    var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) {
3448      const style = {
3449        gap: gap && gapTokens[gap],
3450        alignItems: align,
3451        justifyContent: justify,
3452        flexDirection: direction,
3453        flexWrap: wrap
3454      };
3455      const element = useRender({
3456        render,
3457        ref,
3458        props: mergeProps(props, { style, className: style_default.stack })
3459      });
3460      return element;
3461    });
3462  
3463    // packages/ui/build-module/utils/use-schedule-validation.mjs
3464    var import_element4 = __toESM(require_element(), 1);
3465    function useScheduleValidation(validate) {
3466      const validateRef = (0, import_element4.useRef)(validate);
3467      validateRef.current = validate;
3468      const timerRef = (0, import_element4.useRef)(null);
3469      const unmountedRef = (0, import_element4.useRef)(false);
3470      const scheduleValidation = (0, import_element4.useCallback)(() => {
3471        if (unmountedRef.current) {
3472          return;
3473        }
3474        if (timerRef.current) {
3475          clearTimeout(timerRef.current);
3476        }
3477        timerRef.current = setTimeout(() => {
3478          validateRef.current();
3479          timerRef.current = null;
3480        }, 0);
3481      }, []);
3482      (0, import_element4.useEffect)(() => {
3483        unmountedRef.current = false;
3484        return () => {
3485          unmountedRef.current = true;
3486          if (timerRef.current) {
3487            clearTimeout(timerRef.current);
3488          }
3489        };
3490      }, []);
3491      return scheduleValidation;
3492    }
3493  
3494    // packages/ui/build-module/visually-hidden/visually-hidden.mjs
3495    var import_element5 = __toESM(require_element(), 1);
3496    var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash";
3497    function getRuntime2() {
3498      const globalScope = globalThis;
3499      if (globalScope.__wpStyleRuntime) {
3500        return globalScope.__wpStyleRuntime;
3501      }
3502      globalScope.__wpStyleRuntime = {
3503        documents: /* @__PURE__ */ new Map(),
3504        styles: /* @__PURE__ */ new Map(),
3505        injectedStyles: /* @__PURE__ */ new WeakMap()
3506      };
3507      if (typeof document !== "undefined") {
3508        registerDocument2(document);
3509      }
3510      return globalScope.__wpStyleRuntime;
3511    }
3512    function documentContainsStyleHash2(targetDocument, hash) {
3513      if (!targetDocument.head) {
3514        return false;
3515      }
3516      for (const style of targetDocument.head.querySelectorAll(
3517        `style[$STYLE_HASH_ATTRIBUTE2}]`
3518      )) {
3519        if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) {
3520          return true;
3521        }
3522      }
3523      return false;
3524    }
3525    function injectStyle2(targetDocument, hash, css) {
3526      if (!targetDocument.head) {
3527        return;
3528      }
3529      const runtime = getRuntime2();
3530      let injectedStyles = runtime.injectedStyles.get(targetDocument);
3531      if (!injectedStyles) {
3532        injectedStyles = /* @__PURE__ */ new Set();
3533        runtime.injectedStyles.set(targetDocument, injectedStyles);
3534      }
3535      if (injectedStyles.has(hash)) {
3536        return;
3537      }
3538      if (documentContainsStyleHash2(targetDocument, hash)) {
3539        injectedStyles.add(hash);
3540        return;
3541      }
3542      const style = targetDocument.createElement("style");
3543      style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash);
3544      style.appendChild(targetDocument.createTextNode(css));
3545      targetDocument.head.appendChild(style);
3546      injectedStyles.add(hash);
3547    }
3548    function registerDocument2(targetDocument) {
3549      const runtime = getRuntime2();
3550      runtime.documents.set(
3551        targetDocument,
3552        (runtime.documents.get(targetDocument) ?? 0) + 1
3553      );
3554      for (const [hash, css] of runtime.styles) {
3555        injectStyle2(targetDocument, hash, css);
3556      }
3557      return () => {
3558        const count = runtime.documents.get(targetDocument);
3559        if (count === void 0) {
3560          return;
3561        }
3562        if (count <= 1) {
3563          runtime.documents.delete(targetDocument);
3564          return;
3565        }
3566        runtime.documents.set(targetDocument, count - 1);
3567      };
3568    }
3569    function registerStyle2(hash, css) {
3570      const runtime = getRuntime2();
3571      runtime.styles.set(hash, css);
3572      for (const targetDocument of runtime.documents.keys()) {
3573        injectStyle2(targetDocument, hash, css);
3574      }
3575    }
3576    if (typeof process === "undefined" || true) {
3577      registerStyle2("fa606a57ae", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.f37b9e2e191ebd66__visually-hidden{word-wrap:normal;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal}}}");
3578    }
3579    var style_default2 = { "visually-hidden": "f37b9e2e191ebd66__visually-hidden" };
3580    var VisuallyHidden = (0, import_element5.forwardRef)(
3581      function VisuallyHidden2({ render, ...restProps }, ref) {
3582        const element = useRender({
3583          render,
3584          ref,
3585          props: mergeProps(
3586            { className: style_default2["visually-hidden"] },
3587            restProps,
3588            {
3589              // @ts-expect-error Arbitrary data-* attributes aren't indexable on the typed div props. Kept hardcoded so consumers can't change or remove it.
3590              "data-visually-hidden": ""
3591            }
3592          )
3593        });
3594        return element;
3595      }
3596    );
3597  
3598    // packages/ui/build-module/link/link.mjs
3599    var import_element6 = __toESM(require_element(), 1);
3600    var import_i18n3 = __toESM(require_i18n(), 1);
3601    var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);
3602    var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash";
3603    function getRuntime3() {
3604      const globalScope = globalThis;
3605      if (globalScope.__wpStyleRuntime) {
3606        return globalScope.__wpStyleRuntime;
3607      }
3608      globalScope.__wpStyleRuntime = {
3609        documents: /* @__PURE__ */ new Map(),
3610        styles: /* @__PURE__ */ new Map(),
3611        injectedStyles: /* @__PURE__ */ new WeakMap()
3612      };
3613      if (typeof document !== "undefined") {
3614        registerDocument3(document);
3615      }
3616      return globalScope.__wpStyleRuntime;
3617    }
3618    function documentContainsStyleHash3(targetDocument, hash) {
3619      if (!targetDocument.head) {
3620        return false;
3621      }
3622      for (const style of targetDocument.head.querySelectorAll(
3623        `style[$STYLE_HASH_ATTRIBUTE3}]`
3624      )) {
3625        if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) {
3626          return true;
3627        }
3628      }
3629      return false;
3630    }
3631    function injectStyle3(targetDocument, hash, css) {
3632      if (!targetDocument.head) {
3633        return;
3634      }
3635      const runtime = getRuntime3();
3636      let injectedStyles = runtime.injectedStyles.get(targetDocument);
3637      if (!injectedStyles) {
3638        injectedStyles = /* @__PURE__ */ new Set();
3639        runtime.injectedStyles.set(targetDocument, injectedStyles);
3640      }
3641      if (injectedStyles.has(hash)) {
3642        return;
3643      }
3644      if (documentContainsStyleHash3(targetDocument, hash)) {
3645        injectedStyles.add(hash);
3646        return;
3647      }
3648      const style = targetDocument.createElement("style");
3649      style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash);
3650      style.appendChild(targetDocument.createTextNode(css));
3651      targetDocument.head.appendChild(style);
3652      injectedStyles.add(hash);
3653    }
3654    function registerDocument3(targetDocument) {
3655      const runtime = getRuntime3();
3656      runtime.documents.set(
3657        targetDocument,
3658        (runtime.documents.get(targetDocument) ?? 0) + 1
3659      );
3660      for (const [hash, css] of runtime.styles) {
3661        injectStyle3(targetDocument, hash, css);
3662      }
3663      return () => {
3664        const count = runtime.documents.get(targetDocument);
3665        if (count === void 0) {
3666          return;
3667        }
3668        if (count <= 1) {
3669          runtime.documents.delete(targetDocument);
3670          return;
3671        }
3672        runtime.documents.set(targetDocument, count - 1);
3673      };
3674    }
3675    function registerStyle3(hash, css) {
3676      const runtime = getRuntime3();
3677      runtime.styles.set(hash, css);
3678      for (const targetDocument of runtime.documents.keys()) {
3679        injectStyle3(targetDocument, hash, css);
3680      }
3681    }
3682    if (typeof process === "undefined" || true) {
3683      registerStyle3("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
3684    }
3685    var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
3686    if (typeof process === "undefined" || true) {
3687      registerStyle3("5f8e7aa0bc", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-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));--_gcd-div-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));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));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
3688    }
3689    var focus_default = { "outset-ring--focus": "_08e8a2e44959f892__outset-ring--focus", "outset-ring--focus-except-active": "e25b2bdd7aa21721__outset-ring--focus-except-active", "outset-ring--focus-visible": "d0541bc9dd9dc7b6__outset-ring--focus-visible", "outset-ring--focus-within": "cd83dfc2126a0846__outset-ring--focus-within", "outset-ring--focus-within-except-active": "_970d04df7376df67__outset-ring--focus-within-except-active", "outset-ring--focus-within-visible": "c5cb3ee4bddaa8e4__outset-ring--focus-within-visible", "outset-ring--focus-parent-visible": "ecadb9e080e2dfa5__outset-ring--focus-parent-visible" };
3690    if (typeof process === "undefined" || true) {
3691      registerStyle3("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"}}}');
3692    }
3693    var style_default3 = { "link": "d4250949359b05ce__link", "is-brand": "c6055659b8e2cd2c__is-brand", "is-neutral": "_92e0dfcaeee15b88__is-neutral", "is-unstyled": "cf122a9bf1035d42__is-unstyled", "link-icon": "_0cb411afac4c86c7__link-icon" };
3694    if (typeof process === "undefined" || true) {
3695      registerStyle3("af6d9984a6", "._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);&: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))}&::placeholder{color:var(--_gcd-input-placeholder-color,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)}");
3696    }
3697    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" };
3698    var Link = (0, import_element6.forwardRef)(function Link2({
3699      children,
3700      variant = "default",
3701      tone = "brand",
3702      openInNewTab = false,
3703      render,
3704      className,
3705      ...props
3706    }, ref) {
3707      const element = useRender({
3708        render,
3709        defaultTagName: "a",
3710        ref,
3711        props: mergeProps(props, {
3712          className: clsx_default(
3713            global_css_defense_default.a,
3714            resets_default["box-sizing"],
3715            focus_default["outset-ring--focus-except-active"],
3716            variant !== "unstyled" && style_default3.link,
3717            variant !== "unstyled" && style_default3[`is-$tone}`],
3718            variant === "unstyled" && style_default3["is-unstyled"],
3719            className
3720          ),
3721          target: openInNewTab ? "_blank" : void 0,
3722          children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
3723            children,
3724            openInNewTab && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3725              "span",
3726              {
3727                className: style_default3["link-icon"],
3728                role: "img",
3729                "aria-label": (
3730                  /* translators: accessibility text appended to link text */
3731                  (0, import_i18n3.__)("(opens in a new tab)")
3732                )
3733              }
3734            )
3735          ] })
3736        })
3737      });
3738      return element;
3739    });
3740  
3741    // packages/ui/build-module/tabs/index.mjs
3742    var tabs_exports = {};
3743    __export(tabs_exports, {
3744      List: () => List,
3745      Panel: () => Panel,
3746      Root: () => Root,
3747      Tab: () => Tab
3748    });
3749  
3750    // packages/ui/build-module/tabs/list.mjs
3751    var import_element7 = __toESM(require_element(), 1);
3752    var import_compose = __toESM(require_compose(), 1);
3753    var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);
3754    var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash";
3755    function getRuntime4() {
3756      const globalScope = globalThis;
3757      if (globalScope.__wpStyleRuntime) {
3758        return globalScope.__wpStyleRuntime;
3759      }
3760      globalScope.__wpStyleRuntime = {
3761        documents: /* @__PURE__ */ new Map(),
3762        styles: /* @__PURE__ */ new Map(),
3763        injectedStyles: /* @__PURE__ */ new WeakMap()
3764      };
3765      if (typeof document !== "undefined") {
3766        registerDocument4(document);
3767      }
3768      return globalScope.__wpStyleRuntime;
3769    }
3770    function documentContainsStyleHash4(targetDocument, hash) {
3771      if (!targetDocument.head) {
3772        return false;
3773      }
3774      for (const style of targetDocument.head.querySelectorAll(
3775        `style[$STYLE_HASH_ATTRIBUTE4}]`
3776      )) {
3777        if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) {
3778          return true;
3779        }
3780      }
3781      return false;
3782    }
3783    function injectStyle4(targetDocument, hash, css) {
3784      if (!targetDocument.head) {
3785        return;
3786      }
3787      const runtime = getRuntime4();
3788      let injectedStyles = runtime.injectedStyles.get(targetDocument);
3789      if (!injectedStyles) {
3790        injectedStyles = /* @__PURE__ */ new Set();
3791        runtime.injectedStyles.set(targetDocument, injectedStyles);
3792      }
3793      if (injectedStyles.has(hash)) {
3794        return;
3795      }
3796      if (documentContainsStyleHash4(targetDocument, hash)) {
3797        injectedStyles.add(hash);
3798        return;
3799      }
3800      const style = targetDocument.createElement("style");
3801      style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash);
3802      style.appendChild(targetDocument.createTextNode(css));
3803      targetDocument.head.appendChild(style);
3804      injectedStyles.add(hash);
3805    }
3806    function registerDocument4(targetDocument) {
3807      const runtime = getRuntime4();
3808      runtime.documents.set(
3809        targetDocument,
3810        (runtime.documents.get(targetDocument) ?? 0) + 1
3811      );
3812      for (const [hash, css] of runtime.styles) {
3813        injectStyle4(targetDocument, hash, css);
3814      }
3815      return () => {
3816        const count = runtime.documents.get(targetDocument);
3817        if (count === void 0) {
3818          return;
3819        }
3820        if (count <= 1) {
3821          runtime.documents.delete(targetDocument);
3822          return;
3823        }
3824        runtime.documents.set(targetDocument, count - 1);
3825      };
3826    }
3827    function registerStyle4(hash, css) {
3828      const runtime = getRuntime4();
3829      runtime.styles.set(hash, css);
3830      for (const targetDocument of runtime.documents.keys()) {
3831        injectStyle4(targetDocument, hash, css);
3832      }
3833    }
3834    if (typeof process === "undefined" || true) {
3835      registerStyle4("bb8cbb8f31", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._7313adbc8a112e90__tablist{--direction-factor:1;--direction-start:left;--direction-end:right;align-items:stretch;display:flex;overflow-inline:auto;overscroll-behavior-inline:none;position:relative;&:dir(rtl){--direction-factor:-1;--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}}}}');
3836    }
3837    var style_default4 = { "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" };
3838    var SCROLL_EPSILON = 1;
3839    var List = (0, import_element7.forwardRef)(
3840      function TabList({
3841        children,
3842        variant = "default",
3843        className,
3844        activateOnFocus,
3845        ...otherProps
3846      }, forwardedRef) {
3847        const [listEl, setListEl] = (0, import_element7.useState)(null);
3848        const [overflow, setOverflow] = (0, import_element7.useState)({
3849          first: false,
3850          last: false,
3851          isScrolling: false
3852        });
3853        (0, import_element7.useEffect)(() => {
3854          if (!listEl) {
3855            return;
3856          }
3857          const measureOverflow = () => {
3858            const { scrollWidth, clientWidth, scrollLeft } = listEl;
3859            const maxScroll = Math.max(scrollWidth - clientWidth, 0);
3860            const direction = listEl.dir || (typeof window !== "undefined" ? window.getComputedStyle(listEl).direction : "ltr");
3861            const scrollFromStart = direction === "rtl" && scrollLeft < 0 ? (
3862              // In RTL layouts, scrollLeft is typically 0 at the visual "start"
3863              // (right edge) and becomes negative toward the "end" (left edge).
3864              // Normalize value for correct first/last detection logic.
3865              -scrollLeft
3866            ) : scrollLeft;
3867            const next = {
3868              first: scrollFromStart > SCROLL_EPSILON,
3869              last: scrollFromStart < maxScroll - SCROLL_EPSILON,
3870              isScrolling: scrollWidth > clientWidth
3871            };
3872            setOverflow(
3873              (prev) => prev.first === next.first && prev.last === next.last && prev.isScrolling === next.isScrolling ? prev : next
3874            );
3875          };
3876          const resizeObserver = new ResizeObserver(measureOverflow);
3877          const observeTabs = () => {
3878            resizeObserver.disconnect();
3879            resizeObserver.observe(listEl);
3880            listEl.querySelectorAll('[role="tab"]').forEach((tab) => resizeObserver.observe(tab));
3881          };
3882          const mutationObserver = new MutationObserver(observeTabs);
3883          mutationObserver.observe(listEl, {
3884            childList: true,
3885            subtree: true
3886          });
3887          let scrollTick = false;
3888          const throttleMeasureOverflowOnScroll = () => {
3889            if (!scrollTick) {
3890              requestAnimationFrame(() => {
3891                measureOverflow();
3892                scrollTick = false;
3893              });
3894              scrollTick = true;
3895            }
3896          };
3897          listEl.addEventListener(
3898            "scroll",
3899            throttleMeasureOverflowOnScroll,
3900            { passive: true }
3901          );
3902          observeTabs();
3903          measureOverflow();
3904          return () => {
3905            listEl.removeEventListener(
3906              "scroll",
3907              throttleMeasureOverflowOnScroll
3908            );
3909            resizeObserver.disconnect();
3910            mutationObserver.disconnect();
3911          };
3912        }, [listEl]);
3913        const mergedListRef = (0, import_compose.useMergeRefs)([
3914          forwardedRef,
3915          (el) => setListEl(el)
3916        ]);
3917        return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
3918          index_parts_exports.List,
3919          {
3920            ref: mergedListRef,
3921            activateOnFocus,
3922            "data-select-on-move": activateOnFocus ? "true" : "false",
3923            className: clsx_default(
3924              style_default4.tablist,
3925              overflow.first && style_default4["is-overflowing-first"],
3926              overflow.last && style_default4["is-overflowing-last"],
3927              style_default4[`is-$variant}-variant`],
3928              className
3929            ),
3930            ...otherProps,
3931            tabIndex: otherProps.tabIndex ?? (overflow.isScrolling ? -1 : void 0),
3932            children: [
3933              children,
3934              /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(index_parts_exports.Indicator, { className: style_default4.indicator })
3935            ]
3936          }
3937        );
3938      }
3939    );
3940  
3941    // packages/ui/build-module/tabs/panel.mjs
3942    var import_element9 = __toESM(require_element(), 1);
3943  
3944    // packages/ui/build-module/tabs/context.mjs
3945    var import_element8 = __toESM(require_element(), 1);
3946    var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);
3947    var VALIDATION_ENABLED = true;
3948    var TabsValidationContext = VALIDATION_ENABLED ? (0, import_element8.createContext)(null) : null;
3949    function useRegisterTabDev() {
3950      const context = (0, import_element8.useContext)(TabsValidationContext);
3951      (0, import_element8.useEffect)(() => {
3952        if (context) {
3953          return context.registerTab();
3954        }
3955        return void 0;
3956      }, [context]);
3957    }
3958    function useRegisterTabProd() {
3959    }
3960    var useRegisterTab = VALIDATION_ENABLED ? useRegisterTabDev : useRegisterTabProd;
3961    function useRegisterPanelDev() {
3962      const context = (0, import_element8.useContext)(TabsValidationContext);
3963      (0, import_element8.useEffect)(() => {
3964        if (context) {
3965          return context.registerPanel();
3966        }
3967        return void 0;
3968      }, [context]);
3969    }
3970    function useRegisterPanelProd() {
3971    }
3972    var useRegisterPanel = VALIDATION_ENABLED ? useRegisterPanelDev : useRegisterPanelProd;
3973    function TabsValidationProviderDev({
3974      children
3975    }) {
3976      const tabCountRef = (0, import_element8.useRef)(0);
3977      const panelCountRef = (0, import_element8.useRef)(0);
3978      const scheduleValidation = useScheduleValidation(() => {
3979        const tabCount = tabCountRef.current;
3980        const panelCount = panelCountRef.current;
3981        if (tabCount !== panelCount) {
3982          throw new Error(
3983            `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.`
3984          );
3985        }
3986      });
3987      const registerTab = (0, import_element8.useCallback)(() => {
3988        tabCountRef.current += 1;
3989        scheduleValidation();
3990        return () => {
3991          tabCountRef.current -= 1;
3992          scheduleValidation();
3993        };
3994      }, [scheduleValidation]);
3995      const registerPanel = (0, import_element8.useCallback)(() => {
3996        panelCountRef.current += 1;
3997        scheduleValidation();
3998        return () => {
3999          panelCountRef.current -= 1;
4000          scheduleValidation();
4001        };
4002      }, [scheduleValidation]);
4003      const contextValue = (0, import_element8.useMemo)(
4004        () => ({
4005          registerTab,
4006          registerPanel
4007        }),
4008        [registerTab, registerPanel]
4009      );
4010      return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TabsValidationContext.Provider, { value: contextValue, children });
4011    }
4012    function TabsValidationProviderProd({
4013      children
4014    }) {
4015      return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jsx_runtime25.Fragment, { children });
4016    }
4017    var TabsValidationProvider = VALIDATION_ENABLED ? TabsValidationProviderDev : TabsValidationProviderProd;
4018  
4019    // packages/ui/build-module/tabs/panel.mjs
4020    var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
4021    var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash";
4022    function getRuntime5() {
4023      const globalScope = globalThis;
4024      if (globalScope.__wpStyleRuntime) {
4025        return globalScope.__wpStyleRuntime;
4026      }
4027      globalScope.__wpStyleRuntime = {
4028        documents: /* @__PURE__ */ new Map(),
4029        styles: /* @__PURE__ */ new Map(),
4030        injectedStyles: /* @__PURE__ */ new WeakMap()
4031      };
4032      if (typeof document !== "undefined") {
4033        registerDocument5(document);
4034      }
4035      return globalScope.__wpStyleRuntime;
4036    }
4037    function documentContainsStyleHash5(targetDocument, hash) {
4038      if (!targetDocument.head) {
4039        return false;
4040      }
4041      for (const style of targetDocument.head.querySelectorAll(
4042        `style[$STYLE_HASH_ATTRIBUTE5}]`
4043      )) {
4044        if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) {
4045          return true;
4046        }
4047      }
4048      return false;
4049    }
4050    function injectStyle5(targetDocument, hash, css) {
4051      if (!targetDocument.head) {
4052        return;
4053      }
4054      const runtime = getRuntime5();
4055      let injectedStyles = runtime.injectedStyles.get(targetDocument);
4056      if (!injectedStyles) {
4057        injectedStyles = /* @__PURE__ */ new Set();
4058        runtime.injectedStyles.set(targetDocument, injectedStyles);
4059      }
4060      if (injectedStyles.has(hash)) {
4061        return;
4062      }
4063      if (documentContainsStyleHash5(targetDocument, hash)) {
4064        injectedStyles.add(hash);
4065        return;
4066      }
4067      const style = targetDocument.createElement("style");
4068      style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash);
4069      style.appendChild(targetDocument.createTextNode(css));
4070      targetDocument.head.appendChild(style);
4071      injectedStyles.add(hash);
4072    }
4073    function registerDocument5(targetDocument) {
4074      const runtime = getRuntime5();
4075      runtime.documents.set(
4076        targetDocument,
4077        (runtime.documents.get(targetDocument) ?? 0) + 1
4078      );
4079      for (const [hash, css] of runtime.styles) {
4080        injectStyle5(targetDocument, hash, css);
4081      }
4082      return () => {
4083        const count = runtime.documents.get(targetDocument);
4084        if (count === void 0) {
4085          return;
4086        }
4087        if (count <= 1) {
4088          runtime.documents.delete(targetDocument);
4089          return;
4090        }
4091        runtime.documents.set(targetDocument, count - 1);
4092      };
4093    }
4094    function registerStyle5(hash, css) {
4095      const runtime = getRuntime5();
4096      runtime.styles.set(hash, css);
4097      for (const targetDocument of runtime.documents.keys()) {
4098        injectStyle5(targetDocument, hash, css);
4099      }
4100    }
4101    if (typeof process === "undefined" || true) {
4102      registerStyle5("af6d9984a6", "._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);&: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))}&::placeholder{color:var(--_gcd-input-placeholder-color,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)}");
4103    }
4104    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" };
4105    if (typeof process === "undefined" || true) {
4106      registerStyle5("5f8e7aa0bc", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._08e8a2e44959f892__outset-ring--focus:focus,._970d04df7376df67__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c5cb3ee4bddaa8e4__outset-ring--focus-within-visible:focus-within:has(:focus-visible),.cd83dfc2126a0846__outset-ring--focus-within:focus-within,.d0541bc9dd9dc7b6__outset-ring--focus-visible:focus-visible,.e25b2bdd7aa21721__outset-ring--focus-except-active:focus:not(:active),:focus-visible .ecadb9e080e2dfa5__outset-ring--focus-parent-visible{--_gcd-a-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));--_gcd-div-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));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));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
4107    }
4108    var focus_default2 = { "outset-ring--focus": "_08e8a2e44959f892__outset-ring--focus", "outset-ring--focus-except-active": "e25b2bdd7aa21721__outset-ring--focus-except-active", "outset-ring--focus-visible": "d0541bc9dd9dc7b6__outset-ring--focus-visible", "outset-ring--focus-within": "cd83dfc2126a0846__outset-ring--focus-within", "outset-ring--focus-within-except-active": "_970d04df7376df67__outset-ring--focus-within-except-active", "outset-ring--focus-within-visible": "c5cb3ee4bddaa8e4__outset-ring--focus-within-visible", "outset-ring--focus-parent-visible": "ecadb9e080e2dfa5__outset-ring--focus-parent-visible" };
4109    var Panel = (0, import_element9.forwardRef)(
4110      function TabPanel({ className, ...otherProps }, forwardedRef) {
4111        useRegisterPanel();
4112        return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4113          index_parts_exports.Panel,
4114          {
4115            ref: forwardedRef,
4116            className: clsx_default(
4117              global_css_defense_default2.div,
4118              focus_default2["outset-ring--focus-visible"],
4119              className
4120            ),
4121            ...otherProps
4122          }
4123        );
4124      }
4125    );
4126  
4127    // packages/ui/build-module/tabs/root.mjs
4128    var import_element10 = __toESM(require_element(), 1);
4129    var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
4130    var Root = (0, import_element10.forwardRef)(
4131      function TabsRoot3({ ...otherProps }, forwardedRef) {
4132        return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TabsValidationProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(index_parts_exports.Root, { ref: forwardedRef, ...otherProps }) });
4133      }
4134    );
4135  
4136    // packages/ui/build-module/tabs/tab.mjs
4137    var import_element11 = __toESM(require_element(), 1);
4138    var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
4139    var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash";
4140    function getRuntime6() {
4141      const globalScope = globalThis;
4142      if (globalScope.__wpStyleRuntime) {
4143        return globalScope.__wpStyleRuntime;
4144      }
4145      globalScope.__wpStyleRuntime = {
4146        documents: /* @__PURE__ */ new Map(),
4147        styles: /* @__PURE__ */ new Map(),
4148        injectedStyles: /* @__PURE__ */ new WeakMap()
4149      };
4150      if (typeof document !== "undefined") {
4151        registerDocument6(document);
4152      }
4153      return globalScope.__wpStyleRuntime;
4154    }
4155    function documentContainsStyleHash6(targetDocument, hash) {
4156      if (!targetDocument.head) {
4157        return false;
4158      }
4159      for (const style of targetDocument.head.querySelectorAll(
4160        `style[$STYLE_HASH_ATTRIBUTE6}]`
4161      )) {
4162        if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) {
4163          return true;
4164        }
4165      }
4166      return false;
4167    }
4168    function injectStyle6(targetDocument, hash, css) {
4169      if (!targetDocument.head) {
4170        return;
4171      }
4172      const runtime = getRuntime6();
4173      let injectedStyles = runtime.injectedStyles.get(targetDocument);
4174      if (!injectedStyles) {
4175        injectedStyles = /* @__PURE__ */ new Set();
4176        runtime.injectedStyles.set(targetDocument, injectedStyles);
4177      }
4178      if (injectedStyles.has(hash)) {
4179        return;
4180      }
4181      if (documentContainsStyleHash6(targetDocument, hash)) {
4182        injectedStyles.add(hash);
4183        return;
4184      }
4185      const style = targetDocument.createElement("style");
4186      style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash);
4187      style.appendChild(targetDocument.createTextNode(css));
4188      targetDocument.head.appendChild(style);
4189      injectedStyles.add(hash);
4190    }
4191    function registerDocument6(targetDocument) {
4192      const runtime = getRuntime6();
4193      runtime.documents.set(
4194        targetDocument,
4195        (runtime.documents.get(targetDocument) ?? 0) + 1
4196      );
4197      for (const [hash, css] of runtime.styles) {
4198        injectStyle6(targetDocument, hash, css);
4199      }
4200      return () => {
4201        const count = runtime.documents.get(targetDocument);
4202        if (count === void 0) {
4203          return;
4204        }
4205        if (count <= 1) {
4206          runtime.documents.delete(targetDocument);
4207          return;
4208        }
4209        runtime.documents.set(targetDocument, count - 1);
4210      };
4211    }
4212    function registerStyle6(hash, css) {
4213      const runtime = getRuntime6();
4214      runtime.styles.set(hash, css);
4215      for (const targetDocument of runtime.documents.keys()) {
4216        injectStyle6(targetDocument, hash, css);
4217      }
4218    }
4219    if (typeof process === "undefined" || true) {
4220      registerStyle6("bb8cbb8f31", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._7313adbc8a112e90__tablist{--direction-factor:1;--direction-start:left;--direction-end:right;align-items:stretch;display:flex;overflow-inline:auto;overscroll-behavior-inline:none;position:relative;&:dir(rtl){--direction-factor:-1;--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}}}}');
4221    }
4222    var style_default5 = { "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" };
4223    var Tab = (0, import_element11.forwardRef)(function Tab2({ className, children, ...otherProps }, forwardedRef) {
4224      useRegisterTab();
4225      return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
4226        index_parts_exports.Tab,
4227        {
4228          ref: forwardedRef,
4229          className: clsx_default(style_default5.tab, className),
4230          ...otherProps,
4231          children: [
4232            /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: style_default5["tab-children"], children }),
4233            /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Icon, { icon: chevron_right_default, className: style_default5["tab-chevron"] })
4234          ]
4235        }
4236      );
4237    });
4238  
4239    // packages/format-library/build-module/image/index.mjs
4240    var import_i18n4 = __toESM(require_i18n(), 1);
4241    var import_element12 = __toESM(require_element(), 1);
4242    var import_rich_text3 = __toESM(require_rich_text(), 1);
4243    var import_block_editor3 = __toESM(require_block_editor(), 1);
4244    var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
4245    var ALLOWED_MEDIA_TYPES = ["image"];
4246    var name3 = "core/image";
4247    var title3 = (0, import_i18n4.__)("Inline image");
4248    function getCurrentImageId(activeObjectAttributes) {
4249      if (!activeObjectAttributes?.className) {
4250        return void 0;
4251      }
4252      const [, id] = activeObjectAttributes.className.match(/wp-image-(\d+)/) ?? [];
4253      return id ? parseInt(id, 10) : void 0;
4254    }
4255    var image = {
4256      name: name3,
4257      title: title3,
4258      keywords: [(0, import_i18n4.__)("photo"), (0, import_i18n4.__)("media")],
4259      object: true,
4260      tagName: "img",
4261      className: null,
4262      attributes: {
4263        className: "class",
4264        style: "style",
4265        url: "src",
4266        alt: "alt"
4267      },
4268      edit: Edit
4269    };
4270    function InlineUI({ value, onChange, activeObjectAttributes, contentRef }) {
4271      const { style, alt } = activeObjectAttributes;
4272      const width = style?.replace(/\D/g, "");
4273      const [editedWidth, setEditedWidth] = (0, import_element12.useState)(width);
4274      const [editedAlt, setEditedAlt] = (0, import_element12.useState)(alt);
4275      const hasChanged = editedWidth !== width || editedAlt !== alt;
4276      const popoverAnchor = (0, import_rich_text3.useAnchor)({
4277        editableContentElement: contentRef.current,
4278        settings: image
4279      });
4280      return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4281        import_components.Popover,
4282        {
4283          focusOnMount: false,
4284          anchor: popoverAnchor,
4285          className: "block-editor-format-toolbar__image-popover",
4286          children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4287            "form",
4288            {
4289              className: "block-editor-format-toolbar__image-container-content",
4290              onSubmit: (event) => {
4291                const newReplacements = value.replacements.slice();
4292                newReplacements[value.start] = {
4293                  type: name3,
4294                  attributes: {
4295                    ...activeObjectAttributes,
4296                    style: editedWidth ? `width: $editedWidth}px;` : "",
4297                    alt: editedAlt
4298                  }
4299                };
4300                onChange({
4301                  ...value,
4302                  replacements: newReplacements
4303                });
4304                event.preventDefault();
4305              },
4306              children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Stack, { direction: "column", gap: "lg", children: [
4307                /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4308                  import_components.__experimentalNumberControl,
4309                  {
4310                    label: (0, import_i18n4.__)("Width"),
4311                    value: editedWidth,
4312                    min: 1,
4313                    onChange: (newWidth) => {
4314                      setEditedWidth(newWidth);
4315                    }
4316                  }
4317                ),
4318                /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4319                  import_components.TextareaControl,
4320                  {
4321                    label: (0, import_i18n4.__)("Alternative text"),
4322                    value: editedAlt,
4323                    onChange: (newAlt) => {
4324                      setEditedAlt(newAlt);
4325                    },
4326                    help: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
4327                      /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4328                        Link,
4329                        {
4330                          openInNewTab: true,
4331                          href: (
4332                            // translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations.
4333                            (0, import_i18n4.__)(
4334                              "https://www.w3.org/WAI/tutorials/images/decision-tree/"
4335                            )
4336                          ),
4337                          children: (0, import_i18n4.__)(
4338                            "Describe the purpose of the image."
4339                          )
4340                        }
4341                      ),
4342                      /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("br", {}),
4343                      (0, import_i18n4.__)("Leave empty if decorative.")
4344                    ] })
4345                  }
4346                ),
4347                /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Stack, { justify: "right", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4348                  import_components.Button,
4349                  {
4350                    disabled: !hasChanged,
4351                    accessibleWhenDisabled: true,
4352                    variant: "primary",
4353                    type: "submit",
4354                    size: "compact",
4355                    children: (0, import_i18n4.__)("Apply")
4356                  }
4357                ) })
4358              ] })
4359            }
4360          )
4361        }
4362      );
4363    }
4364    function Edit({
4365      value,
4366      onChange,
4367      onFocus,
4368      isObjectActive,
4369      activeObjectAttributes,
4370      contentRef
4371    }) {
4372      return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_block_editor3.MediaUploadCheck, { children: [
4373        /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4374          import_block_editor3.MediaUpload,
4375          {
4376            allowedTypes: ALLOWED_MEDIA_TYPES,
4377            value: getCurrentImageId(activeObjectAttributes),
4378            onSelect: ({ id, url, alt, width: imgWidth }) => {
4379              onChange(
4380                (0, import_rich_text3.insertObject)(value, {
4381                  type: name3,
4382                  attributes: {
4383                    className: `wp-image-$id}`,
4384                    style: `width: $Math.min(
4385                      imgWidth,
4386                      150
4387                    )}px;`,
4388                    url,
4389                    alt
4390                  }
4391                })
4392              );
4393              onFocus();
4394            },
4395            render: ({ open }) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4396              import_block_editor3.RichTextToolbarButton,
4397              {
4398                icon: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4399                  import_components.SVG,
4400                  {
4401                    xmlns: "http://www.w3.org/2000/svg",
4402                    viewBox: "0 0 24 24",
4403                    children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_components.Path, { d: "M4 18.5h16V17H4v1.5zM16 13v1.5h4V13h-4zM5.1 15h7.8c.6 0 1.1-.5 1.1-1.1V6.1c0-.6-.5-1.1-1.1-1.1H5.1C4.5 5 4 5.5 4 6.1v7.8c0 .6.5 1.1 1.1 1.1zm.4-8.5h7V10l-1-1c-.3-.3-.8-.3-1 0l-1.6 1.5-1.2-.7c-.3-.2-.6-.2-.9 0l-1.3 1V6.5zm0 6.1l1.8-1.3 1.3.8c.3.2.7.2.9-.1l1.5-1.4 1.5 1.4v1.5h-7v-.9z" })
4404                  }
4405                ),
4406                title: isObjectActive ? (0, import_i18n4.__)("Replace image") : title3,
4407                onClick: open,
4408                isActive: isObjectActive
4409              }
4410            )
4411          }
4412        ),
4413        isObjectActive && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4414          InlineUI,
4415          {
4416            value,
4417            onChange,
4418            activeObjectAttributes,
4419            contentRef
4420          }
4421        )
4422      ] });
4423    }
4424  
4425    // packages/format-library/build-module/italic/index.mjs
4426    var import_i18n5 = __toESM(require_i18n(), 1);
4427    var import_rich_text4 = __toESM(require_rich_text(), 1);
4428    var import_block_editor4 = __toESM(require_block_editor(), 1);
4429    var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
4430    var name4 = "core/italic";
4431    var title4 = (0, import_i18n5.__)("Italic");
4432    var italic = {
4433      name: name4,
4434      title: title4,
4435      tagName: "em",
4436      className: null,
4437      edit({ isActive, value, onChange, onFocus, isVisible = true }) {
4438        function onToggle() {
4439          onChange((0, import_rich_text4.toggleFormat)(value, { type: name4, title: title4 }));
4440        }
4441        function onClick() {
4442          onChange((0, import_rich_text4.toggleFormat)(value, { type: name4 }));
4443          onFocus();
4444        }
4445        return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_jsx_runtime30.Fragment, { children: [
4446          /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
4447            import_block_editor4.RichTextShortcut,
4448            {
4449              type: "primary",
4450              character: "i",
4451              onUse: onToggle
4452            }
4453          ),
4454          isVisible && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
4455            import_block_editor4.RichTextToolbarButton,
4456            {
4457              name: "italic",
4458              icon: format_italic_default,
4459              title: title4,
4460              onClick,
4461              isActive,
4462              shortcutType: "primary",
4463              shortcutCharacter: "i"
4464            }
4465          ),
4466          /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
4467            import_block_editor4.__unstableRichTextInputEvent,
4468            {
4469              inputType: "formatItalic",
4470              onInput: onToggle
4471            }
4472          )
4473        ] });
4474      }
4475    };
4476  
4477    // packages/format-library/build-module/link/index.mjs
4478    var import_i18n8 = __toESM(require_i18n(), 1);
4479    var import_element15 = __toESM(require_element(), 1);
4480    var import_rich_text6 = __toESM(require_rich_text(), 1);
4481    var import_url3 = __toESM(require_url(), 1);
4482    var import_block_editor6 = __toESM(require_block_editor(), 1);
4483    var import_html_entities = __toESM(require_html_entities(), 1);
4484    var import_a11y2 = __toESM(require_a11y(), 1);
4485  
4486    // packages/format-library/build-module/link/inline.mjs
4487    var import_element14 = __toESM(require_element(), 1);
4488    var import_i18n7 = __toESM(require_i18n(), 1);
4489    var import_a11y = __toESM(require_a11y(), 1);
4490    var import_components3 = __toESM(require_components(), 1);
4491    var import_url2 = __toESM(require_url(), 1);
4492    var import_rich_text5 = __toESM(require_rich_text(), 1);
4493    var import_block_editor5 = __toESM(require_block_editor(), 1);
4494    var import_data = __toESM(require_data(), 1);
4495  
4496    // packages/format-library/build-module/link/utils.mjs
4497    var import_url = __toESM(require_url(), 1);
4498    function isValidHref(href) {
4499      if (!href) {
4500        return false;
4501      }
4502      const trimmedHref = href.trim();
4503      if (!trimmedHref) {
4504        return false;
4505      }
4506      if (/^\S+:/.test(trimmedHref)) {
4507        const protocol = (0, import_url.getProtocol)(trimmedHref);
4508        if (!(0, import_url.isValidProtocol)(protocol)) {
4509          return false;
4510        }
4511        if (protocol.startsWith("http") && !/^https?:\/\/[^\/\s]/i.test(trimmedHref)) {
4512          return false;
4513        }
4514        const authority = (0, import_url.getAuthority)(trimmedHref);
4515        if (!(0, import_url.isValidAuthority)(authority)) {
4516          return false;
4517        }
4518        const path = (0, import_url.getPath)(trimmedHref);
4519        if (path && !(0, import_url.isValidPath)(path)) {
4520          return false;
4521        }
4522        const queryString = (0, import_url.getQueryString)(trimmedHref);
4523        if (queryString && !(0, import_url.isValidQueryString)(queryString)) {
4524          return false;
4525        }
4526        const fragment = (0, import_url.getFragment)(trimmedHref);
4527        if (fragment && !(0, import_url.isValidFragment)(fragment)) {
4528          return false;
4529        }
4530      }
4531      if (trimmedHref.startsWith("#") && !(0, import_url.isValidFragment)(trimmedHref)) {
4532        return false;
4533      }
4534      return true;
4535    }
4536    function createLinkFormat({
4537      url,
4538      type,
4539      id,
4540      opensInNewWindow,
4541      nofollow,
4542      cssClasses
4543    }) {
4544      const format = {
4545        type: "core/link",
4546        attributes: {
4547          url
4548        }
4549      };
4550      if (type) {
4551        format.attributes.type = type;
4552      }
4553      if (id) {
4554        format.attributes.id = id;
4555      }
4556      if (opensInNewWindow) {
4557        format.attributes.target = "_blank";
4558        format.attributes.rel = format.attributes.rel ? format.attributes.rel + " noopener" : "noopener";
4559      }
4560      if (nofollow) {
4561        format.attributes.rel = format.attributes.rel ? format.attributes.rel + " nofollow" : "nofollow";
4562      }
4563      const trimmedCssClasses = cssClasses?.trim();
4564      if (trimmedCssClasses?.length) {
4565        format.attributes.class = trimmedCssClasses;
4566      }
4567      return format;
4568    }
4569    function getFormatBoundary(value, format, startIndex = value.start, endIndex = value.end) {
4570      const EMPTY_BOUNDARIES = {
4571        start: void 0,
4572        end: void 0
4573      };
4574      const { formats } = value;
4575      let targetFormat;
4576      let initialIndex;
4577      if (!formats?.length) {
4578        return EMPTY_BOUNDARIES;
4579      }
4580      const newFormats = formats.slice();
4581      const formatAtStart = newFormats[startIndex]?.find(
4582        ({ type }) => type === format.type
4583      );
4584      const formatAtEnd = newFormats[endIndex]?.find(
4585        ({ type }) => type === format.type
4586      );
4587      const formatAtEndMinusOne = newFormats[endIndex - 1]?.find(
4588        ({ type }) => type === format.type
4589      );
4590      if (!!formatAtStart) {
4591        targetFormat = formatAtStart;
4592        initialIndex = startIndex;
4593      } else if (!!formatAtEnd) {
4594        targetFormat = formatAtEnd;
4595        initialIndex = endIndex;
4596      } else if (!!formatAtEndMinusOne) {
4597        targetFormat = formatAtEndMinusOne;
4598        initialIndex = endIndex - 1;
4599      } else {
4600        return EMPTY_BOUNDARIES;
4601      }
4602      const index = newFormats[initialIndex].indexOf(targetFormat);
4603      const walkingArgs = [newFormats, initialIndex, targetFormat, index];
4604      startIndex = walkToStart(...walkingArgs);
4605      endIndex = walkToEnd(...walkingArgs);
4606      startIndex = startIndex < 0 ? 0 : startIndex;
4607      return {
4608        start: startIndex,
4609        end: endIndex + 1
4610      };
4611    }
4612    function walkToBoundary(formats, initialIndex, targetFormatRef, formatIndex, direction) {
4613      let index = initialIndex;
4614      const directions = {
4615        forwards: 1,
4616        backwards: -1
4617      };
4618      const directionIncrement = directions[direction] || 1;
4619      const inverseDirectionIncrement = directionIncrement * -1;
4620      while (formats[index] && formats[index][formatIndex] === targetFormatRef) {
4621        index = index + directionIncrement;
4622      }
4623      index = index + inverseDirectionIncrement;
4624      return index;
4625    }
4626    var partialRight = (fn, ...partialArgs) => (...args) => fn(...args, ...partialArgs);
4627    var walkToStart = partialRight(walkToBoundary, "backwards");
4628    var walkToEnd = partialRight(walkToBoundary, "forwards");
4629  
4630    // packages/format-library/build-module/link/css-classes-setting.mjs
4631    var import_element13 = __toESM(require_element(), 1);
4632    var import_compose2 = __toESM(require_compose(), 1);
4633    var import_i18n6 = __toESM(require_i18n(), 1);
4634    var import_components2 = __toESM(require_components(), 1);
4635    var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1);
4636    var CSSClassesSettingComponent = ({ setting, value, onChange }) => {
4637      const hasValue = value ? value?.cssClasses?.length > 0 : false;
4638      const [isSettingActive, setIsSettingActive] = (0, import_element13.useState)(hasValue);
4639      const instanceId = (0, import_compose2.useInstanceId)(CSSClassesSettingComponent);
4640      const controlledRegionId = `css-classes-setting-$instanceId}`;
4641      const handleSettingChange = (newValue) => {
4642        const sanitizedValue = typeof newValue === "string" ? newValue.replace(/,/g, " ").replace(/\s+/g, " ").trim() : newValue;
4643        onChange({
4644          ...value,
4645          [setting.id]: sanitizedValue
4646        });
4647      };
4648      const handleCheckboxChange = () => {
4649        if (isSettingActive) {
4650          if (hasValue) {
4651            handleSettingChange("");
4652          }
4653          setIsSettingActive(false);
4654        } else {
4655          setIsSettingActive(true);
4656        }
4657      };
4658      return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("fieldset", { children: [
4659        /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("legend", {}), children: setting.title }),
4660        /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Stack, { direction: "column", gap: "md", children: [
4661          /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4662            import_components2.CheckboxControl,
4663            {
4664              label: setting.title,
4665              onChange: handleCheckboxChange,
4666              checked: isSettingActive || hasValue,
4667              "aria-expanded": isSettingActive,
4668              "aria-controls": isSettingActive ? controlledRegionId : void 0
4669            }
4670          ),
4671          isSettingActive && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { id: controlledRegionId, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4672            import_components2.__experimentalInputControl,
4673            {
4674              label: (0, import_i18n6.__)("CSS classes"),
4675              value: value?.cssClasses,
4676              onChange: handleSettingChange,
4677              help: (0, import_i18n6.__)(
4678                "Separate multiple classes with spaces."
4679              ),
4680              __unstableInputWidth: "100%"
4681            }
4682          ) })
4683        ] })
4684      ] });
4685    };
4686    var css_classes_setting_default = CSSClassesSettingComponent;
4687  
4688    // packages/format-library/build-module/link/inline.mjs
4689    var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);
4690    var LINK_SETTINGS = [
4691      ...import_block_editor5.LinkControl.DEFAULT_LINK_SETTINGS,
4692      {
4693        id: "nofollow",
4694        title: (0, import_i18n7.__)("Mark as nofollow")
4695      },
4696      {
4697        id: "cssClasses",
4698        title: (0, import_i18n7.__)("Additional CSS class(es)"),
4699        render: (setting, value, onChange) => {
4700          return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4701            css_classes_setting_default,
4702            {
4703              setting,
4704              value,
4705              onChange
4706            }
4707          );
4708        }
4709      }
4710    ];
4711    function InlineLinkUI({
4712      isActive,
4713      activeAttributes,
4714      value,
4715      onChange,
4716      onFocusOutside,
4717      stopAddingLink,
4718      contentRef,
4719      focusOnMount
4720    }) {
4721      const richLinkTextValue = getRichTextValueFromSelection(value, isActive);
4722      const richTextText = richLinkTextValue.text;
4723      const { selectionChange } = (0, import_data.useDispatch)(import_block_editor5.store);
4724      const { createPageEntity, userCanCreatePages, selectionStart } = (0, import_data.useSelect)(
4725        (select) => {
4726          const { getSettings, getSelectionStart } = select(import_block_editor5.store);
4727          const _settings = getSettings();
4728          return {
4729            createPageEntity: _settings.__experimentalCreatePageEntity,
4730            userCanCreatePages: _settings.__experimentalUserCanCreatePages,
4731            selectionStart: getSelectionStart()
4732          };
4733        },
4734        []
4735      );
4736      const linkValue = (0, import_element14.useMemo)(
4737        () => ({
4738          url: activeAttributes.url,
4739          type: activeAttributes.type,
4740          id: activeAttributes.id,
4741          opensInNewTab: activeAttributes.target === "_blank",
4742          nofollow: activeAttributes.rel?.includes("nofollow"),
4743          title: richTextText,
4744          cssClasses: activeAttributes.class
4745        }),
4746        [
4747          activeAttributes.class,
4748          activeAttributes.id,
4749          activeAttributes.rel,
4750          activeAttributes.target,
4751          activeAttributes.type,
4752          activeAttributes.url,
4753          richTextText
4754        ]
4755      );
4756      function removeLink() {
4757        const newValue = (0, import_rich_text5.removeFormat)(value, "core/link");
4758        onChange(newValue);
4759        stopAddingLink();
4760        (0, import_a11y.speak)((0, import_i18n7.__)("Link removed."), "assertive");
4761      }
4762      function onChangeLink(nextValue) {
4763        const hasLink = linkValue?.url;
4764        const isNewLink = !hasLink;
4765        nextValue = {
4766          ...linkValue,
4767          ...nextValue
4768        };
4769        const newUrl = (0, import_url2.prependHTTPS)(nextValue.url);
4770        const linkFormat = createLinkFormat({
4771          url: newUrl,
4772          type: nextValue.type,
4773          id: nextValue.id !== void 0 && nextValue.id !== null ? String(nextValue.id) : void 0,
4774          opensInNewWindow: nextValue.opensInNewTab,
4775          nofollow: nextValue.nofollow,
4776          cssClasses: nextValue.cssClasses
4777        });
4778        const newText = nextValue.title || newUrl;
4779        let newValue;
4780        if ((0, import_rich_text5.isCollapsed)(value) && !isActive) {
4781          const inserted = (0, import_rich_text5.insert)(value, newText);
4782          newValue = (0, import_rich_text5.applyFormat)(
4783            inserted,
4784            linkFormat,
4785            value.start,
4786            value.start + newText.length
4787          );
4788          onChange(newValue);
4789          stopAddingLink();
4790          selectionChange({
4791            clientId: selectionStart.clientId,
4792            identifier: selectionStart.attributeKey,
4793            start: value.start + newText.length + 1
4794          });
4795          return;
4796        } else if (newText === richTextText) {
4797          const boundary = getFormatBoundary(value, {
4798            type: "core/link"
4799          });
4800          newValue = (0, import_rich_text5.applyFormat)(
4801            value,
4802            linkFormat,
4803            boundary.start,
4804            boundary.end
4805          );
4806        } else {
4807          newValue = (0, import_rich_text5.create)({ text: newText });
4808          newValue = (0, import_rich_text5.applyFormat)(newValue, linkFormat, 0, newText.length);
4809          const boundary = getFormatBoundary(value, {
4810            type: "core/link"
4811          });
4812          const [valBefore, valAfter] = (0, import_rich_text5.split)(
4813            value,
4814            boundary.start,
4815            boundary.start
4816          );
4817          const newValAfter = (0, import_rich_text5.replace)(valAfter, richTextText, newValue);
4818          newValue = (0, import_rich_text5.concat)(valBefore, newValAfter);
4819        }
4820        onChange(newValue);
4821        if (!isNewLink) {
4822          stopAddingLink();
4823        }
4824        if (!isValidHref(newUrl)) {
4825          (0, import_a11y.speak)(
4826            (0, import_i18n7.__)(
4827              "Warning: the link has been inserted but may have errors. Please test it."
4828            ),
4829            "assertive"
4830          );
4831        } else if (isActive) {
4832          (0, import_a11y.speak)((0, import_i18n7.__)("Link edited."), "assertive");
4833        } else {
4834          (0, import_a11y.speak)((0, import_i18n7.__)("Link inserted."), "assertive");
4835        }
4836      }
4837      const popoverAnchor = (0, import_rich_text5.useAnchor)({
4838        editableContentElement: contentRef.current,
4839        settings: {
4840          ...link,
4841          isActive
4842        }
4843      });
4844      async function handleCreate(pageTitle) {
4845        const page = await createPageEntity({
4846          title: pageTitle,
4847          status: "draft"
4848        });
4849        return {
4850          id: page.id,
4851          type: page.type,
4852          title: page.title.rendered,
4853          url: page.link,
4854          kind: "post-type"
4855        };
4856      }
4857      function createButtonText(searchTerm) {
4858        return (0, import_element14.createInterpolateElement)(
4859          (0, import_i18n7.sprintf)(
4860            /* translators: %s: search term. */
4861            (0, import_i18n7.__)("Create page: <mark>%s</mark>"),
4862            searchTerm
4863          ),
4864          { mark: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("mark", {}) }
4865        );
4866      }
4867      return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4868        import_components3.Popover,
4869        {
4870          anchor: popoverAnchor,
4871          animate: false,
4872          onClose: stopAddingLink,
4873          onFocusOutside,
4874          placement: "bottom",
4875          offset: 8,
4876          shift: true,
4877          focusOnMount,
4878          constrainTabbing: true,
4879          children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4880            import_block_editor5.LinkControl,
4881            {
4882              value: linkValue,
4883              onChange: onChangeLink,
4884              onRemove: removeLink,
4885              hasRichPreviews: true,
4886              createSuggestion: createPageEntity && handleCreate,
4887              withCreateSuggestion: userCanCreatePages,
4888              createSuggestionButtonText: createButtonText,
4889              hasTextControl: true,
4890              settings: LINK_SETTINGS,
4891              showInitialSuggestions: true,
4892              suggestionsQuery: {
4893                // always show Pages as initial suggestions
4894                initialSuggestionsSearchOptions: {
4895                  type: "post",
4896                  subtype: "page",
4897                  perPage: 20
4898                }
4899              }
4900            }
4901          )
4902        }
4903      );
4904    }
4905    function getRichTextValueFromSelection(value, isActive) {
4906      let textStart = value.start;
4907      let textEnd = value.end;
4908      if (isActive) {
4909        const boundary = getFormatBoundary(value, {
4910          type: "core/link"
4911        });
4912        textStart = boundary.start;
4913        textEnd = boundary.end;
4914      }
4915      return (0, import_rich_text5.slice)(value, textStart, textEnd);
4916    }
4917    var inline_default = InlineLinkUI;
4918  
4919    // packages/format-library/build-module/link/index.mjs
4920    var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1);
4921    var name5 = "core/link";
4922    var title5 = (0, import_i18n8.__)("Link");
4923    function Edit2({
4924      isActive,
4925      activeAttributes,
4926      value,
4927      onChange,
4928      onFocus,
4929      contentRef,
4930      isVisible = true
4931    }) {
4932      const [addingLink, setAddingLink] = (0, import_element15.useState)(false);
4933      const [openedBy, setOpenedBy] = (0, import_element15.useState)(null);
4934      (0, import_element15.useEffect)(() => {
4935        if (!isActive) {
4936          setAddingLink(false);
4937        }
4938      }, [isActive]);
4939      (0, import_element15.useLayoutEffect)(() => {
4940        const editableContentElement = contentRef.current;
4941        if (!editableContentElement) {
4942          return;
4943        }
4944        function handleClick(event) {
4945          const link2 = event.target.closest("[contenteditable] a");
4946          if (!link2 || // other formats (e.g. bold) may be nested within the link.
4947          !isActive) {
4948            return;
4949          }
4950          setAddingLink(true);
4951          setOpenedBy({
4952            el: link2,
4953            action: "click"
4954          });
4955        }
4956        editableContentElement.addEventListener("click", handleClick);
4957        return () => {
4958          editableContentElement.removeEventListener("click", handleClick);
4959        };
4960      }, [contentRef, isActive]);
4961      function addLink(target) {
4962        const text = (0, import_rich_text6.getTextContent)((0, import_rich_text6.slice)(value));
4963        if (!isActive && text && (0, import_url3.isURL)(text) && isValidHref(text)) {
4964          onChange(
4965            (0, import_rich_text6.applyFormat)(value, {
4966              type: name5,
4967              attributes: { url: text }
4968            })
4969          );
4970        } else if (!isActive && text && (0, import_url3.isEmail)(text)) {
4971          onChange(
4972            (0, import_rich_text6.applyFormat)(value, {
4973              type: name5,
4974              attributes: { url: `mailto:$text}` }
4975            })
4976          );
4977        } else if (!isActive && text && (0, import_url3.isPhoneNumber)(text)) {
4978          onChange(
4979            (0, import_rich_text6.applyFormat)(value, {
4980              type: name5,
4981              attributes: { url: `tel:$text.replace(/\D/g, "")}` }
4982            })
4983          );
4984        } else {
4985          if (target) {
4986            setOpenedBy({
4987              el: target,
4988              action: null
4989              // We don't need to distinguish between click or keyboard here
4990            });
4991          }
4992          setAddingLink(true);
4993        }
4994      }
4995      function stopAddingLink() {
4996        setAddingLink(false);
4997        if (openedBy?.el?.tagName === "BUTTON") {
4998          openedBy.el.focus();
4999        } else {
5000          onFocus();
5001        }
5002        setOpenedBy(null);
5003      }
5004      function onFocusOutside() {
5005        setAddingLink(false);
5006        setOpenedBy(null);
5007      }
5008      function onRemoveFormat() {
5009        onChange((0, import_rich_text6.removeFormat)(value, name5));
5010        (0, import_a11y2.speak)((0, import_i18n8.__)("Link removed."), "assertive");
5011      }
5012      const shouldAutoFocus = !(openedBy?.el?.tagName === "A" && openedBy?.action === "click");
5013      const hasSelection = !(0, import_rich_text6.isCollapsed)(value);
5014      return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
5015        hasSelection && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
5016          import_block_editor6.RichTextShortcut,
5017          {
5018            type: "primary",
5019            character: "k",
5020            onUse: addLink
5021          }
5022        ),
5023        /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
5024          import_block_editor6.RichTextShortcut,
5025          {
5026            type: "primaryShift",
5027            character: "k",
5028            onUse: onRemoveFormat
5029          }
5030        ),
5031        isVisible && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
5032          import_block_editor6.RichTextToolbarButton,
5033          {
5034            name: "link",
5035            icon: link_default,
5036            title: isActive ? (0, import_i18n8.__)("Link") : title5,
5037            onClick: (event) => {
5038              addLink(event.currentTarget);
5039            },
5040            isActive: isActive || addingLink,
5041            shortcutType: "primary",
5042            shortcutCharacter: "k",
5043            "aria-haspopup": "true",
5044            "aria-expanded": addingLink
5045          }
5046        ),
5047        isVisible && addingLink && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
5048          inline_default,
5049          {
5050            stopAddingLink,
5051            onFocusOutside,
5052            isActive,
5053            activeAttributes,
5054            value,
5055            onChange,
5056            contentRef,
5057            focusOnMount: shouldAutoFocus ? "firstElement" : false
5058          }
5059        )
5060      ] });
5061    }
5062    var link = {
5063      name: name5,
5064      title: title5,
5065      tagName: "a",
5066      className: null,
5067      attributes: {
5068        url: "href",
5069        type: "data-type",
5070        id: "data-id",
5071        _id: "id",
5072        target: "target",
5073        rel: "rel",
5074        class: "class"
5075      },
5076      __unstablePasteRule(value, { html, plainText }) {
5077        const pastedText = (html || plainText).replace(/<[^>]+>/g, "").trim();
5078        if (!(0, import_url3.isURL)(pastedText) || !/^https?:/.test(pastedText)) {
5079          return value;
5080        }
5081        window.console.log("Created link:\n\n", pastedText);
5082        const format = {
5083          type: name5,
5084          attributes: {
5085            url: (0, import_html_entities.decodeEntities)(pastedText)
5086          }
5087        };
5088        if ((0, import_rich_text6.isCollapsed)(value)) {
5089          return (0, import_rich_text6.insert)(
5090            value,
5091            (0, import_rich_text6.applyFormat)(
5092              (0, import_rich_text6.create)({ text: plainText }),
5093              format,
5094              0,
5095              plainText.length
5096            )
5097          );
5098        }
5099        return (0, import_rich_text6.applyFormat)(value, format);
5100      },
5101      edit: Edit2
5102    };
5103  
5104    // packages/format-library/build-module/strikethrough/index.mjs
5105    var import_i18n9 = __toESM(require_i18n(), 1);
5106    var import_rich_text7 = __toESM(require_rich_text(), 1);
5107    var import_block_editor7 = __toESM(require_block_editor(), 1);
5108    var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);
5109    var name6 = "core/strikethrough";
5110    var title6 = (0, import_i18n9.__)("Strikethrough");
5111    var strikethrough = {
5112      name: name6,
5113      title: title6,
5114      tagName: "s",
5115      className: null,
5116      edit({ isActive, value, onChange, onFocus }) {
5117        function onClick() {
5118          onChange((0, import_rich_text7.toggleFormat)(value, { type: name6, title: title6 }));
5119          onFocus();
5120        }
5121        return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
5122          /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
5123            import_block_editor7.RichTextShortcut,
5124            {
5125              type: "access",
5126              character: "d",
5127              onUse: onClick
5128            }
5129          ),
5130          /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
5131            import_block_editor7.RichTextToolbarButton,
5132            {
5133              icon: format_strikethrough_default,
5134              title: title6,
5135              onClick,
5136              isActive,
5137              role: "menuitemcheckbox"
5138            }
5139          )
5140        ] });
5141      }
5142    };
5143  
5144    // packages/format-library/build-module/underline/index.mjs
5145    var import_i18n10 = __toESM(require_i18n(), 1);
5146    var import_rich_text8 = __toESM(require_rich_text(), 1);
5147    var import_block_editor8 = __toESM(require_block_editor(), 1);
5148    var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1);
5149    var name7 = "core/underline";
5150    var title7 = (0, import_i18n10.__)("Underline");
5151    var underline = {
5152      name: name7,
5153      title: title7,
5154      tagName: "span",
5155      className: null,
5156      attributes: {
5157        style: "style"
5158      },
5159      edit({ value, onChange }) {
5160        const onToggle = () => {
5161          onChange(
5162            (0, import_rich_text8.toggleFormat)(value, {
5163              type: name7,
5164              attributes: {
5165                style: "text-decoration: underline;"
5166              },
5167              title: title7
5168            })
5169          );
5170        };
5171        return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
5172          /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
5173            import_block_editor8.RichTextShortcut,
5174            {
5175              type: "primary",
5176              character: "u",
5177              onUse: onToggle
5178            }
5179          ),
5180          /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
5181            import_block_editor8.__unstableRichTextInputEvent,
5182            {
5183              inputType: "formatUnderline",
5184              onInput: onToggle
5185            }
5186          )
5187        ] });
5188      }
5189    };
5190  
5191    // packages/format-library/build-module/text-color/index.mjs
5192    var import_i18n12 = __toESM(require_i18n(), 1);
5193    var import_element17 = __toESM(require_element(), 1);
5194    var import_block_editor10 = __toESM(require_block_editor(), 1);
5195    var import_rich_text10 = __toESM(require_rich_text(), 1);
5196  
5197    // packages/format-library/build-module/text-color/inline.mjs
5198    var import_element16 = __toESM(require_element(), 1);
5199    var import_data2 = __toESM(require_data(), 1);
5200    var import_rich_text9 = __toESM(require_rich_text(), 1);
5201    var import_block_editor9 = __toESM(require_block_editor(), 1);
5202    var import_components4 = __toESM(require_components(), 1);
5203    var import_i18n11 = __toESM(require_i18n(), 1);
5204    var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1);
5205    var TABS = [
5206      { name: "color", title: (0, import_i18n11.__)("Text") },
5207      { name: "backgroundColor", title: (0, import_i18n11.__)("Background") }
5208    ];
5209    function parseCSS(css = "") {
5210      return css.split(";").reduce((accumulator, rule) => {
5211        if (rule) {
5212          const [property, value] = rule.split(":");
5213          if (property === "color") {
5214            accumulator.color = value;
5215          }
5216          if (property === "background-color" && value !== transparentValue) {
5217            accumulator.backgroundColor = value;
5218          }
5219        }
5220        return accumulator;
5221      }, {});
5222    }
5223    function parseClassName(className = "", colorSettings) {
5224      return className.split(" ").reduce((accumulator, name16) => {
5225        if (name16.startsWith("has-") && name16.endsWith("-color")) {
5226          const colorSlug = name16.replace(/^has-/, "").replace(/-color$/, "");
5227          const colorObject = (0, import_block_editor9.getColorObjectByAttributeValues)(
5228            colorSettings,
5229            colorSlug
5230          );
5231          accumulator.color = colorObject.color;
5232        }
5233        return accumulator;
5234      }, {});
5235    }
5236    function getActiveColors(value, name16, colorSettings) {
5237      const activeColorFormat = (0, import_rich_text9.getActiveFormat)(value, name16);
5238      if (!activeColorFormat) {
5239        return {};
5240      }
5241      return {
5242        ...parseCSS(activeColorFormat.attributes.style),
5243        ...parseClassName(activeColorFormat.attributes.class, colorSettings)
5244      };
5245    }
5246    function setColors(value, name16, colorSettings, colors) {
5247      const { color, backgroundColor } = {
5248        ...getActiveColors(value, name16, colorSettings),
5249        ...colors
5250      };
5251      if (!color && !backgroundColor) {
5252        return (0, import_rich_text9.removeFormat)(value, name16);
5253      }
5254      const styles = [];
5255      const classNames = [];
5256      const attributes = {};
5257      if (backgroundColor) {
5258        styles.push(["background-color", backgroundColor].join(":"));
5259      } else {
5260        styles.push(["background-color", transparentValue].join(":"));
5261      }
5262      if (color) {
5263        const colorObject = (0, import_block_editor9.getColorObjectByColorValue)(colorSettings, color);
5264        if (colorObject) {
5265          classNames.push((0, import_block_editor9.getColorClassName)("color", colorObject.slug));
5266        } else {
5267          styles.push(["color", color].join(":"));
5268        }
5269      }
5270      if (styles.length) {
5271        attributes.style = styles.join(";");
5272      }
5273      if (classNames.length) {
5274        attributes.class = classNames.join(" ");
5275      }
5276      return (0, import_rich_text9.applyFormat)(value, { type: name16, attributes });
5277    }
5278    function ColorPicker({ name: name16, property, value, onChange }) {
5279      const colors = (0, import_data2.useSelect)((select) => {
5280        const { getSettings } = select(import_block_editor9.store);
5281        return getSettings().colors ?? [];
5282      }, []);
5283      const activeColors = (0, import_element16.useMemo)(
5284        () => getActiveColors(value, name16, colors),
5285        [name16, value, colors]
5286      );
5287      return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
5288        import_block_editor9.ColorPalette,
5289        {
5290          value: activeColors[property],
5291          onChange: (color) => {
5292            onChange(
5293              setColors(value, name16, colors, { [property]: color })
5294            );
5295          },
5296          enableAlpha: true,
5297          __experimentalIsRenderedInSidebar: true
5298        }
5299      );
5300    }
5301    function InlineColorUI({
5302      name: name16,
5303      value,
5304      onChange,
5305      onClose,
5306      contentRef,
5307      isActive
5308    }) {
5309      const popoverAnchor = (0, import_rich_text9.useAnchor)({
5310        editableContentElement: contentRef.current,
5311        settings: { ...textColor, isActive }
5312      });
5313      return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
5314        import_components4.Popover,
5315        {
5316          onClose,
5317          className: "format-library__inline-color-popover",
5318          anchor: popoverAnchor,
5319          children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(tabs_exports.Root, { defaultValue: TABS[0].name, children: [
5320            /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(tabs_exports.List, { children: TABS.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(tabs_exports.Tab, { value: tab.name, children: tab.title }, tab.name)) }),
5321            TABS.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
5322              tabs_exports.Panel,
5323              {
5324                value: tab.name,
5325                tabIndex: -1,
5326                children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
5327                  ColorPicker,
5328                  {
5329                    name: name16,
5330                    property: tab.name,
5331                    value,
5332                    onChange
5333                  }
5334                )
5335              },
5336              tab.name
5337            ))
5338          ] })
5339        }
5340      );
5341    }
5342  
5343    // packages/format-library/build-module/text-color/index.mjs
5344    var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1);
5345    var transparentValue = "rgba(0, 0, 0, 0)";
5346    var name8 = "core/text-color";
5347    var title8 = (0, import_i18n12.__)("Highlight");
5348    var EMPTY_ARRAY3 = [];
5349    function getComputedStyleProperty(element, property) {
5350      const { ownerDocument: ownerDocument2 } = element;
5351      const { defaultView } = ownerDocument2;
5352      const style = defaultView.getComputedStyle(element);
5353      const value = style.getPropertyValue(property);
5354      if (property === "background-color" && value === transparentValue && element.parentElement) {
5355        return getComputedStyleProperty(element.parentElement, property);
5356      }
5357      return value;
5358    }
5359    function fillComputedColors(element, { color, backgroundColor }) {
5360      if (!color && !backgroundColor) {
5361        return;
5362      }
5363      return {
5364        color: color || getComputedStyleProperty(element, "color"),
5365        backgroundColor: backgroundColor === transparentValue ? getComputedStyleProperty(element, "background-color") : backgroundColor
5366      };
5367    }
5368    function TextColorEdit({
5369      value,
5370      onChange,
5371      isActive,
5372      activeAttributes,
5373      contentRef
5374    }) {
5375      const [allowCustomControl, colors = EMPTY_ARRAY3] = (0, import_block_editor10.useSettings)(
5376        "color.custom",
5377        "color.palette"
5378      );
5379      const [isAddingColor, setIsAddingColor] = (0, import_element17.useState)(false);
5380      const colorIndicatorStyle = (0, import_element17.useMemo)(
5381        () => fillComputedColors(
5382          contentRef.current,
5383          getActiveColors(value, name8, colors)
5384        ),
5385        [contentRef, value, colors]
5386      );
5387      const hasColorsToChoose = !!colors.length || allowCustomControl;
5388      if (!hasColorsToChoose && !isActive) {
5389        return null;
5390      }
5391      return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
5392        /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
5393          import_block_editor10.RichTextToolbarButton,
5394          {
5395            className: "format-library-text-color-button",
5396            isActive,
5397            icon: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
5398              icon_default,
5399              {
5400                icon: Object.keys(activeAttributes).length ? text_color_default : color_default,
5401                style: colorIndicatorStyle
5402              }
5403            ),
5404            title: title8,
5405            onClick: hasColorsToChoose ? () => setIsAddingColor(true) : () => onChange((0, import_rich_text10.removeFormat)(value, name8)),
5406            role: "menuitemcheckbox"
5407          }
5408        ),
5409        isAddingColor && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
5410          InlineColorUI,
5411          {
5412            name: name8,
5413            onClose: () => setIsAddingColor(false),
5414            activeAttributes,
5415            value,
5416            onChange,
5417            contentRef,
5418            isActive
5419          }
5420        )
5421      ] });
5422    }
5423    var textColor = {
5424      name: name8,
5425      title: title8,
5426      tagName: "mark",
5427      className: "has-inline-color",
5428      attributes: {
5429        style: "style",
5430        class: "class"
5431      },
5432      edit: TextColorEdit
5433    };
5434  
5435    // packages/format-library/build-module/subscript/index.mjs
5436    var import_i18n13 = __toESM(require_i18n(), 1);
5437    var import_rich_text11 = __toESM(require_rich_text(), 1);
5438    var import_block_editor11 = __toESM(require_block_editor(), 1);
5439    var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1);
5440    var name9 = "core/subscript";
5441    var title9 = (0, import_i18n13.__)("Subscript");
5442    var subscript = {
5443      name: name9,
5444      title: title9,
5445      tagName: "sub",
5446      className: null,
5447      edit({ isActive, value, onChange, onFocus }) {
5448        function onToggle() {
5449          onChange((0, import_rich_text11.toggleFormat)(value, { type: name9, title: title9 }));
5450        }
5451        function onClick() {
5452          onToggle();
5453          onFocus();
5454        }
5455        return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5456          import_block_editor11.RichTextToolbarButton,
5457          {
5458            icon: subscript_default,
5459            title: title9,
5460            onClick,
5461            isActive,
5462            role: "menuitemcheckbox"
5463          }
5464        );
5465      }
5466    };
5467  
5468    // packages/format-library/build-module/superscript/index.mjs
5469    var import_i18n14 = __toESM(require_i18n(), 1);
5470    var import_rich_text12 = __toESM(require_rich_text(), 1);
5471    var import_block_editor12 = __toESM(require_block_editor(), 1);
5472    var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1);
5473    var name10 = "core/superscript";
5474    var title10 = (0, import_i18n14.__)("Superscript");
5475    var superscript = {
5476      name: name10,
5477      title: title10,
5478      tagName: "sup",
5479      className: null,
5480      edit({ isActive, value, onChange, onFocus }) {
5481        function onToggle() {
5482          onChange((0, import_rich_text12.toggleFormat)(value, { type: name10, title: title10 }));
5483        }
5484        function onClick() {
5485          onToggle();
5486          onFocus();
5487        }
5488        return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5489          import_block_editor12.RichTextToolbarButton,
5490          {
5491            icon: superscript_default,
5492            title: title10,
5493            onClick,
5494            isActive,
5495            role: "menuitemcheckbox"
5496          }
5497        );
5498      }
5499    };
5500  
5501    // packages/format-library/build-module/keyboard/index.mjs
5502    var import_i18n15 = __toESM(require_i18n(), 1);
5503    var import_rich_text13 = __toESM(require_rich_text(), 1);
5504    var import_block_editor13 = __toESM(require_block_editor(), 1);
5505    var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1);
5506    var name11 = "core/keyboard";
5507    var title11 = (0, import_i18n15.__)("Keyboard input");
5508    var keyboard2 = {
5509      name: name11,
5510      title: title11,
5511      tagName: "kbd",
5512      className: null,
5513      edit({ isActive, value, onChange, onFocus }) {
5514        function onToggle() {
5515          onChange((0, import_rich_text13.toggleFormat)(value, { type: name11, title: title11 }));
5516        }
5517        function onClick() {
5518          onToggle();
5519          onFocus();
5520        }
5521        return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
5522          import_block_editor13.RichTextToolbarButton,
5523          {
5524            icon: button_default,
5525            title: title11,
5526            onClick,
5527            isActive,
5528            role: "menuitemcheckbox"
5529          }
5530        );
5531      }
5532    };
5533  
5534    // packages/format-library/build-module/unknown/index.mjs
5535    var import_i18n16 = __toESM(require_i18n(), 1);
5536    var import_rich_text14 = __toESM(require_rich_text(), 1);
5537    var import_block_editor14 = __toESM(require_block_editor(), 1);
5538    var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1);
5539    var name12 = "core/unknown";
5540    var title12 = (0, import_i18n16.__)("Clear Unknown Formatting");
5541    function selectionContainsUnknownFormats(value) {
5542      if ((0, import_rich_text14.isCollapsed)(value)) {
5543        return false;
5544      }
5545      const selectedValue = (0, import_rich_text14.slice)(value);
5546      return selectedValue.formats.some((formats) => {
5547        return formats.some((format) => format.type === name12);
5548      });
5549    }
5550    var unknown = {
5551      name: name12,
5552      title: title12,
5553      tagName: "*",
5554      className: null,
5555      edit({ isActive, value, onChange, onFocus }) {
5556        if (!isActive && !selectionContainsUnknownFormats(value)) {
5557          return null;
5558        }
5559        function onClick() {
5560          onChange((0, import_rich_text14.removeFormat)(value, name12));
5561          onFocus();
5562        }
5563        return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
5564          import_block_editor14.RichTextToolbarButton,
5565          {
5566            name: "unknown",
5567            icon: help_default,
5568            title: title12,
5569            onClick,
5570            isActive: true
5571          }
5572        );
5573      }
5574    };
5575  
5576    // packages/format-library/build-module/language/index.mjs
5577    var import_i18n17 = __toESM(require_i18n(), 1);
5578    var import_block_editor15 = __toESM(require_block_editor(), 1);
5579    var import_components5 = __toESM(require_components(), 1);
5580    var import_element18 = __toESM(require_element(), 1);
5581    var import_rich_text15 = __toESM(require_rich_text(), 1);
5582    var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1);
5583    var name13 = "core/language";
5584    var title13 = (0, import_i18n17.__)("Language");
5585    var language = {
5586      name: name13,
5587      title: title13,
5588      tagName: "bdo",
5589      className: null,
5590      attributes: {
5591        lang: "lang",
5592        dir: "dir"
5593      },
5594      edit: Edit3
5595    };
5596    function Edit3({ isActive, value, onChange, contentRef }) {
5597      const [isPopoverVisible, setIsPopoverVisible] = (0, import_element18.useState)(false);
5598      const togglePopover = () => {
5599        setIsPopoverVisible((state) => !state);
5600      };
5601      return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
5602        /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
5603          import_block_editor15.RichTextToolbarButton,
5604          {
5605            icon: language_default,
5606            label: title13,
5607            title: title13,
5608            onClick: () => {
5609              if (isActive) {
5610                onChange((0, import_rich_text15.removeFormat)(value, name13));
5611              } else {
5612                togglePopover();
5613              }
5614            },
5615            isActive,
5616            role: "menuitemcheckbox"
5617          }
5618        ),
5619        isPopoverVisible && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
5620          InlineLanguageUI,
5621          {
5622            value,
5623            onChange,
5624            onClose: togglePopover,
5625            contentRef
5626          }
5627        )
5628      ] });
5629    }
5630    function InlineLanguageUI({ value, contentRef, onChange, onClose }) {
5631      const popoverAnchor = (0, import_rich_text15.useAnchor)({
5632        editableContentElement: contentRef.current,
5633        settings: language
5634      });
5635      const [lang, setLang] = (0, import_element18.useState)("");
5636      const [dir, setDir] = (0, import_element18.useState)("ltr");
5637      return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
5638        import_components5.Popover,
5639        {
5640          className: "block-editor-format-toolbar__language-popover",
5641          anchor: popoverAnchor,
5642          onClose,
5643          children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
5644            Stack,
5645            {
5646              render: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("form", {}),
5647              direction: "column",
5648              gap: "lg",
5649              className: "block-editor-format-toolbar__language-container-content",
5650              onSubmit: (event) => {
5651                event.preventDefault();
5652                onChange(
5653                  (0, import_rich_text15.applyFormat)(value, {
5654                    type: name13,
5655                    attributes: {
5656                      lang,
5657                      dir
5658                    }
5659                  })
5660                );
5661                onClose();
5662              },
5663              children: [
5664                /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
5665                  import_components5.TextControl,
5666                  {
5667                    label: title13,
5668                    value: lang,
5669                    onChange: (val) => setLang(val),
5670                    help: (0, import_i18n17.__)(
5671                      'A valid language attribute, like "en" or "fr".'
5672                    )
5673                  }
5674                ),
5675                /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
5676                  import_components5.SelectControl,
5677                  {
5678                    label: (0, import_i18n17.__)("Text direction"),
5679                    value: dir,
5680                    options: [
5681                      {
5682                        label: (0, import_i18n17.__)("Left to right"),
5683                        value: "ltr"
5684                      },
5685                      {
5686                        label: (0, import_i18n17.__)("Right to left"),
5687                        value: "rtl"
5688                      }
5689                    ],
5690                    onChange: (val) => setDir(val)
5691                  }
5692                ),
5693                /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Stack, { justify: "right", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
5694                  import_components5.Button,
5695                  {
5696                    __next40pxDefaultSize: true,
5697                    variant: "primary",
5698                    type: "submit",
5699                    text: (0, import_i18n17.__)("Apply")
5700                  }
5701                ) })
5702              ]
5703            }
5704          )
5705        }
5706      );
5707    }
5708  
5709    // packages/format-library/build-module/math/index.mjs
5710    var import_i18n18 = __toESM(require_i18n(), 1);
5711    var import_element19 = __toESM(require_element(), 1);
5712    var import_rich_text16 = __toESM(require_rich_text(), 1);
5713    var import_block_editor16 = __toESM(require_block_editor(), 1);
5714    var import_components6 = __toESM(require_components(), 1);
5715    var import_a11y3 = __toESM(require_a11y(), 1);
5716  
5717    // packages/format-library/build-module/lock-unlock.mjs
5718    var import_private_apis = __toESM(require_private_apis(), 1);
5719    var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
5720      "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
5721      "@wordpress/format-library"
5722    );
5723  
5724    // packages/format-library/build-module/math/index.mjs
5725    var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1);
5726    var { Badge: WCBadge } = unlock(import_components6.privateApis);
5727    var name14 = "core/math";
5728    var title14 = (0, import_i18n18.__)("Math");
5729    function InlineUI2({
5730      value,
5731      onChange,
5732      activeAttributes,
5733      contentRef,
5734      latexToMathML
5735    }) {
5736      const [latex, setLatex] = (0, import_element19.useState)(
5737        activeAttributes?.["data-latex"] || ""
5738      );
5739      const [error2, setError] = (0, import_element19.useState)(null);
5740      const popoverAnchor = (0, import_rich_text16.useAnchor)({
5741        editableContentElement: contentRef.current,
5742        settings: math
5743      });
5744      const handleLatexChange = (newLatex) => {
5745        let mathML = "";
5746        setLatex(newLatex);
5747        if (newLatex) {
5748          try {
5749            mathML = latexToMathML(newLatex, { displayMode: false });
5750            setError(null);
5751          } catch (err) {
5752            setError(err.message);
5753            (0, import_a11y3.speak)(
5754              (0, import_i18n18.sprintf)(
5755                /* translators: %s: error message returned when parsing LaTeX. */
5756                (0, import_i18n18.__)("Error parsing mathematical expression: %s"),
5757                err.message
5758              )
5759            );
5760            return;
5761          }
5762        }
5763        const newReplacements = value.replacements.slice();
5764        newReplacements[value.start] = {
5765          type: name14,
5766          attributes: {
5767            "data-latex": newLatex
5768          },
5769          innerHTML: mathML
5770        };
5771        onChange({
5772          ...value,
5773          replacements: newReplacements
5774        });
5775      };
5776      return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
5777        import_components6.Popover,
5778        {
5779          placement: "bottom-start",
5780          offset: 8,
5781          focusOnMount: false,
5782          anchor: popoverAnchor,
5783          className: "block-editor-format-toolbar__math-popover",
5784          children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { style: { minWidth: "300px", padding: "4px" }, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(Stack, { direction: "column", gap: "xs", children: [
5785            /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
5786              import_components6.TextControl,
5787              {
5788                hideLabelFromVision: true,
5789                label: (0, import_i18n18.__)("LaTeX math syntax"),
5790                value: latex,
5791                onChange: handleLatexChange,
5792                placeholder: (0, import_i18n18.__)("e.g., x^2, \\frac{a}{b}"),
5793                autoComplete: "off",
5794                className: "block-editor-format-toolbar__math-input"
5795              }
5796            ),
5797            error2 && /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_jsx_runtime43.Fragment, { children: [
5798              /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
5799                WCBadge,
5800                {
5801                  intent: "error",
5802                  className: "wp-block-math__error",
5803                  children: (0, import_i18n18.sprintf)(
5804                    /* translators: %s: error message returned when parsing LaTeX. */
5805                    (0, import_i18n18.__)("Error: %s"),
5806                    error2
5807                  )
5808                }
5809              ),
5810              /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("style", { children: ".wp-block-math__error .components-badge__content{white-space:normal}" })
5811            ] })
5812          ] }) })
5813        }
5814      );
5815    }
5816    function Edit4({
5817      value,
5818      onChange,
5819      onFocus,
5820      isObjectActive,
5821      activeObjectAttributes,
5822      contentRef
5823    }) {
5824      const [latexToMathML, setLatexToMathML] = (0, import_element19.useState)();
5825      (0, import_element19.useEffect)(() => {
5826        import("@wordpress/latex-to-mathml").then((module) => {
5827          setLatexToMathML(() => module.default);
5828        });
5829      }, []);
5830      function onClick() {
5831        let newValue;
5832        if (isObjectActive) {
5833          const latex = activeObjectAttributes?.["data-latex"] || "";
5834          newValue = (0, import_rich_text16.insert)(value, latex);
5835          newValue.start = newValue.end - latex.length;
5836        } else {
5837          const selectedText = (0, import_rich_text16.getTextContent)((0, import_rich_text16.slice)(value));
5838          let innerHTML = "";
5839          if (selectedText && latexToMathML) {
5840            try {
5841              innerHTML = latexToMathML(selectedText, {
5842                displayMode: false
5843              });
5844            } catch {
5845            }
5846          }
5847          newValue = (0, import_rich_text16.insertObject)(value, {
5848            type: name14,
5849            attributes: { "data-latex": selectedText },
5850            innerHTML
5851          });
5852          newValue.start = newValue.end - 1;
5853        }
5854        onChange(newValue);
5855        onFocus();
5856      }
5857      return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_jsx_runtime43.Fragment, { children: [
5858        /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
5859          import_block_editor16.RichTextToolbarButton,
5860          {
5861            icon: math_default,
5862            title: title14,
5863            onClick,
5864            isActive: isObjectActive
5865          }
5866        ),
5867        isObjectActive && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
5868          InlineUI2,
5869          {
5870            value,
5871            onChange,
5872            activeAttributes: activeObjectAttributes,
5873            contentRef,
5874            latexToMathML
5875          }
5876        )
5877      ] });
5878    }
5879    var math = {
5880      name: name14,
5881      title: title14,
5882      tagName: "math",
5883      className: null,
5884      attributes: {
5885        "data-latex": "data-latex"
5886      },
5887      contentEditable: false,
5888      edit: Edit4
5889    };
5890  
5891    // packages/format-library/build-module/non-breaking-space/index.mjs
5892    var import_i18n19 = __toESM(require_i18n(), 1);
5893    var import_rich_text17 = __toESM(require_rich_text(), 1);
5894    var import_block_editor17 = __toESM(require_block_editor(), 1);
5895    var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1);
5896    var name15 = "core/non-breaking-space";
5897    var title15 = (0, import_i18n19.__)("Non breaking space");
5898    var nonBreakingSpace = {
5899      name: name15,
5900      title: title15,
5901      tagName: "nbsp",
5902      className: null,
5903      edit({ value, onChange }) {
5904        function addNonBreakingSpace() {
5905          onChange((0, import_rich_text17.insert)(value, "\xA0"));
5906        }
5907        return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
5908          import_block_editor17.RichTextShortcut,
5909          {
5910            type: "primaryShift",
5911            character: " ",
5912            onUse: addNonBreakingSpace
5913          }
5914        );
5915      }
5916    };
5917  
5918    // packages/format-library/build-module/default-formats.mjs
5919    var default_formats_default = [
5920      bold,
5921      code,
5922      image,
5923      italic,
5924      link,
5925      strikethrough,
5926      underline,
5927      textColor,
5928      subscript,
5929      superscript,
5930      keyboard2,
5931      unknown,
5932      language,
5933      math,
5934      nonBreakingSpace
5935    ];
5936  
5937    // packages/format-library/build-module/index.mjs
5938    default_formats_default.forEach(
5939      ({ name: name16, ...settings }) => (0, import_rich_text18.registerFormatType)(name16, settings)
5940    );
5941  })();
5942  /*! Bundled license information:
5943  
5944  use-sync-external-store/cjs/use-sync-external-store-shim.development.js:
5945    (**
5946     * @license React
5947     * use-sync-external-store-shim.development.js
5948     *
5949     * Copyright (c) Meta Platforms, Inc. and affiliates.
5950     *
5951     * This source code is licensed under the MIT license found in the
5952     * LICENSE file in the root directory of this source tree.
5953     *)
5954  */


Generated : Sat Jul 18 08:20:16 2026 Cross-referenced by PHPXref